27 lines
1.0 KiB
TypeScript
27 lines
1.0 KiB
TypeScript
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<unknown>;
|
|
refetchQueries(filters: { queryKey: QueryKey; type: 'active' }): Promise<unknown>;
|
|
}
|
|
|
|
export async function repairRealtimeSnapshots(target: RealtimeQueryRepairTarget): Promise<void> {
|
|
await Promise.all(realtimeSnapshotKeys.map(async (queryKey) => {
|
|
await target.invalidateQueries({ queryKey, refetchType: 'none' });
|
|
await target.refetchQueries({ queryKey, type: 'active' });
|
|
}));
|
|
}
|