feat(private-room): connect moments feed
Docker Image / Build and Push Docker Image (push) Successful in 9m29s

This commit is contained in:
2026-07-08 16:29:08 +08:00
parent 77b496da2b
commit c46b9b4cdd
41 changed files with 3107 additions and 281 deletions
@@ -0,0 +1,45 @@
"use client";
import {
UnlockPrivateRoomMomentRequest,
type PrivateRoomMomentsResponse,
type PrivateRoomUnlockResponse,
} from "@/data/dto/private-room";
import {
PrivateRoomApi,
privateRoomApi,
} from "@/data/services/api/private_room_api";
import type {
GetPrivateRoomMomentsInput,
IPrivateRoomRepository,
} from "@/data/repositories/interfaces";
import { Result } from "@/utils/result";
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));
}
unlockMoment(
momentId: string,
expectedCost: number,
): Promise<Result<PrivateRoomUnlockResponse>> {
return Result.wrap(() =>
this.api.unlockMoment(
momentId,
UnlockPrivateRoomMomentRequest.from({ expectedCost }),
),
);
}
}
export const getPrivateRoomRepository =
createLazySingleton<IPrivateRoomRepository>(
() => new PrivateRoomRepository(privateRoomApi),
);