feat(private-room): migrate to album APIs

This commit is contained in:
2026-07-14 12:30:22 +08:00
parent 9612a28b3c
commit 538af6d45f
48 changed files with 1529 additions and 2092 deletions
@@ -1,22 +1,21 @@
import type {
PrivateRoomMomentsResponse,
PrivateRoomUnlockResponse,
PrivateAlbumsResponse,
PrivateAlbumUnlockResponse,
} from "@/data/dto/private-room";
import type { Result } from "@/utils/result";
export interface GetPrivateRoomMomentsInput {
export interface GetPrivateAlbumsInput {
character?: string;
limit?: number;
cursor?: string | null;
}
export interface IPrivateRoomRepository {
getMoments(
input?: GetPrivateRoomMomentsInput,
): Promise<Result<PrivateRoomMomentsResponse>>;
getAlbums(
input?: GetPrivateAlbumsInput,
): Promise<Result<PrivateAlbumsResponse>>;
unlockMoment(
momentId: string,
unlockAlbum(
albumId: string,
expectedCost: number,
): Promise<Result<PrivateRoomUnlockResponse>>;
): Promise<Result<PrivateAlbumUnlockResponse>>;
}
@@ -1,16 +1,16 @@
"use client";
import {
UnlockPrivateRoomMomentRequest,
type PrivateRoomMomentsResponse,
type PrivateRoomUnlockResponse,
UnlockPrivateAlbumRequest,
type PrivateAlbumsResponse,
type PrivateAlbumUnlockResponse,
} from "@/data/dto/private-room";
import {
PrivateRoomApi,
privateRoomApi,
} from "@/data/services/api/private_room_api";
import type {
GetPrivateRoomMomentsInput,
GetPrivateAlbumsInput,
IPrivateRoomRepository,
} from "@/data/repositories/interfaces";
import { Result } from "@/utils/result";
@@ -20,20 +20,20 @@ import { createLazySingleton } from "./lazy_singleton";
export class PrivateRoomRepository implements IPrivateRoomRepository {
constructor(private readonly api: PrivateRoomApi) {}
getMoments(
input: GetPrivateRoomMomentsInput = {},
): Promise<Result<PrivateRoomMomentsResponse>> {
return Result.wrap(() => this.api.getMoments(input));
getAlbums(
input: GetPrivateAlbumsInput = {},
): Promise<Result<PrivateAlbumsResponse>> {
return Result.wrap(() => this.api.getAlbums(input));
}
unlockMoment(
momentId: string,
unlockAlbum(
albumId: string,
expectedCost: number,
): Promise<Result<PrivateRoomUnlockResponse>> {
): Promise<Result<PrivateAlbumUnlockResponse>> {
return Result.wrap(() =>
this.api.unlockMoment(
momentId,
UnlockPrivateRoomMomentRequest.from({ expectedCost }),
this.api.unlockAlbum(
albumId,
UnlockPrivateAlbumRequest.from({ expectedCost }),
),
);
}