diff options
Diffstat (limited to 'ext/js/pages/settings/dictionary-import-controller.js')
-rw-r--r-- | ext/js/pages/settings/dictionary-import-controller.js | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/ext/js/pages/settings/dictionary-import-controller.js b/ext/js/pages/settings/dictionary-import-controller.js index 64d94a52..f63eb49e 100644 --- a/ext/js/pages/settings/dictionary-import-controller.js +++ b/ext/js/pages/settings/dictionary-import-controller.js @@ -149,6 +149,8 @@ export class DictionaryImportController { const prevention = this._preventPageExit(); + /** @type {Error[]} */ + let errors = []; try { this._setModifying(true); this._hideErrors(); @@ -196,12 +198,12 @@ export class DictionaryImportController { count: 0 }); if (statusFooter !== null) { statusFooter.setTaskActive(progressSelector, true); } - - await this._importDictionary(files[i], importDetails, onProgress); + errors = [...errors, ...(await this._importDictionary(files[i], importDetails, onProgress) ?? [])]; } } catch (error) { - this._showErrors([toError(error)]); + errors.push(toError(error)); } finally { + this._showErrors(errors); prevention.end(); for (const progress of progressContainers) { progress.hidden = true; } if (statusFooter !== null) { statusFooter.setTaskActive(progressSelector, false); } @@ -231,10 +233,15 @@ export class DictionaryImportController { * @param {File} file * @param {import('dictionary-importer').ImportDetails} importDetails * @param {import('dictionary-worker').ImportProgressCallback} onProgress + * @returns {Promise<Error[] | undefined>} */ async _importDictionary(file, importDetails, onProgress) { const archiveContent = await this._readFile(file); const {result, errors} = await new DictionaryWorker().importDictionary(archiveContent, importDetails, onProgress); + if (!result) { + return errors; + } + void this._settingsController.application.api.triggerDatabaseUpdated('dictionary', 'import'); const errors2 = await this._addDictionarySettings(result.sequenced, result.title); |