diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2021-08-28 14:22:16 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-28 14:22:16 -0400 |
commit | 74709296e557dfeab2e465f8bd53681934fe8040 (patch) | |
tree | 7b5603ad6da96697edc8934159a3d7b42d466a66 /ext/js/language/dictionary-database-modifier.js | |
parent | 93f193c89eea381046f00f3a586beb66b2de0b19 (diff) |
Dictionary database worker refactoring (#1913)
* Rename DictionaryWorker => DictionaryWorkerHandler
* Rename var
* Rename file
* Simplify
* Rename DictionaryDatabaseModifier => DictionaryWorker
* Rename dictionary-database-modifier.js => dictionary-worker.js
Diffstat (limited to 'ext/js/language/dictionary-database-modifier.js')
-rw-r--r-- | ext/js/language/dictionary-database-modifier.js | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/ext/js/language/dictionary-database-modifier.js b/ext/js/language/dictionary-database-modifier.js deleted file mode 100644 index 055c4769..00000000 --- a/ext/js/language/dictionary-database-modifier.js +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (C) 2021 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <https://www.gnu.org/licenses/>. - */ - -/* global - * DictionaryImporterMediaLoader - */ - -class DictionaryDatabaseModifier { - constructor() { - this._dictionaryImporterMediaLoader = new DictionaryImporterMediaLoader(); - } - - importDictionary(archiveContent, details, onProgress) { - return this._invoke( - 'importDictionary', - {details, archiveContent}, - [archiveContent], - onProgress, - this._formatimportDictionaryResult.bind(this) - ); - } - - deleteDictionary(dictionaryTitle, onProgress) { - return this._invoke('deleteDictionary', {dictionaryTitle}, [], onProgress); - } - - // Private - - _invoke(action, params, transfer, onProgress, formatResult) { - return new Promise((resolve, reject) => { - const worker = new Worker('/js/language/dictionary-worker-main.js', {}); - const details = { - complete: false, - worker, - resolve, - reject, - onMessage: null, - onProgress, - formatResult - }; - const onMessage = this._onMessage.bind(this, details); - details.onMessage = onMessage; - worker.addEventListener('message', onMessage); - worker.postMessage({action, params}, transfer); - }); - } - - _onMessage(details, e) { - if (details.complete) { return; } - const {action, params} = e.data; - switch (action) { - case 'complete': - { - const {worker, resolve, reject, onMessage, formatResult} = details; - details.complete = true; - details.worker = null; - details.resolve = null; - details.reject = null; - details.onMessage = null; - details.onProgress = null; - details.formatResult = null; - worker.removeEventListener('message', onMessage); - worker.terminate(); - this._onMessageComplete(params, resolve, reject, formatResult); - } - break; - case 'progress': - this._onMessageProgress(params, details.onProgress); - break; - case 'getImageResolution': - this._onMessageGetImageResolution(params, details.worker); - break; - } - } - - _onMessageComplete(params, resolve, reject, formatResult) { - const {error} = params; - if (typeof error !== 'undefined') { - reject(deserializeError(error)); - } else { - let {result} = params; - try { - if (typeof formatResult === 'function') { - result = formatResult(result); - } - } catch (e) { - reject(e); - return; - } - resolve(result); - } - } - - _onMessageProgress(params, onProgress) { - if (typeof onProgress !== 'function') { return; } - const {args} = params; - onProgress(...args); - } - - async _onMessageGetImageResolution(params, worker) { - const {id, mediaType, content} = params; - let response; - try { - const result = await this._dictionaryImporterMediaLoader.getImageResolution(mediaType, content); - response = {id, result}; - } catch (e) { - response = {id, error: serializeError(e)}; - } - worker.postMessage({action: 'getImageResolution.response', params: response}); - } - - _formatimportDictionaryResult(result) { - result.errors = result.errors.map((error) => deserializeError(error)); - return result; - } -} |