diff options
Diffstat (limited to 'ext/bg/js/backend.js')
| -rw-r--r-- | ext/bg/js/backend.js | 29 | 
1 files changed, 20 insertions, 9 deletions
| diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js index 2e772aa1..9e7ac76a 100644 --- a/ext/bg/js/backend.js +++ b/ext/bg/js/backend.js @@ -35,8 +35,6 @@   * jp   * profileConditionsDescriptor   * profileConditionsDescriptorPromise - * requestJson - * requestText   */  class Backend { @@ -199,8 +197,8 @@ class Backend {              await profileConditionsDescriptorPromise; -            this._optionsSchema = await requestJson(chrome.runtime.getURL('/bg/data/options-schema.json'), 'GET'); -            this._defaultAnkiFieldTemplates = (await requestText(chrome.runtime.getURL('/bg/data/default-anki-field-templates.handlebars'), 'GET')).trim(); +            this._optionsSchema = await this._fetchAsset('/bg/data/options-schema.json', true); +            this._defaultAnkiFieldTemplates = (await this._fetchAsset('/bg/data/default-anki-field-templates.handlebars')).trim();              this._options = await OptionsUtil.load();              this._options = JsonSchema.getValidValueOrDefault(this._optionsSchema, this._options); @@ -615,7 +613,7 @@ class Backend {          if (!url.startsWith('/') || url.startsWith('//') || !url.endsWith('.css')) {              throw new Error('Invalid URL');          } -        return await requestText(url, 'GET'); +        return await this._fetchAsset(url);      }      _onApiGetEnvironmentInfo() { @@ -653,13 +651,11 @@ class Backend {      }      async _onApiGetDisplayTemplatesHtml() { -        const url = chrome.runtime.getURL('/mixed/display-templates.html'); -        return await requestText(url, 'GET'); +        return await this._fetchAsset('/mixed/display-templates.html');      }      async _onApiGetQueryParserTemplatesHtml() { -        const url = chrome.runtime.getURL('/bg/query-parser-templates.html'); -        return await requestText(url, 'GET'); +        return await this._fetchAsset('/bg/query-parser-templates.html');      }      _onApiGetZoom(params, sender) { @@ -1522,4 +1518,19 @@ class Backend {              }          });      } + +    async _fetchAsset(url, json=false) { +        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 (json ? response.json() : response.text()); +    }  } |