fix: 在导入和删除IndexedDB数据时停止轮询并启用离线开发模式以保证数据一致性

This commit is contained in:
yangsy
2025-12-15 12:49:21 +08:00
parent 91a2fcb743
commit 426d92a5f9

View File

@@ -98,6 +98,8 @@ const exportFromIndexedDB = async <K extends IndexedDbStoreId>(storeId: K, optio
}; };
const importToIndexedDB = async <K extends IndexedDbStoreId>(storeId: K, options?: { successMsg?: string; errorMsg?: string }) => { const importToIndexedDB = async <K extends IndexedDbStoreId>(storeId: K, options?: { successMsg?: string; errorMsg?: string }) => {
const { successMsg, errorMsg } = options ?? {}; const { successMsg, errorMsg } = options ?? {};
pollingStore.stopPolling();
offlineDev.value = true;
const fileInput = document.createElement('input'); const fileInput = document.createElement('input');
fileInput.type = 'file'; fileInput.type = 'file';
fileInput.accept = '.json'; fileInput.accept = '.json';
@@ -113,18 +115,20 @@ const importToIndexedDB = async <K extends IndexedDbStoreId>(storeId: K, options
reader.onload = async () => { reader.onload = async () => {
const data = destr<IndexedDbStoreStates[K]>(reader.result as string); const data = destr<IndexedDbStoreStates[K]>(reader.result as string);
await localforage.setItem(storeId, data); await localforage.setItem(storeId, data);
window.$message.success(successMsg ?? '导入数据成功'); window.$message.success(`${successMsg ?? '导入数据成功'},即将刷新页面`);
await sleep(2000); await sleep(2000);
window.location.reload(); window.location.reload();
}; };
}; };
}; };
const deleteFromIndexedDB = async (storeId: IndexedDbStoreId) => { const deleteFromIndexedDB = async (storeId: IndexedDbStoreId) => {
pollingStore.stopPolling();
offlineDev.value = true;
await localforage.removeItem(storeId).catch((error) => { await localforage.removeItem(storeId).catch((error) => {
window.$message.error(`${error}`); window.$message.error(`${error}`);
return; return;
}); });
window.$message.success('删除成功'); window.$message.success('删除成功,即将刷新页面');
await sleep(2000); await sleep(2000);
window.location.reload(); window.location.reload();
}; };