diff --git a/ext/bg/js/yomichan.js b/ext/bg/js/yomichan.js index 0187f76f..1714e778 100644 --- a/ext/bg/js/yomichan.js +++ b/ext/bg/js/yomichan.js @@ -156,6 +156,10 @@ class Yomichan { this.ankiInvoke('modelNames', {}, null, callback); } + api_getModelFieldNames({callback}) { + this.ankiInvoke('modelFieldNames', {}, null, callback); + } + api_getOptions({callback}) { callback(this.options); } diff --git a/ext/bg/options.html b/ext/bg/options.html index cd0710aa..ae7e4257 100644 --- a/ext/bg/options.html +++ b/ext/bg/options.html @@ -100,7 +100,7 @@ Value - + @@ -126,7 +126,7 @@ Value - + diff --git a/ext/fg/js/api.js b/ext/fg/js/api.js index 462eafd1..ecd8dd36 100644 --- a/ext/fg/js/api.js +++ b/ext/fg/js/api.js @@ -17,10 +17,6 @@ */ -// -// Background APIs -// - function bgSendMessage(action, params, callback) { chrome.runtime.sendMessage({action, params}, callback); } diff --git a/ext/fg/js/client.js b/ext/fg/js/client.js index bb25c4e4..932cd10f 100644 --- a/ext/fg/js/client.js +++ b/ext/fg/js/client.js @@ -104,6 +104,7 @@ class Client { } else { const sequence = ++this.sequence; range.setLength(length); + bgRenderText( {defs: definitions, root: this.fgRoot, options: this.options, sequence: sequence}, 'term-list.html', diff --git a/ext/fg/js/frame.js b/ext/fg/js/frame.js index 66d3a054..a61bb9ee 100644 --- a/ext/fg/js/frame.js +++ b/ext/fg/js/frame.js @@ -42,26 +42,25 @@ function onDomContentLoaded() { } function onMessage(e) { - const {action, params} = e.data, handlers = { - setActionState: ({index, state, sequence}) => { - for (const mode in state) { - const matches = document.querySelectorAll(`.action-link[data-sequence="${sequence}"][data-index="${index}"][data-mode="${mode}"]`); - if (matches.length === 0) { - return; - } + const {action, params} = e.data, method = window['api_' + action]; + if (typeof(method) === 'function') { + method(params); + } +} - const classes = matches[0].classList; - if (state[mode]) { - classes.remove('disabled'); - } else { - classes.add('disabled'); - } - } +function api_setActionState({index, state, sequence}) { + for (const mode in state) { + const matches = document.querySelectorAll(`.action-link[data-sequence="${sequence}"][data-index="${index}"][data-mode="${mode}"]`); + if (matches.length === 0) { + return; } - }; - if (handlers.hasOwnProperty(action)) { - handlers[action](params); + const classes = matches[0].classList; + if (state[mode]) { + classes.remove('disabled'); + } else { + classes.add('disabled'); + } } }