import type { QueryKey } from '@tanstack/react-query'; import { dashboardQueryKeys } from '../api/queries.js'; import { operationsQueryKeys } from '../features/operations/operations-queries.js'; import { settingsQueryKeys } from '../features/settings/settings-queries.js'; export const realtimeSnapshotKeys: readonly QueryKey[] = [ dashboardQueryKeys.stats, dashboardQueryKeys.timers, settingsQueryKeys.loginStatus, operationsQueryKeys.syncStatus, ['conversations'], ['media'], ['performance'], ]; export interface RealtimeQueryRepairTarget { invalidateQueries(filters: { queryKey: QueryKey; refetchType: 'none' }): Promise; refetchQueries(filters: { queryKey: QueryKey; type: 'active' }): Promise; } export async function repairRealtimeSnapshots(target: RealtimeQueryRepairTarget): Promise { await Promise.all(realtimeSnapshotKeys.map(async (queryKey) => { await target.invalidateQueries({ queryKey, refetchType: 'none' }); await target.refetchQueries({ queryKey, type: 'active' }); })); }