Files
RedditBot/apps/dashboard/src/app/realtime-repair.ts
T

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' });
}));
}