Files
Genarrative/src/services/big-fish-works/bigFishWorksClient.ts
T
2026-04-28 11:11:36 +08:00

70 lines
1.7 KiB
TypeScript

import type { BigFishWorksResponse } from '../../../packages/shared/src/contracts/bigFishWorkSummary';
import { type ApiRetryOptions, requestJson } from '../apiClient';
const BIG_FISH_WORKS_API_BASE = '/api/runtime/big-fish/works';
const BIG_FISH_WORKS_READ_RETRY: ApiRetryOptions = {
maxRetries: 1,
baseDelayMs: 120,
maxDelayMs: 360,
};
const BIG_FISH_WORKS_WRITE_RETRY: ApiRetryOptions = {
maxRetries: 1,
baseDelayMs: 120,
maxDelayMs: 360,
retryUnsafeMethods: true,
};
/**
* 读取当前用户的大鱼吃小鱼创作作品列表。
*/
export async function listBigFishWorks() {
return requestJson<BigFishWorksResponse>(
BIG_FISH_WORKS_API_BASE,
{
method: 'GET',
},
'读取大鱼吃小鱼作品列表失败',
{
retry: BIG_FISH_WORKS_READ_RETRY,
},
);
}
/**
* 删除当前用户的大鱼吃小鱼作品,并返回删除后的作品列表。
*/
export async function deleteBigFishWork(sessionId: string) {
return requestJson<BigFishWorksResponse>(
`${BIG_FISH_WORKS_API_BASE}/${encodeURIComponent(sessionId)}`,
{
method: 'DELETE',
},
'删除大鱼吃小鱼作品失败',
{
retry: BIG_FISH_WORKS_WRITE_RETRY,
},
);
}
/**
* 记录已发布大鱼吃小鱼作品的一次正式进入。
*/
export async function recordBigFishWorkPlay(sessionId: string) {
return requestJson<BigFishWorksResponse>(
`${BIG_FISH_WORKS_API_BASE}/${encodeURIComponent(sessionId)}/play`,
{
method: 'POST',
},
'记录大鱼吃小鱼游玩次数失败',
{
retry: BIG_FISH_WORKS_WRITE_RETRY,
},
);
}
export const bigFishWorksClient = {
delete: deleteBigFishWork,
list: listBigFishWorks,
recordPlay: recordBigFishWorkPlay,
};