Spaces:
Sleeping
Sleeping
File size: 1,511 Bytes
68f7925 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
import { QueryClient } from '@tanstack/react-query';
// グローバルなQueryClientインスタンスを保持
let globalQueryClient: QueryClient | null = null;
export function setQueryClient(client: QueryClient) {
globalQueryClient = client;
}
export function getQueryClient(): QueryClient {
if (!globalQueryClient) {
throw new Error('QueryClient has not been initialized');
}
return globalQueryClient;
}
// Proposal関連のクエリを無効化する関数
export async function invalidateProposalQueries(): Promise<void> {
console.log('[QueryClient] Invalidating all proposal queries...');
const queryClient = getQueryClient();
// proposal関連のすべてのキャッシュを無効化
await queryClient.invalidateQueries({
predicate: (query) => {
const key = query.queryKey[0];
const isProposalQuery = ['themeByMoment', 'proposalFv', 'proposalCn', 'proposalPrediction', 'proposalIntent'].includes(key as string);
if (isProposalQuery) {
console.log(`[QueryClient] Invalidating query: ${key}`);
}
return isProposalQuery;
},
});
// キャッシュからも削除
queryClient.removeQueries({
predicate: (query) => {
const key = query.queryKey[0];
return ['themeByMoment', 'proposalFv', 'proposalCn', 'proposalPrediction', 'proposalIntent'].includes(key as string);
},
});
console.log('[QueryClient] Proposal queries invalidated and removed from cache');
}
export { globalQueryClient as queryClient };
|