diff options
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/bg/background.html | 1 | ||||
| -rw-r--r-- | ext/bg/js/anki-connect.js | 2 | ||||
| -rw-r--r-- | ext/bg/js/translator.js | 2 | ||||
| -rw-r--r-- | ext/bg/js/util.js | 40 | ||||
| -rw-r--r-- | ext/bg/js/yomichan.js | 8 | ||||
| -rw-r--r-- | ext/bg/popup.html | 1 | ||||
| -rw-r--r-- | ext/bg/search.html | 1 | ||||
| -rw-r--r-- | ext/bg/settings.html | 1 | ||||
| -rw-r--r-- | ext/mixed/js/request.js | 40 | 
9 files changed, 54 insertions, 42 deletions
| diff --git a/ext/bg/background.html b/ext/bg/background.html index 61bc17a0..7d352561 100644 --- a/ext/bg/background.html +++ b/ext/bg/background.html @@ -14,6 +14,7 @@          <script src="/bg/js/handlebars.js"></script>          <script src="/bg/js/dictionary.js"></script>          <script src="/mixed/js/japanese.js"></script> +        <script src="/mixed/js/request.js"></script>          <script src="/bg/js/options.js"></script>          <script src="/bg/js/anki-connect.js"></script>          <script src="/bg/js/anki-null.js"></script> diff --git a/ext/bg/js/anki-connect.js b/ext/bg/js/anki-connect.js index a4d8ba3f..567e8d3f 100644 --- a/ext/bg/js/anki-connect.js +++ b/ext/bg/js/anki-connect.js @@ -64,6 +64,6 @@ class AnkiConnect {      }      ankiInvoke(action, params) { -        return jsonRequest(this.server, 'POST', {action, params, version: this.localVersion}); +        return requestJson(this.server, 'POST', {action, params, version: this.localVersion});      }  } diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index 9232e529..1be485c7 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -31,7 +31,7 @@ class Translator {          if (!this.deinflector) {              const url = chrome.extension.getURL('/bg/lang/deinflect.json'); -            const reasons = await jsonRequest(url, 'GET'); +            const reasons = await requestJson(url, 'GET');              this.deinflector = new Deinflector(reasons);          }      } diff --git a/ext/bg/js/util.js b/ext/bg/js/util.js index 6e86c2a6..c7ebbb0e 100644 --- a/ext/bg/js/util.js +++ b/ext/bg/js/util.js @@ -18,19 +18,6 @@  /* - * Promise - */ - -function promiseCallback(promise, callback) { -    return promise.then(result => { -        callback({result}); -    }).catch(error => { -        callback({error}); -    }); -} - - -/*   * Commands   */ @@ -71,30 +58,3 @@ function fgBroadcast(action, params) {  function fgOptionsSet(options) {      fgBroadcast('optionsSet', options);  } - - -/* - * JSON - */ - -function jsonRequest(url, action, params) { -    return new Promise((resolve, reject) => { -        const xhr = new XMLHttpRequest(); -        xhr.overrideMimeType('application/json'); -        xhr.addEventListener('load', () => resolve(xhr.responseText)); -        xhr.addEventListener('error', () => reject('failed to execute network request')); -        xhr.open(action, url); -        if (params) { -            xhr.send(JSON.stringify(params)); -        } else { -            xhr.send(); -        } -    }).then(responseText => { -        try { -            return JSON.parse(responseText); -        } -        catch (e) { -            return Promise.reject('invalid JSON response'); -        } -    }); -} diff --git a/ext/bg/js/yomichan.js b/ext/bg/js/yomichan.js index acc560ce..eb083396 100644 --- a/ext/bg/js/yomichan.js +++ b/ext/bg/js/yomichan.js @@ -195,6 +195,14 @@ window.yomichan = new class {      }      onMessage({action, params}, sender, callback) { +        const promiseCallback = (promise, callback) => { +            return promise.then(result => { +                callback({result}); +            }).catch(error => { +                callback({error}); +            }); +        }; +          const handlers = {              optionsGet: ({callback}) => {                  promiseCallback(optionsLoad(), callback); diff --git a/ext/bg/popup.html b/ext/bg/popup.html index db9097bd..b3d38533 100644 --- a/ext/bg/popup.html +++ b/ext/bg/popup.html @@ -32,6 +32,7 @@          <script src="/mixed/lib/handlebars.min.js"></script>          <script src="/bg/js/util.js"></script>          <script src="/bg/js/dictionary.js"></script> +        <script src="/mixed/js/request.js"></script>          <script src="/mixed/js/japanese.js"></script>          <script src="/bg/js/options.js"></script>          <script src="/bg/js/popup.js"></script> diff --git a/ext/bg/search.html b/ext/bg/search.html index b30b8910..45603f17 100644 --- a/ext/bg/search.html +++ b/ext/bg/search.html @@ -35,6 +35,7 @@          <script src="/mixed/lib/jquery.min.js"></script>          <script src="/bg/js/util.js"></script>          <script src="/bg/js/dictionary.js"></script> +        <script src="/mixed/js/request.js"></script>          <script src="/mixed/js/japanese.js"></script>          <script src="/mixed/js/audio.js"></script>          <script src="/mixed/js/display.js"></script> diff --git a/ext/bg/settings.html b/ext/bg/settings.html index 9b21b4d8..4c7198c3 100644 --- a/ext/bg/settings.html +++ b/ext/bg/settings.html @@ -280,6 +280,7 @@          <script src="/bg/js/handlebars.js"></script>          <script src="/bg/js/dictionary.js"></script>          <script src="/mixed/js/japanese.js"></script> +        <script src="/mixed/js/request.js"></script>          <script src="/bg/js/options.js"></script>          <script src="/bg/js/settings.js"></script>      </body> diff --git a/ext/mixed/js/request.js b/ext/mixed/js/request.js new file mode 100644 index 00000000..94fd135a --- /dev/null +++ b/ext/mixed/js/request.js @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2017  Alex Yatskov <alex@foosoft.net> + * Author: Alex Yatskov <alex@foosoft.net> + * + * 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 <http://www.gnu.org/licenses/>. + */ + + +function requestJson(url, action, params) { +    return new Promise((resolve, reject) => { +        const xhr = new XMLHttpRequest(); +        xhr.overrideMimeType('application/json'); +        xhr.addEventListener('load', () => resolve(xhr.responseText)); +        xhr.addEventListener('error', () => reject('failed to execute network request')); +        xhr.open(action, url); +        if (params) { +            xhr.send(JSON.stringify(params)); +        } else { +            xhr.send(); +        } +    }).then(responseText => { +        try { +            return JSON.parse(responseText); +        } +        catch (e) { +            return Promise.reject('invalid JSON response'); +        } +    }); +} |