refactor: 清理 Electron 遗留代码并优化项目结构
- 删除 Electron 主进程代码 (src/main/) - 删除构建产物文件夹 (build/, dist/, release/) - 清理 package.json 中的 Electron 依赖和脚本 - 删除 TypeScript 配置中的 Electron 相关文件 - 优化前端代码结构至 Tauri 标准结构 (src/renderer → src/) - 删除移动端图标和不必要文件 - 更新文档说明技术栈变更为 Tauri
This commit is contained in:
163
src/lib/tauri-api.ts
Normal file
163
src/lib/tauri-api.ts
Normal file
@@ -0,0 +1,163 @@
|
||||
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<Record<string, Provider>> => {
|
||||
try {
|
||||
return await invoke('get_providers');
|
||||
} catch (error) {
|
||||
console.error('获取供应商列表失败:', error);
|
||||
return {};
|
||||
}
|
||||
},
|
||||
|
||||
// 获取当前供应商ID
|
||||
getCurrentProvider: async (): Promise<string> => {
|
||||
try {
|
||||
return await invoke('get_current_provider');
|
||||
} catch (error) {
|
||||
console.error('获取当前供应商失败:', error);
|
||||
return '';
|
||||
}
|
||||
},
|
||||
|
||||
// 添加供应商
|
||||
addProvider: async (provider: Provider): Promise<boolean> => {
|
||||
try {
|
||||
return await invoke('add_provider', { provider });
|
||||
} catch (error) {
|
||||
console.error('添加供应商失败:', error);
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
|
||||
// 更新供应商
|
||||
updateProvider: async (provider: Provider): Promise<boolean> => {
|
||||
try {
|
||||
return await invoke('update_provider', { provider });
|
||||
} catch (error) {
|
||||
console.error('更新供应商失败:', error);
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
|
||||
// 删除供应商
|
||||
deleteProvider: async (id: string): Promise<boolean> => {
|
||||
try {
|
||||
return await invoke('delete_provider', { id });
|
||||
} catch (error) {
|
||||
console.error('删除供应商失败:', error);
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
|
||||
// 切换供应商
|
||||
switchProvider: async (providerId: string): Promise<boolean> => {
|
||||
try {
|
||||
return await invoke('switch_provider', { id: providerId });
|
||||
} catch (error) {
|
||||
console.error('切换供应商失败:', error);
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
// 导入当前配置为默认供应商
|
||||
importCurrentConfigAsDefault: async (): Promise<ImportResult> => {
|
||||
try {
|
||||
const success = await invoke<boolean>('import_default_config');
|
||||
return {
|
||||
success,
|
||||
message: success ? '成功导入默认配置' : '导入失败'
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('导入默认配置失败:', error);
|
||||
return {
|
||||
success: false,
|
||||
message: String(error)
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
// 获取 Claude Code 配置文件路径
|
||||
getClaudeCodeConfigPath: async (): Promise<string> => {
|
||||
try {
|
||||
return await invoke('get_claude_code_config_path');
|
||||
} catch (error) {
|
||||
console.error('获取配置路径失败:', error);
|
||||
return '';
|
||||
}
|
||||
},
|
||||
|
||||
// 获取 Claude Code 配置状态
|
||||
getClaudeConfigStatus: async (): Promise<ConfigStatus> => {
|
||||
try {
|
||||
return await invoke('get_claude_config_status');
|
||||
} catch (error) {
|
||||
console.error('获取配置状态失败:', error);
|
||||
return {
|
||||
exists: false,
|
||||
path: '',
|
||||
error: String(error)
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
// 打开配置文件夹
|
||||
openConfigFolder: async (): Promise<void> => {
|
||||
try {
|
||||
await invoke('open_config_folder');
|
||||
} catch (error) {
|
||||
console.error('打开配置文件夹失败:', error);
|
||||
}
|
||||
},
|
||||
|
||||
// 打开外部链接
|
||||
openExternal: async (url: string): Promise<void> => {
|
||||
try {
|
||||
await invoke('open_external', { url });
|
||||
} catch (error) {
|
||||
console.error('打开外部链接失败:', error);
|
||||
}
|
||||
},
|
||||
|
||||
// 选择配置文件(Tauri 暂不实现,保留接口兼容性)
|
||||
selectConfigFile: async (): Promise<string | null> => {
|
||||
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;
|
||||
Reference in New Issue
Block a user