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 }), }); }