A social knowledge tool for researchers built on ATProto
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}