1234567891011121314const ACTIVE_TOKEN_KEY = "peach_active_pairing_token";15const RECENT_PAIRING_KEY = "peach_recent_pairing";1617export interface ActivePairingToken {18 token: string;19 expiresAt: number;20}2122export interface RecentPairing {23 deviceName: string;24 pairedAt: number;25 26 side: "showing" | "entering";27}2829export async function setActivePairingToken(value: ActivePairingToken | null): Promise<void> {30 try {31 if (value === null) {32 await chrome.storage.session.remove(ACTIVE_TOKEN_KEY);33 } else {34 await chrome.storage.session.set({ [ACTIVE_TOKEN_KEY]: value });35 }36 } catch {37 38 }39}4041export async function getActivePairingToken(): Promise<ActivePairingToken | null> {42 try {43 const result = await chrome.storage.session.get(ACTIVE_TOKEN_KEY);44 const value = (result as Record<string, ActivePairingToken | undefined>)[ACTIVE_TOKEN_KEY];45 if (!value) return null;46 if (Date.now() >= value.expiresAt) {47 await chrome.storage.session.remove(ACTIVE_TOKEN_KEY);48 return null;49 }50 return value;51 } catch {52 return null;53 }54}5556export async function setRecentPairing(value: RecentPairing): Promise<void> {57 try {58 await chrome.storage.session.set({ [RECENT_PAIRING_KEY]: value });59 } catch {60 61 }62}6364export async function consumeRecentPairing(): Promise<RecentPairing | null> {65 try {66 const result = await chrome.storage.session.get(RECENT_PAIRING_KEY);67 const value = (result as Record<string, RecentPairing | undefined>)[RECENT_PAIRING_KEY];68 if (!value) return null;69 await chrome.storage.session.remove(RECENT_PAIRING_KEY);70 return value;71 } catch {72 return null;73 }74}