34 lines
1.3 KiB
TypeScript
34 lines
1.3 KiB
TypeScript
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
|
|
import type { MediaLibraryUpdate } from '../../../../../packages/api-contracts/src/index.js';
|
|
import { deleteMediaLibraryImage, fetchMediaLibrary, updateMediaLibraryImage, uploadMediaLibraryImage } from './api.js';
|
|
|
|
export const mediaLibraryQueryKey = ['dashboard', 'media-library'] as const;
|
|
|
|
export function useMediaLibraryQuery() {
|
|
return useQuery({ queryKey: mediaLibraryQueryKey, queryFn: fetchMediaLibrary });
|
|
}
|
|
|
|
export function useUploadMediaLibraryMutation() {
|
|
const client = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: uploadMediaLibraryImage,
|
|
onSuccess: () => client.invalidateQueries({ queryKey: mediaLibraryQueryKey }),
|
|
});
|
|
}
|
|
|
|
export function useUpdateMediaLibraryMutation() {
|
|
const client = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: ({ id, update }: { id: string; update: MediaLibraryUpdate }) => updateMediaLibraryImage(id, update),
|
|
onSuccess: () => client.invalidateQueries({ queryKey: mediaLibraryQueryKey }),
|
|
});
|
|
}
|
|
|
|
export function useDeleteMediaLibraryMutation() {
|
|
const client = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: deleteMediaLibraryImage,
|
|
onSuccess: () => client.invalidateQueries({ queryKey: mediaLibraryQueryKey }),
|
|
});
|
|
}
|