import { invoke } from "@tauri-apps/api/core"; import { listen, type UnlistenFn } from "@tauri-apps/api/event"; import type { Provider, UniversalProvider, UniversalProvidersMap, } from "@/types"; import type { AppId } from "./types"; export interface ProviderSortUpdate { id: string; sortIndex: number; } export interface ProviderSwitchEvent { appType: AppId; providerId: string; } export const providersApi = { async getAll(appId: AppId): Promise> { return await invoke("get_providers", { app: appId }); }, async getCurrent(appId: AppId): Promise { return await invoke("get_current_provider", { app: appId }); }, async add(provider: Provider, appId: AppId): Promise { return await invoke("add_provider", { provider, app: appId }); }, async update(provider: Provider, appId: AppId): Promise { return await invoke("update_provider", { provider, app: appId }); }, async delete(id: string, appId: AppId): Promise { return await invoke("delete_provider", { id, app: appId }); }, async switch(id: string, appId: AppId): Promise { return await invoke("switch_provider", { id, app: appId }); }, async importDefault(appId: AppId): Promise { return await invoke("import_default_config", { app: appId }); }, async updateTrayMenu(): Promise { return await invoke("update_tray_menu"); }, async updateSortOrder( updates: ProviderSortUpdate[], appId: AppId, ): Promise { return await invoke("update_providers_sort_order", { updates, app: appId }); }, async onSwitched( handler: (event: ProviderSwitchEvent) => void, ): Promise { return await listen("provider-switched", (event) => { const payload = event.payload as ProviderSwitchEvent; handler(payload); }); }, }; // ============================================================================ // 统一供应商(Universal Provider)API // ============================================================================ export const universalProvidersApi = { /** * 获取所有统一供应商 */ async getAll(): Promise { return await invoke("get_universal_providers"); }, /** * 获取单个统一供应商 */ async get(id: string): Promise { return await invoke("get_universal_provider", { id }); }, /** * 添加或更新统一供应商 */ async upsert(provider: UniversalProvider): Promise { return await invoke("upsert_universal_provider", { provider }); }, /** * 删除统一供应商 */ async delete(id: string): Promise { return await invoke("delete_universal_provider", { id }); }, /** * 手动同步统一供应商到各应用 */ async sync(id: string): Promise { return await invoke("sync_universal_provider", { id }); }, };