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
+49
View File
@@ -0,0 +1,49 @@
import {
PrivateRoomMomentsResponse,
PrivateRoomUnlockResponse,
UnlockPrivateRoomMomentRequest,
} from "@/data/dto/private-room";
import { ApiPath } from "./api_path";
import { httpClient } from "./http_client";
import { type ApiEnvelope, unwrap } from "./response_helper";
export interface GetPrivateRoomMomentsInput {
character?: string;
limit?: number;
cursor?: string | null;
}
export class PrivateRoomApi {
async getMoments(
input: GetPrivateRoomMomentsInput = {},
): Promise<PrivateRoomMomentsResponse> {
const env = await httpClient<ApiEnvelope<unknown>>(
ApiPath.privateRoomMoments,
{
query: {
character: input.character ?? "elio",
limit: input.limit ?? 20,
...(input.cursor ? { cursor: input.cursor } : {}),
},
},
);
return PrivateRoomMomentsResponse.fromJson(unwrap(env));
}
async unlockMoment(
momentId: string,
body: UnlockPrivateRoomMomentRequest,
): Promise<PrivateRoomUnlockResponse> {
const env = await httpClient<ApiEnvelope<unknown>>(
ApiPath.privateRoomMomentUnlock(momentId),
{
method: "POST",
body: body.toJson(),
},
);
return PrivateRoomUnlockResponse.fromJson(unwrap(env));
}
}
export const privateRoomApi = new PrivateRoomApi();