diff --git a/src-tauri/src/app/menu.rs b/src-tauri/src/app/menu.rs index 3b83a44..58ced06 100644 --- a/src-tauri/src/app/menu.rs +++ b/src-tauri/src/app/menu.rs @@ -194,15 +194,7 @@ pub fn menu_handler(event: WindowMenuEvent) { ); } "check_update" => { - tauri::async_runtime::spawn(async move { - let result = app.updater().check().await; - let update_resp = result.unwrap(); - if update_resp.is_update_available() { - tauri::async_runtime::spawn(async move { - utils::prompt_for_install(app, update_resp).await.unwrap(); - }); - } - }); + utils::run_check_update(app).unwrap(); } // Preferences "control_center" => window::control_window(&app), diff --git a/src-tauri/src/app/setup.rs b/src-tauri/src/app/setup.rs index 91f812d..3f73284 100644 --- a/src-tauri/src/app/setup.rs +++ b/src-tauri/src/app/setup.rs @@ -1,6 +1,7 @@ +use std::borrow::Borrow; use crate::{app::window, conf::ChatConfJson, utils}; use log::info; -use tauri::{utils::config::WindowUrl, window::WindowBuilder, App, GlobalShortcutManager, Manager}; +use tauri::{utils::config::WindowUrl, window::WindowBuilder, App, GlobalShortcutManager, Manager, AppHandle, Wry}; use wry::application::accelerator::Accelerator; pub fn init(app: &mut App) -> std::result::Result<(), Box> { @@ -89,6 +90,11 @@ pub fn init(app: &mut App) -> std::result::Result<(), Box .unwrap(); }); } + // auto_check_update + if chat_conf.auto_check_update { + let app = app.handle(); + utils::run_check_update(app).unwrap(); + } Ok(()) } diff --git a/src-tauri/src/conf.rs b/src-tauri/src/conf.rs index 499b054..8c07c1b 100644 --- a/src-tauri/src/conf.rs +++ b/src-tauri/src/conf.rs @@ -18,6 +18,7 @@ pub const GITHUB_PROMPTS_CSV_URL: &str = "https://raw.githubusercontent.com/f/awesome-chatgpt-prompts/main/prompts.csv"; pub const DEFAULT_CHAT_CONF: &str = r#"{ "stay_on_top": false, + "auto_check_update": true, "theme": "Light", "titlebar": true, "global_shortcut": "", @@ -29,6 +30,7 @@ pub const DEFAULT_CHAT_CONF: &str = r#"{ }"#; pub const DEFAULT_CHAT_CONF_MAC: &str = r#"{ "stay_on_top": false, + "auto_check_update": true, "theme": "Light", "titlebar": false, "global_shortcut": "", @@ -60,6 +62,7 @@ pub struct ChatConfJson { // macOS and Windows pub theme: String, + pub auto_check_update: bool, pub stay_on_top: bool, pub default_origin: String, pub origin: String, diff --git a/src-tauri/src/utils.rs b/src-tauri/src/utils.rs index 0d5145d..4f55cff 100644 --- a/src-tauri/src/utils.rs +++ b/src-tauri/src/utils.rs @@ -10,7 +10,6 @@ use std::{ }; use tauri::{utils::config::Config, Manager, AppHandle, Wry}; use tauri::updater::UpdateResponse; - pub fn chat_root() -> PathBuf { tauri::api::path::home_dir().unwrap().join(".chatgpt") } @@ -129,6 +128,20 @@ pub async fn get_data( Ok(None) } } + +pub fn run_check_update(app: AppHandle) -> Result<()> { + tauri::async_runtime::spawn(async move { + let result = app.updater().check().await; + let update_resp = result.unwrap(); + if update_resp.is_update_available() { + tauri::async_runtime::spawn(async move { + prompt_for_install(app, update_resp).await.unwrap(); + }); + } + }); + Ok(()) +} + // Copy private api in tauri/updater/mod.rs. TODO: refactor to public api // Prompt a dialog asking if the user want to install the new version // Maybe we should add an option to customize it in future versions. diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 4ed2837..71a52cb 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -7,7 +7,7 @@ }, "package": { "productName": "ChatGPT", - "version": "0.7.4" + "version": "0.7.2" }, "tauri": { "allowlist": { @@ -67,7 +67,7 @@ "csp": null }, "updater": { - "active": true, + "active": false, "dialog": true, "endpoints": [ "https://lencx.github.io/ChatGPT/install.json" diff --git a/src/view/General.tsx b/src/view/General.tsx index 68f23b8..b231cd9 100644 --- a/src/view/General.tsx +++ b/src/view/General.tsx @@ -10,6 +10,14 @@ import { clone, omit, isEqual } from 'lodash'; import useInit from '@/hooks/useInit'; import { DISABLE_AUTO_COMPLETE, chatRoot } from '@/utils'; +const CheckUpdateLabel = () => { + return ( + + Auto Check Update + + ) +} + const OriginLabel = ({ url }: { url: string }) => { return ( @@ -108,6 +116,9 @@ export default function General() { + } name="auto_check_update" valuePropName="checked"> + + } name="global_shortcut">