diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/fg/js/client.js | 7 | ||||
-rw-r--r-- | ext/fg/js/frame.js | 25 |
2 files changed, 18 insertions, 14 deletions
diff --git a/ext/fg/js/client.js b/ext/fg/js/client.js index aea2d607..11190869 100644 --- a/ext/fg/js/client.js +++ b/ext/fg/js/client.js @@ -112,7 +112,9 @@ class Client { (content) => { this.definitions = definitions; this.showPopup(range, content); - canAddNotes(definitions, (states) => this.popup.sendMessage('setActionStates', states)); + canAddNotes(definitions, (states) => { + states.forEach((state, index) => this.popup.sendMessage('setActionState', {index: index, state: state})); + }); } ); } @@ -120,7 +122,10 @@ class Client { } actionAddNote(mode, index, callback) { + const state = {}; + state[mode] = false; + this.popup.sendMessage('setActionState', {index: index, state: state}); } actionDisplayKanji(kanji) { diff --git a/ext/fg/js/frame.js b/ext/fg/js/frame.js index 5a910dfc..38848bfc 100644 --- a/ext/fg/js/frame.js +++ b/ext/fg/js/frame.js @@ -43,19 +43,18 @@ function onDomContentLoaded() { function onMessage(e) { const {action, params} = e.data, handlers = { - setActionStates: (states) => { - for (let i = 0, count = states.length; i < count; ++i) { - const state = states[i]; - for (const mode in state) { - const matches = document.querySelectorAll(`.action-link[data-index="${i}"][data-mode="${mode}"]`); - if (matches.length > 0) { - const classes = matches[0].classList; - if (state[mode]) { - classes.remove('disabled'); - } else { - classes.add('disabled'); - } - } + setActionState: ({index, state}) => { + for (const mode in state) { + const matches = document.querySelectorAll(`.action-link[data-index="${index}"][data-mode="${mode}"]`); + if (matches.length === 0) { + return; + } + + const classes = matches[0].classList; + if (state[mode]) { + classes.remove('disabled'); + } else { + classes.add('disabled'); } } } |