diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-12-08 15:52:34 -0500 | 
|---|---|---|
| committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-12-08 16:01:29 -0500 | 
| commit | 2dad7f888b77c7c0293512076b719026f6b95de9 (patch) | |
| tree | bfa67f43cebaee618e6f3c4f178db69e53a6dd05 | |
| parent | 0156869a3d8c4236594035e072b084b7c2ea8f16 (diff) | |
Update how errors are reported when importing a dictionary
| -rw-r--r-- | ext/bg/js/database.js | 13 | ||||
| -rw-r--r-- | ext/bg/js/settings/dictionaries.js | 16 | ||||
| -rw-r--r-- | ext/bg/js/util.js | 4 | 
3 files changed, 16 insertions, 17 deletions
| diff --git a/ext/bg/js/database.js b/ext/bg/js/database.js index 2f624189..5aee2311 100644 --- a/ext/bg/js/database.js +++ b/ext/bg/js/database.js @@ -332,9 +332,10 @@ class Database {          return result;      } -    async importDictionary(archive, progressCallback, exceptions, details) { +    async importDictionary(archive, progressCallback, details) {          this.validate(); +        const errors = [];          const prefixWildcardsSupported = details.prefixWildcardsSupported;          const maxTransactionLength = 1000; @@ -351,11 +352,7 @@ class Database {                      const objectStore = transaction.objectStore(objectStoreName);                      await Database.bulkAdd(objectStore, items, i, count);                  } catch (e) { -                    if (exceptions) { -                        exceptions.push(e); -                    } else { -                        throw e; -                    } +                    errors.push(e);                  }              }          }; @@ -496,7 +493,7 @@ class Database {              await bulkAdd('tagMeta', rows, total, current);          }; -        return await Database.importDictionaryZip( +        const result = await Database.importDictionaryZip(              archive,              indexDataLoaded,              termDataLoaded, @@ -506,6 +503,8 @@ class Database {              tagDataLoaded,              details          ); + +        return {result, errors};      }      validate() { diff --git a/ext/bg/js/settings/dictionaries.js b/ext/bg/js/settings/dictionaries.js index b5e663ea..a7205ae5 100644 --- a/ext/bg/js/settings/dictionaries.js +++ b/ext/bg/js/settings/dictionaries.js @@ -577,7 +577,6 @@ async function onDictionaryImport(e) {              }          }; -        const exceptions = [];          const files = [...e.target.files];          const optionsFull = await apiOptionsGetFull(); @@ -593,21 +592,22 @@ async function onDictionaryImport(e) {                  dictImportInfo.textContent = `(${i + 1} of ${ii})`;              } -            const summary = await utilDatabaseImport(files[i], updateProgress, exceptions, importDetails); +            const {result, errors} = await utilDatabaseImport(files[i], updateProgress, importDetails);              for (const options of toIterable(await getOptionsArray())) {                  const dictionaryOptions = SettingsDictionaryListUI.createDictionaryOptions();                  dictionaryOptions.enabled = true; -                options.dictionaries[summary.title] = dictionaryOptions; -                if (summary.sequenced && options.general.mainDictionary === '') { -                    options.general.mainDictionary = summary.title; +                options.dictionaries[result.title] = dictionaryOptions; +                if (result.sequenced && options.general.mainDictionary === '') { +                    options.general.mainDictionary = result.title;                  }              }              await settingsSaveOptions(); -            if (exceptions.length > 0) { -                exceptions.push(`Dictionary may not have been imported properly: ${exceptions.length} error${exceptions.length === 1 ? '' : 's'} reported.`); -                dictionaryErrorsShow(exceptions); +            if (errors.length > 0) { +                errors.push(...errors); +                errors.push(`Dictionary may not have been imported properly: ${errors.length} error${errors.length === 1 ? '' : 's'} reported.`); +                dictionaryErrorsShow(errors);              }              const optionsContext = getOptionsContext(); diff --git a/ext/bg/js/util.js b/ext/bg/js/util.js index 93bb7047..fedfa466 100644 --- a/ext/bg/js/util.js +++ b/ext/bg/js/util.js @@ -106,13 +106,13 @@ function utilDatabaseDeleteDictionary(dictionaryName, onProgress) {      return utilBackend().translator.database.deleteDictionary(dictionaryName, onProgress);  } -async function utilDatabaseImport(data, progress, exceptions, details) { +async function utilDatabaseImport(data, progress, details) {      // Edge cannot read data on the background page due to the File object      // being created from a different window. Read on the same page instead.      if (EXTENSION_IS_BROWSER_EDGE) {          data = await utilReadFile(data);      } -    return utilBackend().translator.database.importDictionary(data, progress, exceptions, details); +    return utilBackend().translator.database.importDictionary(data, progress, details);  }  function utilReadFile(file) { |