import { PrivateAlbumsResponse, PrivateAlbumUnlockResponse, UnlockPrivateAlbumRequest, } from "@/data/dto/private-room"; import { DEFAULT_CHARACTER_ID } from "@/data/constants/character"; import { ApiPath } from "./api_path"; import { httpClient } from "./http_client"; import { type ApiEnvelope, unwrap } from "./response_helper"; export interface GetPrivateAlbumsInput { characterId?: string; limit?: number; } export class PrivateRoomApi { async getAlbums( input: GetPrivateAlbumsInput = {}, ): Promise { const env = await httpClient>( ApiPath.privateRoomAlbums, { query: { characterId: input.characterId ?? DEFAULT_CHARACTER_ID, limit: input.limit ?? 20, }, }, ); return PrivateAlbumsResponse.fromJson(unwrap(env)); } async unlockAlbum( albumId: string, body: UnlockPrivateAlbumRequest, ): Promise { const env = await httpClient>( ApiPath.privateRoomAlbumUnlock(albumId), { method: "POST", body: body.toJson(), }, ); return PrivateAlbumUnlockResponse.fromJson(unwrap(env)); } } export const privateRoomApi = new PrivateRoomApi();