not sync after every install
This commit is contained in:
@@ -45,7 +45,8 @@ export const useSoftwareStore = defineStore('software', {
|
|||||||
loading: false,
|
loading: false,
|
||||||
isInitialized: false,
|
isInitialized: false,
|
||||||
initStatus: '正在检查系统环境...',
|
initStatus: '正在检查系统环境...',
|
||||||
lastFetched: 0
|
lastFetched: 0,
|
||||||
|
refreshTimer: null as any
|
||||||
}),
|
}),
|
||||||
getters: {
|
getters: {
|
||||||
mergedEssentials: (state) => {
|
mergedEssentials: (state) => {
|
||||||
@@ -244,6 +245,26 @@ export const useSoftwareStore = defineStore('software', {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 引入防抖刷新:在批量安装期间,仅在最后一次成功后的 5 秒执行全量扫描
|
||||||
|
scheduleDataRefresh() {
|
||||||
|
if (this.refreshTimer) clearTimeout(this.refreshTimer);
|
||||||
|
|
||||||
|
this.refreshTimer = setTimeout(async () => {
|
||||||
|
// 执行全量刷新
|
||||||
|
await this.fetchAllData();
|
||||||
|
|
||||||
|
// 刷新完成后清理所有已成功的任务状态,让卡片恢复正常显示
|
||||||
|
Object.keys(this.activeTasks).forEach(id => {
|
||||||
|
if (this.activeTasks[id].status === 'success') {
|
||||||
|
delete this.activeTasks[id];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.refreshTimer = null;
|
||||||
|
}, 5000);
|
||||||
|
},
|
||||||
|
|
||||||
findSoftware(id: string) {
|
findSoftware(id: string) {
|
||||||
return this.essentials.find(s => s.id === id) ||
|
return this.essentials.find(s => s.id === id) ||
|
||||||
this.updates.find(s => s.id === id) ||
|
this.updates.find(s => s.id === id) ||
|
||||||
@@ -260,15 +281,12 @@ export const useSoftwareStore = defineStore('software', {
|
|||||||
|
|
||||||
if (status === 'success') {
|
if (status === 'success') {
|
||||||
this.lastFetched = 0;
|
this.lastFetched = 0;
|
||||||
|
// 立即更新勾选状态,提升响应感
|
||||||
this.selectedEssentialIds = this.selectedEssentialIds.filter(i => i !== id);
|
this.selectedEssentialIds = this.selectedEssentialIds.filter(i => i !== id);
|
||||||
this.selectedUpdateIds = this.selectedUpdateIds.filter(i => i !== id);
|
this.selectedUpdateIds = this.selectedUpdateIds.filter(i => i !== id);
|
||||||
|
|
||||||
setTimeout(() => {
|
// 触发防抖刷新
|
||||||
if (this.activeTasks[id]?.status === 'success') {
|
this.scheduleDataRefresh();
|
||||||
delete this.activeTasks[id];
|
|
||||||
this.fetchAllData();
|
|
||||||
}
|
|
||||||
}, 3000);
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user