import { invoke } from '@tauri-apps/api/core'; import { open } from '@tauri-apps/plugin-shell'; import { Provider } from '../../shared/types'; // 定义配置状态类型 interface ConfigStatus { exists: boolean; path: string; error?: string; } // 定义导入结果类型 interface ImportResult { success: boolean; message?: string; } // Tauri API 封装,保持与 Electron 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') { // 检测是否在 Tauri 环境中 const isTauri = '__TAURI__' in window; if (isTauri) { // 在 Tauri 环境中,将 API 绑定到 window.electronAPI // 保持代码兼容性,无需修改组件代码 (window as any).electronAPI = tauriAPI; } // 提供平台信息 (window as any).platform = { isMac: navigator.platform.toLowerCase().includes('mac') }; } export default tauriAPI;