From a1da54a57c8ffc362ab8154cd0577d83db159542 Mon Sep 17 00:00:00 2001 From: digua Date: Tue, 3 Feb 2026 23:57:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=95=B0=E6=8D=AE=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E8=BF=81=E7=A7=BB=E5=90=8E=E7=AB=8B=E5=8D=B3=E9=87=8D=E5=90=AF?= =?UTF-8?q?=E8=BD=AF=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/main/ipc/window.ts | 6 +++ electron/preload/apis/core.ts | 6 +++ electron/preload/index.d.ts | 1 + .../DataStorage/StorageManageSection.vue | 39 +++++++++++++++++-- src/i18n/locales/en-US/settings.json | 5 ++- src/i18n/locales/zh-CN/settings.json | 5 ++- 6 files changed, 57 insertions(+), 5 deletions(-) diff --git a/electron/main/ipc/window.ts b/electron/main/ipc/window.ts index 55b0e8df..d3e4052f 100644 --- a/electron/main/ipc/window.ts +++ b/electron/main/ipc/window.ts @@ -74,6 +74,12 @@ export function registerWindowHandlers(ctx: IpcContext): void { return app.getVersion() }) + // 重启应用 + ipcMain.handle('app:relaunch', () => { + app.relaunch() + app.quit() + }) + // 获取远程配置(支持 JSON 和纯文本/Markdown) ipcMain.handle('app:fetchRemoteConfig', async (_, url: string) => { try { diff --git a/electron/preload/apis/core.ts b/electron/preload/apis/core.ts index e254ad38..5ad9e5c2 100644 --- a/electron/preload/apis/core.ts +++ b/electron/preload/apis/core.ts @@ -96,5 +96,11 @@ export const extendedApi = { setAnalyticsEnabled: (enabled: boolean): Promise<{ success: boolean }> => { return ipcRenderer.invoke('analytics:setEnabled', enabled) }, + /** + * 重启应用 + */ + relaunch: (): Promise => { + return ipcRenderer.invoke('app:relaunch') + }, }, } diff --git a/electron/preload/index.d.ts b/electron/preload/index.d.ts index 74e31082..680cac44 100644 --- a/electron/preload/index.d.ts +++ b/electron/preload/index.d.ts @@ -199,6 +199,7 @@ interface Api { fetchRemoteConfig: (url: string) => Promise<{ success: boolean; data?: unknown; error?: string }> getAnalyticsEnabled: () => Promise setAnalyticsEnabled: (enabled: boolean) => Promise<{ success: boolean }> + relaunch: () => Promise } } diff --git a/src/components/common/settings/DataStorage/StorageManageSection.vue b/src/components/common/settings/DataStorage/StorageManageSection.vue index cae028d8..78ac6449 100644 --- a/src/components/common/settings/DataStorage/StorageManageSection.vue +++ b/src/components/common/settings/DataStorage/StorageManageSection.vue @@ -41,6 +41,9 @@ const showConfirmModal = ref(false) const pendingNewDir = ref(null) const pendingMigrate = ref(false) +// 重启弹窗状态 +const showRelaunchModal = ref(false) + // 格式化文件大小 function formatSize(bytes: number): string { if (bytes === 0) return '0 B' @@ -159,9 +162,8 @@ async function applyDataDirChange(newDir: string | null, migrate: boolean) { return } - // 重新加载目录信息 - await loadDataDir() - await loadCacheInfo() + // 迁移成功,显示强制重启弹窗 + showRelaunchModal.value = true } catch (error) { dataDirError.value = error instanceof Error ? error.message : String(error) } finally { @@ -169,6 +171,11 @@ async function applyDataDirChange(newDir: string | null, migrate: boolean) { } } +// 重启应用 +async function relaunchApp() { + await window.api.app.relaunch() +} + // 组件挂载时加载数据 onMounted(() => { loadCacheInfo() @@ -379,5 +386,31 @@ defineExpose({ + + + + + diff --git a/src/i18n/locales/en-US/settings.json b/src/i18n/locales/en-US/settings.json index be351904..58b19028 100644 --- a/src/i18n/locales/en-US/settings.json +++ b/src/i18n/locales/en-US/settings.json @@ -120,7 +120,10 @@ "defaultPath": "Default location", "confirmWarning": "After restarting, the old data directory will be automatically deleted. Please ensure the new path is correct.", "cancel": "Cancel", - "confirm": "Confirm" + "confirm": "Confirm", + "migrationSuccessTitle": "Migration Complete", + "migrationSuccessMessage": "The app needs to restart for changes to take effect.", + "relaunchNow": "Restart Now" }, "totalUsage": "Total: ", "loading": "Loading...", diff --git a/src/i18n/locales/zh-CN/settings.json b/src/i18n/locales/zh-CN/settings.json index d009a3ec..3f18d884 100644 --- a/src/i18n/locales/zh-CN/settings.json +++ b/src/i18n/locales/zh-CN/settings.json @@ -120,7 +120,10 @@ "defaultPath": "默认位置", "confirmWarning": "重启应用后,旧数据目录将被自动删除。请确保新目录路径正确。", "cancel": "取消", - "confirm": "确认切换" + "confirm": "确认切换", + "migrationSuccessTitle": "数据迁移完成", + "migrationSuccessMessage": "应用需要重启以使更改生效。", + "relaunchNow": "立即重启" }, "totalUsage": "总占用:", "loading": "加载中...",