A social knowledge tool for researchers built on ATProto
at development 41 lines 1.3 kB view raw
1import { ApiClient } from '@/api-client/ApiClient'; 2import { createClientTokenManager } from '@/services/auth'; 3import { useMutation, useQueryClient } from '@tanstack/react-query'; 4 5export default function useAddCardToLibrary() { 6 const apiClient = new ApiClient( 7 process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000', 8 createClientTokenManager(), 9 ); 10 11 const queryClient = useQueryClient(); 12 13 const mutation = useMutation({ 14 mutationFn: ({ 15 url, 16 note, 17 collectionIds, 18 }: { 19 url: string; 20 note?: string; 21 collectionIds: string[]; 22 }) => { 23 return apiClient.addUrlToLibrary({ url, note, collectionIds }); 24 }, 25 26 onSuccess: (data, variables) => { 27 queryClient.invalidateQueries({ queryKey: ['card', data.urlCardId] }); 28 queryClient.invalidateQueries({ queryKey: ['card', data.noteCardId] }); 29 queryClient.invalidateQueries({ queryKey: ['card', variables.url] }); 30 queryClient.invalidateQueries({ queryKey: ['my cards'] }); 31 queryClient.invalidateQueries({ queryKey: ['home'] }); 32 queryClient.invalidateQueries({ queryKey: ['collections'] }); 33 34 variables.collectionIds.forEach((id) => { 35 queryClient.invalidateQueries({ queryKey: ['collection', id] }); 36 }); 37 }, 38 }); 39 40 return mutation; 41}