feat: implement add media to album functionality with dialog and API integration
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import type { Album } from "@/domain/types"
|
||||
import type { Album, Media } from "@/domain/types"
|
||||
import apiClient from "@/services/api-client"
|
||||
|
||||
export type CreateAlbumPayload = {
|
||||
@@ -23,4 +23,47 @@ export const createAlbum = async (
|
||||
): Promise<Album> => {
|
||||
const { data } = await apiClient.post('/albums', payload)
|
||||
return data
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetches all media for a specific album.
|
||||
*/
|
||||
export const getAlbumMedia = async (albumId: string): Promise<Media[]> => {
|
||||
const { data } = await apiClient.get(`/albums/${albumId}/media`);
|
||||
|
||||
|
||||
const prefix = import.meta.env.VITE_PREFIX_PATH || apiClient.defaults.baseURL;
|
||||
|
||||
|
||||
const processedMedia = data.map((media: Media) => ({
|
||||
...media,
|
||||
file_url: `${prefix}${media.file_url}`,
|
||||
thumbnail_url: media.thumbnail_url
|
||||
? `${prefix}${media.thumbnail_url}`
|
||||
: null,
|
||||
}));
|
||||
|
||||
return processedMedia;
|
||||
};
|
||||
|
||||
export type AddMediaToAlbumPayload = {
|
||||
media_ids: string[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Adds a list of media IDs to a specific album.
|
||||
*/
|
||||
export const addMediaToAlbum = async (
|
||||
albumId: string,
|
||||
payload: AddMediaToAlbumPayload,
|
||||
): Promise<void> => {
|
||||
await apiClient.post(`/albums/${albumId}/media`, payload);
|
||||
};
|
||||
|
||||
/**
|
||||
* Fetches a single album by its ID.
|
||||
*/
|
||||
export const getAlbum = async (albumId: string): Promise<Album> => {
|
||||
const { data } = await apiClient.get(`/albums/${albumId}`);
|
||||
return data;
|
||||
};
|
||||
Reference in New Issue
Block a user