From 6bd52fe961b51e2160e23aa847e4ec1a235df4ea Mon Sep 17 00:00:00 2001 From: tiankai Date: Tue, 3 Jan 2023 17:35:20 +0800 Subject: [PATCH] Add "Reset to defaults" in Control Center --- src-tauri/src/app/cmd.rs | 5 +++++ src-tauri/src/conf.rs | 11 +++++++++++ src-tauri/src/main.rs | 1 + src/view/General.tsx | 16 ++++++++++++++++ 4 files changed, 33 insertions(+) diff --git a/src-tauri/src/app/cmd.rs b/src-tauri/src/app/cmd.rs index 6d29a89..8feddd7 100644 --- a/src-tauri/src/app/cmd.rs +++ b/src-tauri/src/app/cmd.rs @@ -38,6 +38,11 @@ pub fn get_chat_conf() -> ChatConfJson { ChatConfJson::get_chat_conf() } +#[command] +pub fn reset_chat_conf() -> ChatConfJson { + ChatConfJson::reset_chat_conf() +} + #[command] pub fn form_confirm(_app: AppHandle, data: serde_json::Value) { ChatConfJson::amend(&serde_json::json!(data), None).unwrap(); diff --git a/src-tauri/src/conf.rs b/src-tauri/src/conf.rs index 116267e..499b054 100644 --- a/src-tauri/src/conf.rs +++ b/src-tauri/src/conf.rs @@ -129,6 +129,17 @@ impl ChatConfJson { } } + pub fn reset_chat_conf() -> Self { + let conf_file = ChatConfJson::conf_path(); + let content = if cfg!(target_os = "macos") { + DEFAULT_CHAT_CONF_MAC + } else { + DEFAULT_CHAT_CONF + }; + fs::write(&conf_file, content).unwrap(); + serde_json::from_str(content).unwrap() + } + // https://users.rust-lang.org/t/updating-object-fields-given-dynamic-json/39049/3 pub fn amend(new_rules: &Value, app: Option) -> Result<()> { let config = ChatConfJson::get_chat_conf(); diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 8a2fc58..a6f6f67 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -56,6 +56,7 @@ async fn main() { cmd::download, cmd::open_link, cmd::get_chat_conf, + cmd::reset_chat_conf, cmd::form_cancel, cmd::form_confirm, cmd::form_msg, diff --git a/src/view/General.tsx b/src/view/General.tsx index 96ea35c..68f23b8 100644 --- a/src/view/General.tsx +++ b/src/view/General.tsx @@ -58,6 +58,19 @@ export default function General() { form.setFieldsValue(chatConf); }; + const onReset = async () => { + const chatData = await invoke('reset_chat_conf'); + setChatConf(chatData); + const isOk = await ask(`Configuration reset successfully, whether to restart?`, { + title: 'ChatGPT Preferences' + }); + if (isOk) { + relaunch(); + return; + } + message.success('Configuration reset successfully'); + }; + const onFinish = async (values: any) => { if (!isEqual(omit(chatConf, ['default_origin']), values)) { await invoke('form_confirm', { data: values, label: 'main' }); @@ -115,10 +128,13 @@ export default function General() { + + Reset to defaults +