diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-11-22 11:19:21 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-22 11:19:21 -0500 |
commit | 7234cce4ae528db3e6177da1dbd499abd3c83837 (patch) | |
tree | ee70e6d7819a6de2d549e44c6319705117545f1c /ext/fg/js/float.js | |
parent | 7b6a4c4e36ce65af376cd87f5f9e7c657ef2a12c (diff) |
Refactor nested popup/frontend setup (#1052)
Diffstat (limited to 'ext/fg/js/float.js')
-rw-r--r-- | ext/fg/js/float.js | 60 |
1 files changed, 1 insertions, 59 deletions
diff --git a/ext/fg/js/float.js b/ext/fg/js/float.js index bc555ffd..195861a3 100644 --- a/ext/fg/js/float.js +++ b/ext/fg/js/float.js @@ -23,8 +23,7 @@ class DisplayFloat extends Display { constructor() { - super(); - this._nestedPopupsPrepared = false; + super('popup'); this._frameEndpoint = new FrameEndpoint(); this._windowMessageHandlers = new Map([ ['extensionUnloaded', {async: false, handler: this._onMessageExtensionUnloaded.bind(this)}] @@ -48,10 +47,6 @@ class DisplayFloat extends Display { const {browser} = await api.getEnvironmentInfo(); this._browser = browser; - this.registerDirectMessageHandlers([ - ['configure', {async: true, handler: this._onMessageConfigure.bind(this)}], - ['setContentScale', {async: false, handler: this._onMessageSetContentScale.bind(this)}] - ]); window.addEventListener('message', this._onWindowMessage.bind(this), false); document.documentElement.addEventListener('mouseup', this._onMouseUp.bind(this), false); document.documentElement.addEventListener('click', this._onClick.bind(this), false); @@ -101,23 +96,6 @@ class DisplayFloat extends Display { yomichan.invokeMessageHandler(messageHandler, params, callback); } - async _onMessageConfigure({frameId, ownerFrameId, popupId, optionsContext, childrenSupported, scale}) { - this.ownerFrameId = ownerFrameId; - await this.setOptionsContext(optionsContext); - - if (childrenSupported && !this._nestedPopupsPrepared) { - const {depth} = optionsContext; - this._prepareNestedPopups(depth + 1, popupId, frameId); - this._nestedPopupsPrepared = true; - } - - this._setContentScale(scale); - } - - _onMessageSetContentScale({scale}) { - this._setContentScale(scale); - } - _onMessageExtensionUnloaded() { if (yomichan.isExtensionUnloaded) { return; } yomichan.triggerExtensionUnloaded(); @@ -200,42 +178,6 @@ class DisplayFloat extends Display { parent.removeChild(textarea); } - _setContentScale(scale) { - const body = document.body; - if (body === null) { return; } - body.style.fontSize = `${scale}em`; - } - - async _prepareNestedPopups(depth, parentPopupId, parentFrameId) { - let complete = false; - - const onOptionsUpdated = async () => { - const optionsContext = this.getOptionsContext(); - const options = await api.optionsGet(optionsContext); - const maxPopupDepthExceeded = !(typeof depth === 'number' && depth <= options.scanning.popupNestingMaxDepth); - if (maxPopupDepthExceeded || complete) { return; } - - complete = true; - yomichan.off('optionsUpdated', onOptionsUpdated); - - try { - await this.setupNestedPopups({ - depth, - parentPopupId, - parentFrameId, - useProxyPopup: true, - pageType: 'popup' - }); - } catch (e) { - yomichan.logError(e); - } - }; - - yomichan.on('optionsUpdated', onOptionsUpdated); - - await onOptionsUpdated(); - } - _invokeOwner(action, params={}) { return api.crossFrame.invoke(this.ownerFrameId, action, params); } |