From 7aa9031c7fcab4fee82a23c04891d488af09ce06 Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Wed, 31 Oct 2018 09:44:18 -0700 Subject: [PATCH] Import: Be resilient to deletions from importObject --- js/modules/backup.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/js/modules/backup.js b/js/modules/backup.js index 159d5026e..72ee105bf 100644 --- a/js/modules/backup.js +++ b/js/modules/backup.js @@ -343,6 +343,8 @@ async function importFromJsonString(db, jsonString, targetPath, options) { transaction.oncomplete = finish.bind(null, 'transaction complete'); _.each(remainingStoreNames, storeName => { + const items = importObject[storeName]; + window.log.info('Importing items for store', storeName); let count = 0; @@ -366,11 +368,12 @@ async function importFromJsonString(db, jsonString, targetPath, options) { } }; - if (!importObject[storeName].length) { + if (!items || !items.length) { finishStore(); + return; } - _.each(importObject[storeName], toAdd => { + _.each(items, toAdd => { toAdd = unstringify(toAdd); const haveGroupAlready = @@ -385,7 +388,7 @@ async function importFromJsonString(db, jsonString, targetPath, options) { const request = transaction.objectStore(storeName).put(toAdd, toAdd.id); request.onsuccess = () => { count += 1; - if (count === importObject[storeName].length) { + if (count + skipCount >= items.length) { finishStore(); } };