重大重构:从字段替换切换到完整配置文件切换系统
- 实现基于文件重命名的供应商切换机制,支持完整settings.json配置切换 - 移除所有向后兼容代码,简化为纯JSON配置模式 - 添加导入当前配置功能,解决首次使用时配置丢失问题 - 移除描述字段,简化用户界面 - 完整的错误处理和回滚机制确保配置安全 - 清理所有调试代码,优化代码质量
This commit is contained in:
@@ -3,6 +3,7 @@ import { Provider } from "../shared/types";
|
||||
import ProviderList from "./components/ProviderList";
|
||||
import AddProviderModal from "./components/AddProviderModal";
|
||||
import EditProviderModal from "./components/EditProviderModal";
|
||||
import ImportConfigModal from "./components/ImportConfigModal";
|
||||
import { ConfirmDialog } from "./components/ConfirmDialog";
|
||||
import "./App.css";
|
||||
|
||||
@@ -10,6 +11,7 @@ function App() {
|
||||
const [providers, setProviders] = useState<Record<string, Provider>>({});
|
||||
const [currentProviderId, setCurrentProviderId] = useState<string>("");
|
||||
const [isAddModalOpen, setIsAddModalOpen] = useState(false);
|
||||
const [isImportModalOpen, setIsImportModalOpen] = useState(false);
|
||||
const [configPath, setConfigPath] = useState<string>("");
|
||||
const [editingProviderId, setEditingProviderId] = useState<string | null>(
|
||||
null
|
||||
@@ -139,6 +141,23 @@ function App() {
|
||||
}
|
||||
};
|
||||
|
||||
const handleImportCurrentConfig = async (name: string) => {
|
||||
try {
|
||||
const result = await window.electronAPI.importCurrentConfig(name)
|
||||
|
||||
if (result.success) {
|
||||
await loadProviders()
|
||||
setIsImportModalOpen(false)
|
||||
showNotification(`成功导入当前配置为供应商: ${name}`, "success", 3000)
|
||||
} else {
|
||||
showNotification("导入失败,请检查当前是否有有效的配置文件", "error")
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('导入配置失败:', error)
|
||||
showNotification("导入配置时发生错误", "error")
|
||||
}
|
||||
}
|
||||
|
||||
const handleSelectConfigFile = async () => {
|
||||
const selectedPath = await window.electronAPI.selectConfigFile();
|
||||
if (selectedPath) {
|
||||
@@ -151,6 +170,9 @@ function App() {
|
||||
<header className="app-header">
|
||||
<h1>Claude Code 供应商切换器</h1>
|
||||
<div className="header-actions">
|
||||
<button className="import-btn" onClick={() => setIsImportModalOpen(true)}>
|
||||
导入当前配置
|
||||
</button>
|
||||
<button className="add-btn" onClick={() => setIsAddModalOpen(true)}>
|
||||
添加供应商
|
||||
</button>
|
||||
@@ -202,6 +224,13 @@ function App() {
|
||||
/>
|
||||
)}
|
||||
|
||||
{isImportModalOpen && (
|
||||
<ImportConfigModal
|
||||
onImport={handleImportCurrentConfig}
|
||||
onClose={() => setIsImportModalOpen(false)}
|
||||
/>
|
||||
)}
|
||||
|
||||
{editingProviderId && providers[editingProviderId] && (
|
||||
<EditProviderModal
|
||||
provider={providers[editingProviderId]}
|
||||
|
||||
Reference in New Issue
Block a user