feat: add functionality to remove media from album, including API integration and UI context menu
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
|
||||
import { addMediaToAlbum, createAlbum, getAlbum, getAlbumMedia, getAlbums, type AddMediaToAlbumPayload } from '@/services/album-service'
|
||||
import { addMediaToAlbum, createAlbum, getAlbum, getAlbumMedia, getAlbums, removeMediaFromAlbum, type AddMediaToAlbumPayload, type RemoveMediaFromAlbumPayload } from '@/services/album-service'
|
||||
|
||||
const ALBUMS_KEY = ["albums"];
|
||||
|
||||
@@ -74,4 +74,31 @@ export const useGetAlbum = (albumId: string) => {
|
||||
queryFn: () => getAlbum(albumId),
|
||||
enabled: !!albumId,
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Mutation hook to remove media from an album.
|
||||
*/
|
||||
export const useRemoveMediaFromAlbum = () => {
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
return useMutation({
|
||||
mutationFn: ({
|
||||
albumId,
|
||||
payload,
|
||||
}: {
|
||||
albumId: string;
|
||||
payload: RemoveMediaFromAlbumPayload;
|
||||
}) => removeMediaFromAlbum(albumId, payload),
|
||||
onSuccess: (_data, variables) => {
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: [ALBUMS_KEY, variables.albumId, "media"],
|
||||
});
|
||||
// TODO: Add success toast
|
||||
},
|
||||
onError: (error) => {
|
||||
console.error("Failed to remove media from album:", error);
|
||||
// TODO: Add error toast
|
||||
},
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user