diff options
Diffstat (limited to 'ext/fg/js')
| -rw-r--r-- | ext/fg/js/api.js | 14 | ||||
| -rw-r--r-- | ext/fg/js/client.js | 77 | 
2 files changed, 43 insertions, 48 deletions
| diff --git a/ext/fg/js/api.js b/ext/fg/js/api.js index 05db4618..462eafd1 100644 --- a/ext/fg/js/api.js +++ b/ext/fg/js/api.js @@ -22,27 +22,27 @@  //  function bgSendMessage(action, params, callback) { -    chrome.runtime.sendMessage({action: action, params: params}, callback); +    chrome.runtime.sendMessage({action, params}, callback);  }  function bgFindTerm(text, callback) { -    bgSendMessage('findTerm', text, callback); +    bgSendMessage('findTerm', {text}, callback);  }  function bgFindKanji(text, callback) { -    bgSendMessage('findKanji', text, callback); +    bgSendMessage('findKanji', {text}, callback);  }  function bgRenderText(data, template, callback) { -    bgSendMessage('renderText', {data: data, template: template}, callback); +    bgSendMessage('renderText', {data, template}, callback);  }  function bgGetOptions(callback) { -    bgSendMessage('getOptions', null, callback); +    bgSendMessage('getOptions', {}, callback);  }  function bgGetState(callback) { -    bgSendMessage('getState', null, callback); +    bgSendMessage('getState', {}, callback);  }  function bgCanAddNotes(definitions, modes, callback) { @@ -50,5 +50,5 @@ function bgCanAddNotes(definitions, modes, callback) {  }  function bgAddNote(definition, mode, callback) { -    bgSendMessage('addNote', {definition: definition, mode: mode}, callback); +    bgSendMessage('addNote', {definition, mode}, callback);  } diff --git a/ext/fg/js/client.js b/ext/fg/js/client.js index 5878a5c6..bb25c4e4 100644 --- a/ext/fg/js/client.js +++ b/ext/fg/js/client.js @@ -80,13 +80,9 @@ class Client {      }      onFrameMessage(e) { -        const {action, params} = e.data, handlers = { -            addNote:      ({mode, index}) => this.actionAddNote(index, mode, (data) => e.source.postMessage(data, e.origin)), -            displayKanji: this.actionDisplayKanji -        }; - -        if (handlers.hasOwnProperty(action)) { -            handlers[action].call(this, params); +        const {action, params} = e.data, method = this['api_' + action]; +        if (typeof(method) === 'function') { +            method.call(this, params);          }      } @@ -126,40 +122,6 @@ class Client {          });      } -    actionAddNote(index, mode, callback) { -        const state = {}; -        state[mode] = false; - -        bgAddNote(this.definitions[index], mode, (success) => { -            if (success) { -                this.popup.sendMessage('setActionState', {index: index, state: state, sequence: this.sequence}); -            } else { -                alert('Note could not be added'); -            } -        }); - -    } - -    actionDisplayKanji(kanji) { -        bgFindKanji(kanji, (definitions) => { -            const sequence = ++this.sequence; -            bgRenderText( -                {defs: definitions, root: this.fgRoot, options: this.options, sequence: sequence}, -                'kanji-list.html', -                (content) => { -                    this.definitions = definitions; -                    this.popup.setContent(content, definitions); - -                    bgCanAddNotes(definitions, ['kanji'], (states) => { -                        if (states !== null) { -                            states.forEach((state, index) => this.popup.sendMessage('setActionState', {index: index, state: state, sequence: sequence})); -                        } -                    }); -                } -            ); -        }); -    } -      showPopup(range, content) {          this.popup.showNextTo(range.getRect(), content); @@ -190,6 +152,39 @@ class Client {      setOptions(opts) {          this.options = opts;      } + +    api_addNote({index, mode}) { +        const state = {}; +        state[mode] = false; + +        bgAddNote(this.definitions[index], mode, (success) => { +            if (success) { +                this.popup.sendMessage('setActionState', {index: index, state: state, sequence: this.sequence}); +            } else { +                alert('Note could not be added'); +            } +        }); +    } + +    api_displayKanji(kanji) { +        bgFindKanji(kanji, (definitions) => { +            const sequence = ++this.sequence; +            bgRenderText( +                {defs: definitions, root: this.fgRoot, options: this.options, sequence: sequence}, +                'kanji-list.html', +                (content) => { +                    this.definitions = definitions; +                    this.popup.setContent(content, definitions); + +                    bgCanAddNotes(definitions, ['kanji'], (states) => { +                        if (states !== null) { +                            states.forEach((state, index) => this.popup.sendMessage('setActionState', {index: index, state: state, sequence: sequence})); +                        } +                    }); +                } +            ); +        }); +    }  }  window.yomiClient = new Client(); |