import { invoke } from '@tauri-apps/api/core'; import { Provider } from '../types'; // 定义配置状态类型 interface ConfigStatus { exists: boolean; path: string; error?: string; } // 定义导入结果类型 interface ImportResult { success: boolean; message?: string; } // Tauri API 封装,提供统一的全局 API 接口 export const tauriAPI = { // 获取所有供应商 getProviders: async (): Promise> => { try { return await invoke('get_providers'); } catch (error) { console.error('获取供应商列表失败:', error); return {}; } }, // 获取当前供应商ID getCurrentProvider: async (): Promise => { try { return await invoke('get_current_provider'); } catch (error) { console.error('获取当前供应商失败:', error); return ''; } }, // 添加供应商 addProvider: async (provider: Provider): Promise => { try { return await invoke('add_provider', { provider }); } catch (error) { console.error('添加供应商失败:', error); throw error; } }, // 更新供应商 updateProvider: async (provider: Provider): Promise => { try { return await invoke('update_provider', { provider }); } catch (error) { console.error('更新供应商失败:', error); throw error; } }, // 删除供应商 deleteProvider: async (id: string): Promise => { try { return await invoke('delete_provider', { id }); } catch (error) { console.error('删除供应商失败:', error); throw error; } }, // 切换供应商 switchProvider: async (providerId: string): Promise => { try { return await invoke('switch_provider', { id: providerId }); } catch (error) { console.error('切换供应商失败:', error); return false; } }, // 导入当前配置为默认供应商 importCurrentConfigAsDefault: async (): Promise => { try { const success = await invoke('import_default_config'); return { success, message: success ? '成功导入默认配置' : '导入失败' }; } catch (error) { console.error('导入默认配置失败:', error); return { success: false, message: String(error) }; } }, // 获取 Claude Code 配置文件路径 getClaudeCodeConfigPath: async (): Promise => { try { return await invoke('get_claude_code_config_path'); } catch (error) { console.error('获取配置路径失败:', error); return ''; } }, // 获取 Claude Code 配置状态 getClaudeConfigStatus: async (): Promise => { try { return await invoke('get_claude_config_status'); } catch (error) { console.error('获取配置状态失败:', error); return { exists: false, path: '', error: String(error) }; } }, // 打开配置文件夹 openConfigFolder: async (): Promise => { try { await invoke('open_config_folder'); } catch (error) { console.error('打开配置文件夹失败:', error); } }, // 打开外部链接 openExternal: async (url: string): Promise => { try { await invoke('open_external', { url }); } catch (error) { console.error('打开外部链接失败:', error); } }, // 选择配置文件(Tauri 暂不实现,保留接口兼容性) selectConfigFile: async (): Promise => { console.warn('selectConfigFile 在 Tauri 版本中暂不支持'); return null; } }; // 创建全局 API 对象,兼容现有代码 if (typeof window !== 'undefined') { // 绑定到 window.api,避免 Electron 命名造成误解 // API 内部已做 try/catch,非 Tauri 环境下也会安全返回默认值 (window as any).api = tauriAPI; } export default tauriAPI;