diff --git a/ext/bg/js/database.js b/ext/bg/js/database.js index 469b1311..9e90e6de 100644 --- a/ext/bg/js/database.js +++ b/ext/bg/js/database.js @@ -233,7 +233,7 @@ class Database { throw 'Database not initialized'; } - const indexDataLoaded = async summary => { + const indexDataValid = async summary => { if (summary.version > 2) { throw 'Unsupported dictionary version'; } @@ -242,7 +242,9 @@ class Database { if (count > 0) { throw 'Dictionary is already imported'; } + }; + const indexDataLoaded = async summary => { await this.db.dictionaries.add(summary); }; @@ -280,6 +282,8 @@ class Database { } } + summary.hasSequences = rows.every(row => row.sequence >= 0); + await this.db.terms.bulkAdd(rows); }; @@ -377,6 +381,7 @@ class Database { return await Database.importDictionaryZip( archive, + indexDataValid, indexDataLoaded, termDataLoaded, termMetaDataLoaded, @@ -388,6 +393,7 @@ class Database { static async importDictionaryZip( archive, + indexDataValid, indexDataLoaded, termDataLoaded, termMetaDataLoaded, @@ -413,9 +419,7 @@ class Database { version: index.format || index.version }; - if (indexDataLoaded) { - await indexDataLoaded(summary); - } + await indexDataValid(summary); const buildTermBankName = index => `term_bank_${index + 1}.json`; const buildTermMetaBankName = index => `term_meta_bank_${index + 1}.json`; @@ -472,6 +476,10 @@ class Database { await loadBank(summary, buildKanjiMetaBankName, kanjiMetaBankCount, kanjiMetaDataLoaded); await loadBank(summary, buildTagBankName, tagBankCount, tagDataLoaded); + if (indexDataLoaded) { + await indexDataLoaded(summary); + } + return summary; } }