feat: add functionality to remove media from album, including API integration and UI context menu

This commit is contained in:
2025-11-16 01:47:36 +01:00
parent 07b797b82b
commit f41a3169e9
9 changed files with 169 additions and 17 deletions

View File

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