From 638fe54c2a947347c304b39421c8ea8e0503f274 Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Mon, 7 Nov 2016 22:12:18 -0800 Subject: Prevent duplicate import --- ext/bg/js/database.js | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/ext/bg/js/database.js b/ext/bg/js/database.js index 79a0a7a1..50a6ecd7 100644 --- a/ext/bg/js/database.js +++ b/ext/bg/js/database.js @@ -161,19 +161,21 @@ class Database { } const indexLoaded = (title, version, entities, hasTerms, hasKanji) => { - return this.db.dictionaries.add({title, version, hasTerms, hasKanji}).then(() => { - this.entities = entities || {}; - - const rows = []; - for (const name in entities || {}) { - rows.push({ - name, - value: entities[name], - dictionary: title - }); + return this.db.dictionaries.where('title').equals(title).count().then(count => { + if (count > 0) { + return Promise.reject(`dictionary "${title}" is already imported`); } - return this.db.entities.bulkAdd(rows); + return this.db.dictionaries.add({title, version, hasTerms, hasKanji}).then(() => { + this.entities = entities || {}; + + const rows = []; + for (const name in entities || {}) { + rows.push({name, value: entities[name], dictionary: title}); + } + + return this.db.entities.bulkAdd(rows); + }); }); }; -- cgit v1.2.3