From 10cfd798df283cdac131bb79dda2954f90210cc8 Mon Sep 17 00:00:00 2001 From: Mickael Kerjean Date: Tue, 7 Aug 2018 10:19:24 +1000 Subject: [PATCH] bugfix (indexedDB): flushing a non existing db would throw a critical error ... #97 --- client/helpers/cache.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/client/helpers/cache.js b/client/helpers/cache.js index ecb0d9e9..8ea6177b 100644 --- a/client/helpers/cache.js +++ b/client/helpers/cache.js @@ -7,9 +7,11 @@ function Data(){ this._init(); } +const DB_VERSION = 2; + Data.prototype._init = function(){ - const request = indexedDB.open('nuage', 2); - request.onupgradeneeded = (e) => this._setup(e.target.result); + const request = indexedDB.open('nuage', DB_VERSION); + request.onupgradeneeded = (e) => this._setup(e); this.db = new Promise((done, err) => { request.onsuccess = (e) => { @@ -21,10 +23,16 @@ Data.prototype._init = function(){ }); } -Data.prototype._setup = function(db){ +Data.prototype._setup = function(e){ let store; - db.deleteObjectStore(this.FILE_PATH); - db.deleteObjectStore(this.FILE_CONTENT); + let db = e.target.result; + + if(e.oldVersion == 1){ + // we've change the schema on v2 adding an index, let's flush + // to make sure everything will be fine + db.deleteObjectStore(this.FILE_PATH); + db.deleteObjectStore(this.FILE_CONTENT); + } store = db.createObjectStore(this.FILE_PATH, {keyPath: "path"}); store.createIndex("idx_path", "path", { unique: true });