78 lines
2.1 KiB
TypeScript
78 lines
2.1 KiB
TypeScript
import type {
|
|
BarkBattleDraftConfig,
|
|
BarkBattleDraftCreateRequest,
|
|
BarkBattlePublishedConfig,
|
|
BarkBattleWorkPublishRequest,
|
|
} from '../../../packages/shared/src/contracts/barkBattle';
|
|
import {
|
|
type ApiRequestOptions,
|
|
type ApiRetryOptions,
|
|
requestJson,
|
|
} from '../apiClient';
|
|
|
|
const BARK_BATTLE_CREATION_API_BASE = '/api/creation/bark-battle';
|
|
|
|
const BARK_BATTLE_CREATION_WRITE_RETRY: ApiRetryOptions = {
|
|
maxRetries: 1,
|
|
baseDelayMs: 120,
|
|
maxDelayMs: 360,
|
|
retryUnsafeMethods: true,
|
|
};
|
|
|
|
export type BarkBattleCreationRequestOptions = Pick<
|
|
ApiRequestOptions,
|
|
| 'authImpact'
|
|
| 'skipRefresh'
|
|
| 'notifyAuthStateChange'
|
|
| 'clearAuthOnUnauthorized'
|
|
>;
|
|
|
|
export function createBarkBattleDraft(
|
|
payload: BarkBattleDraftCreateRequest,
|
|
options: BarkBattleCreationRequestOptions = {},
|
|
) {
|
|
return requestJson<BarkBattleDraftConfig>(
|
|
`${BARK_BATTLE_CREATION_API_BASE}/drafts`,
|
|
{
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(payload),
|
|
},
|
|
'创建汪汪声浪大作战草稿失败',
|
|
{
|
|
retry: BARK_BATTLE_CREATION_WRITE_RETRY,
|
|
authImpact: options.authImpact,
|
|
skipRefresh: options.skipRefresh,
|
|
notifyAuthStateChange: options.notifyAuthStateChange,
|
|
clearAuthOnUnauthorized: options.clearAuthOnUnauthorized,
|
|
},
|
|
);
|
|
}
|
|
|
|
export function publishBarkBattleWork(
|
|
payload: BarkBattleWorkPublishRequest,
|
|
options: BarkBattleCreationRequestOptions = {},
|
|
) {
|
|
return requestJson<BarkBattlePublishedConfig>(
|
|
`${BARK_BATTLE_CREATION_API_BASE}/works/publish`,
|
|
{
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(payload),
|
|
},
|
|
'发布汪汪声浪大作战作品失败',
|
|
{
|
|
retry: BARK_BATTLE_CREATION_WRITE_RETRY,
|
|
authImpact: options.authImpact,
|
|
skipRefresh: options.skipRefresh,
|
|
notifyAuthStateChange: options.notifyAuthStateChange,
|
|
clearAuthOnUnauthorized: options.clearAuthOnUnauthorized,
|
|
},
|
|
);
|
|
}
|
|
|
|
export const barkBattleCreationClient = {
|
|
createDraft: createBarkBattleDraft,
|
|
publish: publishBarkBattleWork,
|
|
};
|