import { 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 { 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) } }