This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

semble / src / webapp / features / cards / lib / mutations / useUpdateCardAssociations.tsx
2.0 kB 54 lines
1import { createSembleClient } from '@/services/apiClient'; 2import { useMutation, useQueryClient } from '@tanstack/react-query'; 3import { cardKeys } from '../cardKeys'; 4import { collectionKeys } from '@/features/collections/lib/collectionKeys'; 5import { noteKeys } from '@/features/notes/lib/noteKeys'; 6import { sembleKeys } from '@/features/semble/lib/sembleKeys'; 7import { feedKeys } from '@/features/feeds/lib/feedKeys'; 8 9export default function useUpdateCardAssociations() { 10 const client = createSembleClient(); 11 12 const queryClient = useQueryClient(); 13 14 const mutation = useMutation({ 15 mutationFn: (updatedCard: { 16 cardId: string; 17 note?: string; 18 addToCollectionIds?: string[]; 19 removeFromCollectionIds?: string[]; 20 }) => { 21 return client.updateUrlCardAssociations({ 22 cardId: updatedCard.cardId, 23 note: updatedCard.note, 24 addToCollections: updatedCard.addToCollectionIds, 25 removeFromCollections: updatedCard.removeFromCollectionIds, 26 }); 27 }, 28 29 onSuccess: (_data, variables) => { 30 queryClient.invalidateQueries({ queryKey: cardKeys.all() }); 31 queryClient.invalidateQueries({ queryKey: noteKeys.all() }); 32 queryClient.invalidateQueries({ queryKey: feedKeys.all() }); 33 queryClient.invalidateQueries({ queryKey: sembleKeys.all() }); 34 queryClient.invalidateQueries({ queryKey: collectionKeys.mine() }); 35 queryClient.invalidateQueries({ queryKey: collectionKeys.infinite() }); 36 queryClient.invalidateQueries({ queryKey: collectionKeys.all() }); 37 38 // invalidate each collection query individually 39 variables.addToCollectionIds?.forEach((id) => { 40 queryClient.invalidateQueries({ 41 queryKey: collectionKeys.collection(id), 42 }); 43 }); 44 45 variables.removeFromCollectionIds?.forEach((id) => { 46 queryClient.invalidateQueries({ 47 queryKey: collectionKeys.collection(id), 48 }); 49 }); 50 }, 51 }); 52 53 return mutation; 54}