diff --git a/ext/api.js b/ext/api.js index 0b92cde0..6e9d6f4f 100644 --- a/ext/api.js +++ b/ext/api.js @@ -17,6 +17,10 @@ */ -function findTerm(text, callback) { - window.chrome.runtime.sendMessage({action: 'define', text: text}, callback); +function sendMessage(action, data, callback) { + window.chrome.runtime.sendMessage({action: action, data: data}, callback); +} + +function findTerm(text, callback) { + sendMessage('findTerm', {term: text}, callback); } diff --git a/ext/content.js b/ext/content.js index 5ff0031e..72e45337 100644 --- a/ext/content.js +++ b/ext/content.js @@ -53,4 +53,7 @@ function onMouseDown(e) { }); } -window.addEventListener('mousedown', onMouseDown, false); + +(() => { + window.addEventListener('mousedown', onMouseDown, false); +})(); diff --git a/ext/jp/api.js b/ext/jp/api.js index 3f15056a..95c2f7e3 100644 --- a/ext/jp/api.js +++ b/ext/jp/api.js @@ -17,11 +17,22 @@ */ +function onFindTerm({term}) { + return window.trans.findTerm(term); +} + function onMessage(request, sender, callback) { - switch (request.action.toLowerCase()) { - case 'define': - callback(window.trans.findTerm(request.text)); - break; + const {action, data} = request; + + const handler = { + findTerm: onFindTerm + }[action]; + + if (handler !== null) { + const result = handler(data); + if (callback !== null) { + callback(result); + } } } @@ -33,7 +44,8 @@ function onMessage(request, sender, callback) { kanjidic: 'jp/data/kanjidic.json' }; - window.trans = new Translator(res, function() { - chrome.runtime.onMessage.addListener(onMessage); - }); + window.trans = new Translator( + res, + () => chrome.runtime.onMessage.addListener(onMessage) + ); })();