import { API, apiFetch, getAuthToken } from './client'; import type { AppConfig } from '../components/Settings/types'; export interface RestartResponse { success: boolean; message?: string; } export async function getAppConfig(): Promise<[AppConfig | null, string | null]> { const [data, err] = await apiFetch(API.config); return [data, err?.message ?? null]; } export async function updateAppConfig(config: AppConfig): Promise<[true, null] | [false, string]> { const [, err] = await apiFetch<{ success: boolean }>(API.config, { method: 'PUT', body: { config }, }); return err ? [false, err.message] : [true, null]; } export async function restartGateway(): Promise<{ status: number; data: RestartResponse }> { const token = getAuthToken(); const resp = await fetch(API.restart, { method: 'POST', headers: token ? { Authorization: `Bearer ${token}` } : undefined, }); const data = await resp.json().catch(() => ({ success: false })); return { status: resp.status, data }; } export async function checkHealth(): Promise { try { const resp = await fetch(API.health); return resp.ok; } catch { return false; } } /** 从 /health 端点获取后端版本号(源自 Cargo.toml 的 CARGO_PKG_VERSION)。 */ export async function getVersion(): Promise { try { const resp = await fetch(API.health); if (!resp.ok) return null; const data = (await resp.json()) as { status?: string; version?: string }; return data.version ?? null; } catch { return null; } }