From ace1a1be349c279fe87b536f786bb32c4e17f889 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Thu, 13 Apr 2017 15:05:38 +0200 Subject: download/import db from dump page --- src/wxBackend.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/wxBackend.ts') diff --git a/src/wxBackend.ts b/src/wxBackend.ts index 7c3143136..7b1a2b35e 100644 --- a/src/wxBackend.ts +++ b/src/wxBackend.ts @@ -60,6 +60,9 @@ function makeHandlers(db: IDBDatabase, ["dump-db"]: function (detail, sender) { return exportDb(db); }, + ["import-db"]: function (detail, sender) { + return importDb(db, detail.dump); + }, ["get-tab-cookie"]: function (detail, sender) { if (!sender || !sender.tab || !sender.tab.id) { return Promise.resolve(); @@ -634,6 +637,30 @@ function exportDb(db: IDBDatabase): Promise { }); } + +function importDb(db: IDBDatabase, dump: any): Promise { + console.log("importing db", dump); + return new Promise((resolve, reject) => { + let tx = db.transaction(Array.from(db.objectStoreNames), "readwrite"); + for (let storeName in dump.stores) { + let objects = []; + for (let key in dump.stores[storeName]) { + objects.push(dump.stores[storeName][key]); + } + console.log(`importing ${objects.length} records into ${storeName}`); + let store = tx.objectStore(storeName); + let clearReq = store.clear(); + for (let obj of objects) { + store.put(obj); + } + } + tx.addEventListener("complete", () => { + resolve(); + }); + }); +} + + function deleteDb() { indexedDB.deleteDatabase(DB_NAME); } -- cgit v1.2.3