From c26680fd7399e8e1fb5e3c10a3f72f592d59e370 Mon Sep 17 00:00:00 2001 From: Birudo un Date: Mon, 18 Mar 2024 20:29:53 +0800 Subject: feat: support skipping already import dictionaries (#769) --- ext/js/pages/settings/dictionary-import-controller.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'ext/js/pages') 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} */ 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); -- cgit v1.2.3