From 8d2c0247949dfd0a3e1df17ac2c273c8adc645c0 Mon Sep 17 00:00:00 2001 From: linshen <32978552+linshenkx@users.noreply.github.com> Date: Sat, 9 May 2026 22:16:11 +0800 Subject: [PATCH] fix(ui): harden resource restore and links - Restore image resources when metadata exists but bytes are missing - Limit remote restore scope and sanitize external link handling - Reuse image resource backup helpers across restore packages - Extend restore safety coverage for data manager and snapshots --- packages/ui/src/components/DataManager.vue | 117 +++++++++++++++--- packages/ui/src/i18n/locales/en-US/context.ts | 6 +- packages/ui/src/i18n/locales/zh-CN/context.ts | 6 +- packages/ui/src/i18n/locales/zh-TW/context.ts | 6 +- .../utils/data-manager-resource-package.ts | 6 +- .../ui/src/utils/favorite-resource-package.ts | 2 +- .../ui/src/utils/image-resource-backup.ts | 6 +- packages/ui/src/utils/open-external-url.ts | 18 ++- .../ui/src/utils/remote-snapshot-backup.ts | 10 +- .../tests/unit/components/DataManager.spec.ts | 63 ++++++++++ .../components/FavoriteImportPanel.spec.ts | 2 +- .../data-manager-resource-package.spec.ts | 30 +++++ .../utils/favorite-resource-package.spec.ts | 26 ++++ .../unit/utils/image-resource-backup.spec.ts | 40 +++++- .../unit/utils/open-external-url.spec.ts | 30 +++-- .../unit/utils/remote-snapshot-backup.spec.ts | 36 ++++++ 16 files changed, 362 insertions(+), 42 deletions(-) diff --git a/packages/ui/src/components/DataManager.vue b/packages/ui/src/components/DataManager.vue index 04e725d2..a015b5a8 100644 --- a/packages/ui/src/components/DataManager.vue +++ b/packages/ui/src/components/DataManager.vue @@ -653,7 +653,54 @@ /> -
+
+ + {{ $t('dataManager.remote.restoreScope') }} + + + {{ $t('dataManager.remote.restoreMissingAssetsHint', { count: selectedRemoteBackupMissingAssetsCount }) }} + +
+ + + + +
+
+ +
{{ $t('dataManager.import.favoriteMergeStrategy') }} @@ -676,7 +723,7 @@ type="success" block :loading="isRestoringRemote" - :disabled="!selectedRemoteBackup || isRemoteDataOperationActive" + :disabled="!selectedRemoteBackup || isRemoteDataOperationActive || !hasSelectedRemoteRestoreSection" @click="handleRemoteRestore" >