diff options
Diffstat (limited to 'ext/fg')
-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(); |