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