diff --git a/src/components/common/Settings/DataStorage/StorageManageSection.vue b/src/components/common/Settings/DataStorage/StorageManageSection.vue index f9149d93..4d2f9f50 100644 --- a/src/components/common/Settings/DataStorage/StorageManageSection.vue +++ b/src/components/common/Settings/DataStorage/StorageManageSection.vue @@ -21,6 +21,7 @@ const defaultDataDir = ref('') const isCustomDataDir = ref(false) const isUpdatingDataDir = ref(false) const dataDirError = ref(null) +const isMigrateHintIgnored = ref(false) // 确认弹窗状态 const showConfirmModal = ref(false) @@ -59,15 +60,40 @@ async function loadCacheInfo() { // 加载数据目录 const canMigrateToDefault = computed(() => { - return IS_ELECTRON && dataDir.value && defaultDataDir.value && dataDir.value !== defaultDataDir.value + return ( + IS_ELECTRON && + dataDir.value && + defaultDataDir.value && + dataDir.value !== defaultDataDir.value && + !isMigrateHintIgnored.value + ) }) +function getMigrateHintIgnoreKey(pathValue: string, defaultPathValue: string): string { + return `chatlab_ignore_migrate_default_hint:${pathValue}:${defaultPathValue}` +} + +function updateMigrateHintIgnored() { + if (!dataDir.value || !defaultDataDir.value) { + isMigrateHintIgnored.value = false + return + } + + try { + isMigrateHintIgnored.value = + localStorage.getItem(getMigrateHintIgnoreKey(dataDir.value, defaultDataDir.value)) === '1' + } catch { + isMigrateHintIgnored.value = false + } +} + async function loadDataDir() { try { const info = await useCacheService().getDataDir() dataDir.value = info.path defaultDataDir.value = info.defaultPath || '' isCustomDataDir.value = info.isCustom + updateMigrateHintIgnored() } catch (error) { console.error('获取数据目录失败:', error) } @@ -140,6 +166,17 @@ function migrateToDefaultDir() { showConfirmModal.value = true } +function ignoreMigrateHint() { + if (!dataDir.value || !defaultDataDir.value) return + + try { + localStorage.setItem(getMigrateHintIgnoreKey(dataDir.value, defaultDataDir.value), '1') + } catch { + // localStorage 不可用时只在当前页面隐藏,避免阻塞用户继续使用设置页。 + } + isMigrateHintIgnored.value = true +} + // 确认切换数据目录 async function confirmDataDirChange() { showConfirmModal.value = false @@ -351,16 +388,21 @@ defineExpose({ {{ defaultDataDir }}

- - {{ t('settings.storage.dataLocation.migrateAction') }} - +
+ + {{ t('settings.storage.dataLocation.ignoreMigrateHint') }} + + + {{ t('settings.storage.dataLocation.migrateAction') }} + +

diff --git a/src/i18n/locales/en-US/settings.json b/src/i18n/locales/en-US/settings.json index 9d4ba754..735597d1 100644 --- a/src/i18n/locales/en-US/settings.json +++ b/src/i18n/locales/en-US/settings.json @@ -206,6 +206,7 @@ "reset": "Reset", "open": "Open", "migrateHint": "Data is still at a legacy location. Migrate to the unified directory:", + "ignoreMigrateHint": "Ignore", "migrateAction": "Migrate Now", "restartTip": "Please restart the app after switching. Data will be migrated from the old directory.", "confirmTitle": "Confirm Directory Change", diff --git a/src/i18n/locales/ja-JP/settings.json b/src/i18n/locales/ja-JP/settings.json index eb2c32a7..da864668 100644 --- a/src/i18n/locales/ja-JP/settings.json +++ b/src/i18n/locales/ja-JP/settings.json @@ -206,6 +206,7 @@ "reset": "デフォルトに戻す", "open": "開く", "migrateHint": "データがまだ旧ディレクトリにあります。統一ディレクトリへの移行をお勧めします:", + "ignoreMigrateHint": "無視", "migrateAction": "今すぐ移行", "restartTip": "ディレクトリ変更後はアプリを再起動してください。旧ディレクトリのキャッシュは自動で移行されます", "confirmTitle": "データディレクトリの切り替えを確認", diff --git a/src/i18n/locales/zh-CN/settings.json b/src/i18n/locales/zh-CN/settings.json index 5670dc6a..56118f5e 100644 --- a/src/i18n/locales/zh-CN/settings.json +++ b/src/i18n/locales/zh-CN/settings.json @@ -206,6 +206,7 @@ "reset": "恢复默认", "open": "打开", "migrateHint": "检测到数据仍在旧位置,建议迁移至统一目录:", + "ignoreMigrateHint": "忽略", "migrateAction": "一键迁移", "restartTip": "切换目录后请重启应用,旧目录下缓存会跟随迁移", "confirmTitle": "确认切换数据目录", diff --git a/src/i18n/locales/zh-TW/settings.json b/src/i18n/locales/zh-TW/settings.json index 3f8d85e1..66bb4ce1 100644 --- a/src/i18n/locales/zh-TW/settings.json +++ b/src/i18n/locales/zh-TW/settings.json @@ -206,6 +206,7 @@ "reset": "還原預設", "open": "開啟", "migrateHint": "偵測到資料仍在舊位置,建議遷移至統一目錄:", + "ignoreMigrateHint": "忽略", "migrateAction": "一鍵遷移", "restartTip": "切換目錄後請重新啟動應用程式,舊目錄下快取會跟隨遷移", "confirmTitle": "確認切換資料目錄",