← Public packages
@danj/audible-auth
Locked Audible credential gateway: Connect, token refresh, and narrow Audible calls for other Kody packages.
src/disconnect.ts
28 lines · 1.2 KB · TypeScriptimport { ACCESS_TOKEN_SECRET, REFRESH_TOKEN_SECRET } from './config.ts'
import { clearArchiveSigning, clearDevice, loadDevice } from './device.ts'
import { deleteSecret } from './secrets.ts'
import { deregisterDevice } from './tokens.ts'
export type DisconnectResult = {
/** False when nothing was connected. */
wasConnected: boolean
/** The virtual device is gone from the Amazon account, so its tokens no longer work. */
deviceRemoved: boolean
/** Both token secrets are deleted from Kody. */
secretsDeleted: boolean
}
/**
* Disconnect: remove the virtual device from the Amazon account, delete both
* token secrets, and forget the device. Removing the device comes first,
* because it needs the access token.
*/
export async function disconnect(): Promise<DisconnectResult> {
const device = await loadDevice()
if (!device) return { wasConnected: false, deviceRemoved: false, secretsDeleted: false }
const deviceRemoved = await deregisterDevice(device)
const deleted = await Promise.all([deleteSecret(ACCESS_TOKEN_SECRET), deleteSecret(REFRESH_TOKEN_SECRET)])
await clearDevice()
await clearArchiveSigning()
return { wasConnected: true, deviceRemoved, secretsDeleted: deleted.every(Boolean) }
}