build collections
This commit is contained in:
@@ -1,6 +1,54 @@
|
||||
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
import { api, type ListParams } from '../api/client';
|
||||
|
||||
export function useCollections() {
|
||||
return useQuery({
|
||||
queryKey: ['collections'],
|
||||
queryFn: () => api.collections.list(),
|
||||
staleTime: 30_000,
|
||||
});
|
||||
}
|
||||
|
||||
export function useCreateCollection() {
|
||||
const qc = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (name: string) => api.collections.create(name),
|
||||
onSuccess: () => qc.invalidateQueries({ queryKey: ['collections'] }),
|
||||
});
|
||||
}
|
||||
|
||||
export function useRenameCollection() {
|
||||
const qc = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: ({ id, name }: { id: number; name: string }) => api.collections.rename(id, name),
|
||||
onSuccess: () => qc.invalidateQueries({ queryKey: ['collections'] }),
|
||||
});
|
||||
}
|
||||
|
||||
export function useDeleteCollection() {
|
||||
const qc = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (id: number) => api.collections.delete(id),
|
||||
onSuccess: () => {
|
||||
qc.invalidateQueries({ queryKey: ['collections'] });
|
||||
qc.invalidateQueries({ queryKey: ['memes'] });
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useMoveMeme() {
|
||||
const qc = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: ({ id, collection_id }: { id: string; collection_id: number }) =>
|
||||
api.memes.move(id, collection_id),
|
||||
onSuccess: (_, vars) => {
|
||||
qc.invalidateQueries({ queryKey: ['memes'] });
|
||||
qc.invalidateQueries({ queryKey: ['meme', vars.id] });
|
||||
qc.invalidateQueries({ queryKey: ['collections'] });
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useMemes(params: ListParams = {}) {
|
||||
return useQuery({
|
||||
queryKey: ['memes', params],
|
||||
|
||||
Reference in New Issue
Block a user