feat: Implement album and person sharing with user search and a dedicated share dialog.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import type { Album, AlbumPermission, Media } from "@/domain/types";
|
||||
import type { Album, AlbumPermission, Media, User } from "@/domain/types";
|
||||
import apiClient from "@/services/api-client";
|
||||
import { processMediaUrls } from "./media-service";
|
||||
|
||||
@@ -87,9 +87,28 @@ export const shareAlbum = async (
|
||||
await apiClient.post(`/albums/${albumId}/share`, payload);
|
||||
};
|
||||
|
||||
export const unshareAlbum = async (
|
||||
albumId: string,
|
||||
targetUserId: string,
|
||||
): Promise<void> => {
|
||||
await apiClient.delete(`/albums/${albumId}/share`, {
|
||||
data: { target_user_id: targetUserId },
|
||||
});
|
||||
};
|
||||
|
||||
export const setAlbumThumbnail = async (
|
||||
albumId: string,
|
||||
payload: SetAlbumThumbnailPayload,
|
||||
): Promise<void> => {
|
||||
await apiClient.put(`/albums/${albumId}/thumbnail`, payload);
|
||||
};
|
||||
|
||||
export type AlbumShare = {
|
||||
user: User;
|
||||
permission: AlbumPermission;
|
||||
};
|
||||
|
||||
export const getAlbumShares = async (albumId: string): Promise<AlbumShare[]> => {
|
||||
const { data } = await apiClient.get(`/albums/${albumId}/share`);
|
||||
return data;
|
||||
};
|
||||
Reference in New Issue
Block a user