import type { QueuedUserInfo, UserInfoQueue, WatchPayload, } from './native-module'; import { NativeModule } from './native-module'; export function transferCurrentComplicationUserInfo< UserInfo extends WatchPayload = WatchPayload >(info: UserInfo) { NativeModule.transferCurrentComplicationUserInfo(info as unknown as Object); } export function transferUserInfo( info: UserInfo ) { NativeModule.transferUserInfo(info as unknown as Object); } function processUserInfoQueue( queue: UserInfoQueue ) { return Object.entries(queue) .map(([id, userInfo]) => ({ id, userInfo, timestamp: parseInt(id, 10), })) .sort((a, b) => a.timestamp - b.timestamp) as QueuedUserInfo[]; } /** * @private */ export async function _getMissedUserInfo< UserInfo extends WatchPayload = WatchPayload >(): Promise { const userInfoCache = (await NativeModule.getQueuedUserInfo()) as unknown as UserInfoQueue; const items = processUserInfoQueue(userInfoCache); return items.map((q) => q.userInfo); }