From fd3d9f17b8f5e338139bf15da29b6c15dba978b7 Mon Sep 17 00:00:00 2001 From: fullex <106392080+0xfullex@users.noreply.github.com> Date: Fri, 18 Apr 2025 16:28:20 +0800 Subject: [PATCH] fix: should not download when autoupdate is false (#5029) --- packages/shared/IpcChannel.ts | 1 + src/main/ipc.ts | 5 +++++ src/main/services/AppUpdater.ts | 4 +++- src/main/services/ConfigManager.ts | 11 ++++++++++- src/preload/index.d.ts | 1 + src/preload/index.ts | 1 + src/renderer/src/hooks/useSettings.ts | 6 ++++++ src/renderer/src/i18n/locales/en-us.json | 2 +- src/renderer/src/i18n/locales/ja-jp.json | 2 +- src/renderer/src/i18n/locales/zh-cn.json | 2 +- src/renderer/src/i18n/locales/zh-tw.json | 2 +- src/renderer/src/pages/settings/AboutSettings.tsx | 5 ++--- 12 files changed, 33 insertions(+), 9 deletions(-) diff --git a/packages/shared/IpcChannel.ts b/packages/shared/IpcChannel.ts index 733b0f55..8a7c12a6 100644 --- a/packages/shared/IpcChannel.ts +++ b/packages/shared/IpcChannel.ts @@ -13,6 +13,7 @@ export enum IpcChannel { App_RestartTray = 'app:restart-tray', App_SetTheme = 'app:set-theme', App_SetCustomCss = 'app:set-custom-css', + App_SetAutoUpdate = 'app:set-auto-update', App_IsBinaryExist = 'app:is-binary-exist', App_GetBinaryPath = 'app:get-binary-path', diff --git a/src/main/ipc.ts b/src/main/ipc.ts index 816ad7d5..62ce336f 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -100,6 +100,11 @@ export function registerIpc(mainWindow: BrowserWindow, app: Electron.App) { configManager.setTrayOnClose(isActive) }) + // auto update + ipcMain.handle(IpcChannel.App_SetAutoUpdate, (_, isActive: boolean) => { + configManager.setAutoUpdate(isActive) + }) + ipcMain.handle(IpcChannel.App_RestartTray, () => TrayService.getInstance().restartTray()) ipcMain.handle(IpcChannel.Config_Set, (_, key: string, value: any) => { diff --git a/src/main/services/AppUpdater.ts b/src/main/services/AppUpdater.ts index 5a1f45ba..162fcb0a 100644 --- a/src/main/services/AppUpdater.ts +++ b/src/main/services/AppUpdater.ts @@ -5,6 +5,7 @@ import logger from 'electron-log' import { AppUpdater as _AppUpdater, autoUpdater } from 'electron-updater' import icon from '../../../build/icon.png?asset' +import { configManager } from './ConfigManager' export default class AppUpdater { autoUpdater: _AppUpdater = autoUpdater @@ -15,7 +16,8 @@ export default class AppUpdater { autoUpdater.logger = logger autoUpdater.forceDevUpdateConfig = !app.isPackaged - autoUpdater.autoDownload = true + autoUpdater.autoDownload = configManager.getAutoUpdate() + autoUpdater.autoInstallOnAppQuit = configManager.getAutoUpdate() // 检测下载错误 autoUpdater.on('error', (error) => { diff --git a/src/main/services/ConfigManager.ts b/src/main/services/ConfigManager.ts index 053a0326..51c5314c 100644 --- a/src/main/services/ConfigManager.ts +++ b/src/main/services/ConfigManager.ts @@ -14,7 +14,8 @@ enum ConfigKeys { ZoomFactor = 'ZoomFactor', Shortcuts = 'shortcuts', ClickTrayToShowQuickAssistant = 'clickTrayToShowQuickAssistant', - EnableQuickAssistant = 'enableQuickAssistant' + EnableQuickAssistant = 'enableQuickAssistant', + AutoUpdate = 'autoUpdate' } export class ConfigManager { @@ -136,6 +137,14 @@ export class ConfigManager { this.set(ConfigKeys.EnableQuickAssistant, value) } + getAutoUpdate(): boolean { + return this.get(ConfigKeys.AutoUpdate, true) + } + + setAutoUpdate(value: boolean) { + this.set(ConfigKeys.AutoUpdate, value) + } + set(key: string, value: unknown) { this.store.set(key, value) } diff --git a/src/preload/index.d.ts b/src/preload/index.d.ts index b0420112..b24f2064 100644 --- a/src/preload/index.d.ts +++ b/src/preload/index.d.ts @@ -30,6 +30,7 @@ declare global { restartTray: () => void setTheme: (theme: 'light' | 'dark') => void setCustomCss: (css: string) => void + setAutoUpdate: (isActive: boolean) => void reload: () => void clearCache: () => Promise<{ success: boolean; error?: string }> system: { diff --git a/src/preload/index.ts b/src/preload/index.ts index fb390466..54055d25 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -20,6 +20,7 @@ const api = { restartTray: () => ipcRenderer.invoke(IpcChannel.App_RestartTray), setTheme: (theme: 'light' | 'dark') => ipcRenderer.invoke(IpcChannel.App_SetTheme, theme), setCustomCss: (css: string) => ipcRenderer.invoke(IpcChannel.App_SetCustomCss, css), + setAutoUpdate: (isActive: boolean) => ipcRenderer.invoke(IpcChannel.App_SetAutoUpdate, isActive), openWebsite: (url: string) => ipcRenderer.invoke(IpcChannel.Open_Website, url), clearCache: () => ipcRenderer.invoke(IpcChannel.App_ClearCache), system: { diff --git a/src/renderer/src/hooks/useSettings.ts b/src/renderer/src/hooks/useSettings.ts index 9e75b57d..ba6185ab 100644 --- a/src/renderer/src/hooks/useSettings.ts +++ b/src/renderer/src/hooks/useSettings.ts @@ -3,6 +3,7 @@ import { AssistantIconType, SendMessageShortcut, setAssistantIconType, + setAutoCheckUpdate as _setAutoCheckUpdate, setLaunchOnBoot, setLaunchToTray, setSendMessageShortcut as _setSendMessageShortcut, @@ -50,6 +51,11 @@ export function useSettings() { } }, + setAutoCheckUpdate(isAutoUpdate: boolean) { + dispatch(_setAutoCheckUpdate(isAutoUpdate)) + window.api.setAutoUpdate(isAutoUpdate) + }, + setTheme(theme: ThemeMode) { dispatch(setTheme(theme)) }, diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index b69df5d5..d3fcdc80 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -1029,7 +1029,7 @@ "general.display.title": "Display Settings", "general.emoji_picker": "Emoji Picker", "general.image_upload": "Image Upload", - "general.auto_check_update.title": "Auto update checking", + "general.auto_check_update.title": "Auto Update", "general.reset.button": "Reset", "general.reset.title": "Data Reset", "general.restore.button": "Restore", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index 09fb5090..f1eeab44 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -1364,7 +1364,7 @@ "content_limit": "内容の長さ制限", "content_limit_tooltip": "検索結果の内容長を制限し、制限を超える内容は切り捨てられます。" }, - "general.auto_check_update.title": "自動更新チェックを有効にする", + "general.auto_check_update.title": "自動更新", "quickPhrase": { "title": "クイックフレーズ", "add": "フレーズを追加", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 14f95123..cf089664 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -1029,7 +1029,7 @@ "general.display.title": "显示设置", "general.emoji_picker": "表情选择器", "general.image_upload": "图片上传", - "general.auto_check_update.title": "自动检测更新", + "general.auto_check_update.title": "自动更新", "general.reset.button": "重置", "general.reset.title": "重置数据", "general.restore.button": "恢复", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 37cd1498..e5bf357f 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -1364,7 +1364,7 @@ "content_limit": "內容長度限制", "content_limit_tooltip": "限制搜尋結果的內容長度,超過限制的內容將被截斷。" }, - "general.auto_check_update.title": "啟用自動更新檢查", + "general.auto_check_update.title": "啟用自動更新", "quickPhrase": { "title": "快捷短語", "add": "新增短語", diff --git a/src/renderer/src/pages/settings/AboutSettings.tsx b/src/renderer/src/pages/settings/AboutSettings.tsx index 82d2a62e..1d13ca84 100644 --- a/src/renderer/src/pages/settings/AboutSettings.tsx +++ b/src/renderer/src/pages/settings/AboutSettings.tsx @@ -8,7 +8,6 @@ import { useRuntime } from '@renderer/hooks/useRuntime' import { useSettings } from '@renderer/hooks/useSettings' import { useAppDispatch } from '@renderer/store' import { setUpdateState } from '@renderer/store/runtime' -import { setAutoCheckUpdate } from '@renderer/store/settings' import { ThemeMode } from '@renderer/types' import { compareVersions, runAsyncFunction } from '@renderer/utils' import { Avatar, Button, Progress, Row, Switch, Tag } from 'antd' @@ -25,7 +24,7 @@ import { SettingContainer, SettingDivider, SettingGroup, SettingRow, SettingTitl const AboutSettings: FC = () => { const [version, setVersion] = useState('') const { t } = useTranslation() - const { autoCheckUpdate } = useSettings() + const { autoCheckUpdate, setAutoCheckUpdate } = useSettings() const { theme } = useTheme() const dispatch = useAppDispatch() const { update } = useRuntime() @@ -150,7 +149,7 @@ const AboutSettings: FC = () => { {t('settings.general.auto_check_update.title')} - dispatch(setAutoCheckUpdate(v))} /> + setAutoCheckUpdate(v)} /> {hasNewVersion && update.info && (