fix(sync): resolve restore item edge cases

This commit is contained in:
2026-05-19 01:50:34 +08:00
parent acffb6c5ee
commit 753f91e837
4 changed files with 97 additions and 7 deletions
+17 -1
View File
@@ -150,9 +150,17 @@ const isInstalled = (item: SyncedAppListItem): boolean =>
props.installedKeys.has(cloudItemKey(item));
const selectedItems = computed(() =>
props.items.filter((item) => selectedKeys.value.has(cloudItemKey(item))),
props.items.filter(
(item) => selectedKeys.value.has(cloudItemKey(item)) && !isInstalled(item),
),
);
const pruneSelectedKeys = (): void => {
selectedKeys.value = new Set(
[...selectedKeys.value].filter((key) => !props.installedKeys.has(key)),
);
};
const toggleSelection = (item: SyncedAppListItem): void => {
if (isInstalled(item)) return;
const key = cloudItemKey(item);
@@ -169,4 +177,12 @@ watch(
},
{ deep: true },
);
watch(
() => props.installedKeys,
() => {
pruneSelectedKeys();
},
{ deep: true },
);
</script>