diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js index ebdd2cda..65df0d49 100644 --- a/ext/bg/js/backend.js +++ b/ext/bg/js/backend.js @@ -186,7 +186,9 @@ class Backend { } catch (e) { yomichan.logError(e); } - await this._translator.prepare(); + + const deinflectionReasions = await this._fetchAsset('/bg/lang/deinflect.json', true); + this._translator.prepare(deinflectionReasions); await this._optionsUtil.prepare(); this._defaultAnkiFieldTemplates = (await this._fetchAsset('/bg/data/default-anki-field-templates.handlebars')).trim(); diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index 7af3f61f..3dbae411 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -38,11 +38,11 @@ class Translator { /** * Initializes the instance for use. The public API should not be used until - * this function has been called and await'd. + * this function has been called. + * @param deinflectionReasons The raw deinflections reasons data that the Deinflector uses. */ - async prepare() { - const reasons = await this._fetchJsonAsset('/bg/lang/deinflect.json'); - this._deinflector = new Deinflector(reasons); + prepare(deinflectionReasons) { + this._deinflector = new Deinflector(deinflectionReasons); } /** @@ -747,21 +747,6 @@ class Translator { return newText; } - async _fetchJsonAsset(url) { - const response = await fetch(chrome.runtime.getURL(url), { - method: 'GET', - mode: 'no-cors', - cache: 'default', - credentials: 'omit', - redirect: 'follow', - referrerPolicy: 'no-referrer' - }); - if (!response.ok) { - throw new Error(`Failed to fetch ${url}: ${response.status}`); - } - return await response.json(); - } - _getSecondarySearchDictionaryMap(enabledDictionaryMap) { const secondarySearchDictionaryMap = new Map(); for (const [title, dictionary] of enabledDictionaryMap.entries()) {