import type { RuntimeSettings } from '../../../packages/shared/src/contracts/runtime'; import { type ApiRequestOptions, type ApiRetryOptions, requestJson, } from '../apiClient'; const PLATFORM_SETTINGS_API_PATH = '/api/runtime/settings'; const PLATFORM_SETTINGS_READ_RETRY: ApiRetryOptions = { maxRetries: 1, baseDelayMs: 180, maxDelayMs: 480, }; const PLATFORM_SETTINGS_WRITE_RETRY: ApiRetryOptions = { maxRetries: 1, baseDelayMs: 240, maxDelayMs: 640, retryUnsafeMethods: true, }; type PlatformSettingsRequestOptions = ApiRequestOptions & { signal?: AbortSignal; }; export function getPlatformRuntimeSettings( options: PlatformSettingsRequestOptions = {}, ) { const { signal, ...requestOptions } = options; return requestJson( PLATFORM_SETTINGS_API_PATH, { method: 'GET', signal }, '读取设置失败', { ...requestOptions, retry: requestOptions.retry ?? PLATFORM_SETTINGS_READ_RETRY, }, ); } export function putPlatformRuntimeSettings( settings: RuntimeSettings, options: PlatformSettingsRequestOptions = {}, ) { const { signal, ...requestOptions } = options; return requestJson( PLATFORM_SETTINGS_API_PATH, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(settings), signal, }, '保存设置失败', { ...requestOptions, retry: requestOptions.retry ?? PLATFORM_SETTINGS_WRITE_RETRY, }, ); }