diff --git a/src/main/index.ts b/src/main/index.ts index 79f9a82..953a657 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -223,7 +223,7 @@ ipcMain.handle("importCurrentConfigAsDefault", async () => { } return result; - } catch (error: any) { + } catch (error) { console.error("导入默认配置失败:", error); return { success: false }; } diff --git a/src/main/services.ts b/src/main/services.ts index b192e34..84081fa 100644 --- a/src/main/services.ts +++ b/src/main/services.ts @@ -159,7 +159,7 @@ export async function importCurrentConfigAsDefault(): Promise<{ success: boolean console.log(`已导入当前配置为默认供应商,配置文件:settings-default.json`); return { success: true, provider }; - } catch (error: any) { + } catch (error) { console.error("导入默认配置失败:", error); return { success: false }; } diff --git a/src/main/store.ts b/src/main/store.ts index 322cd5a..056fa9b 100644 --- a/src/main/store.ts +++ b/src/main/store.ts @@ -41,8 +41,8 @@ export class SimpleStore { return value !== undefined ? value : (defaultValue as T) } - async set(key: keyof AppConfig, value: T): Promise { - this.data[key] = value as any + async set(key: K, value: AppConfig[K]): Promise { + this.data[key] = value await this.saveData() } diff --git a/src/renderer/components/AddProviderModal.tsx b/src/renderer/components/AddProviderModal.tsx index dbe5c8d..93ef545 100644 --- a/src/renderer/components/AddProviderModal.tsx +++ b/src/renderer/components/AddProviderModal.tsx @@ -1,8 +1,6 @@ -import React, { useState } from "react"; +import React from "react"; import { Provider } from "../../shared/types"; -import { updateCoAuthoredSetting, checkCoAuthoredSetting, extractWebsiteUrl } from "../utils/providerConfigUtils"; -import { providerPresets } from "../config/providerPresets"; -import "./AddProviderModal.css"; +import ProviderForm from "./ProviderForm"; interface AddProviderModalProps { onAdd: (provider: Omit) => void; @@ -13,192 +11,14 @@ const AddProviderModal: React.FC = ({ onAdd, onClose, }) => { - const [formData, setFormData] = useState({ - name: "", - websiteUrl: "", - settingsConfig: "" - }); - const [error, setError] = useState(""); - const [disableCoAuthored, setDisableCoAuthored] = useState(false); - - // 预设的供应商配置模板 - const presets = providerPresets; - - const handleSubmit = (e: React.FormEvent) => { - e.preventDefault(); - setError(""); - - if (!formData.name) { - setError("请填写供应商名称"); - return; - } - - if (!formData.settingsConfig.trim()) { - setError("请填写配置内容"); - return; - } - - let settingsConfig: object; - - try { - settingsConfig = JSON.parse(formData.settingsConfig); - } catch (err) { - setError("配置JSON格式错误,请检查语法"); - return; - } - - onAdd({ - name: formData.name, - websiteUrl: formData.websiteUrl, - settingsConfig - }); - }; - - const handleChange = ( - e: React.ChangeEvent - ) => { - const { name, value } = e.target; - - if (name === 'settingsConfig') { - // 当用户修改配置时,尝试自动提取官网地址 - const extractedWebsiteUrl = extractWebsiteUrl(value); - - // 同时检查并同步选择框状态 - const hasCoAuthoredDisabled = checkCoAuthoredSetting(value); - setDisableCoAuthored(hasCoAuthoredDisabled); - - setFormData({ - ...formData, - [name]: value, - // 只有在官网地址为空时才自动填入 - websiteUrl: formData.websiteUrl || extractedWebsiteUrl, - }); - } else { - setFormData({ - ...formData, - [name]: value, - }); - } - }; - - // 处理选择框变化 - const handleCoAuthoredToggle = (checked: boolean) => { - setDisableCoAuthored(checked); - - // 更新JSON配置 - const updatedConfig = updateCoAuthoredSetting(formData.settingsConfig, checked); - setFormData({ - ...formData, - settingsConfig: updatedConfig, - }); - }; - - const applyPreset = (preset: typeof presets[0]) => { - const configString = JSON.stringify(preset.settingsConfig, null, 2); - - setFormData({ - name: preset.name, - websiteUrl: preset.websiteUrl, - settingsConfig: configString - }); - - // 同步选择框状态 - const hasCoAuthoredDisabled = checkCoAuthoredSetting(configString); - setDisableCoAuthored(hasCoAuthoredDisabled); - }; - return ( -
-
-

添加新供应商

- - {error &&
{error}
} - -
- -
- {presets.map((preset, index) => ( - - ))} -
-
- -
-
- - -
- -
- - -
- -
-
- - -
-