From c759350b4ca459fbb02f75082e8f436eca434fc0 Mon Sep 17 00:00:00 2001 From: Abdullah Atta Date: Tue, 26 Dec 2023 08:32:31 +0500 Subject: [PATCH] core: fix `data is not iterable` error on backup restore --- packages/core/src/database/backup.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/core/src/database/backup.ts b/packages/core/src/database/backup.ts index efb142cff..b85548322 100644 --- a/packages/core/src/database/backup.ts +++ b/packages/core/src/database/backup.ts @@ -298,10 +298,19 @@ export default class Backup { if ("compressed" in backup && typeof decryptedData === "string") decryptedData = await this.db.compressor().decompress(decryptedData); - await this.migrateData( + const data = typeof decryptedData === "string" - ? (JSON.parse(decryptedData) as BackupDataItem[]) - : Object.values(decryptedData), + ? (JSON.parse(decryptedData) as unknown) + : Object.values(decryptedData); + + if (!data) throw new Error("No data found."); + + await this.migrateData( + Array.isArray(data) + ? (data as BackupDataItem[]) + : typeof data === "object" + ? Object.values(data) + : [], backup.version ); } @@ -333,6 +342,7 @@ export default class Backup { } private async migrateData(data: BackupDataItem[], version: number) { + console.log(data); await this.db.transaction(async () => { for (let item of data) { // we do not want to restore deleted items