diff options
| author | siikamiika <siikamiika@users.noreply.github.com> | 2020-04-26 22:33:50 +0300 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-26 22:33:50 +0300 | 
| commit | ca033a87a0d302151b430acfdf9d480514c14aed (patch) | |
| tree | ebb783c7bd371a6859c25009a57799d70ac73bac /ext/fg/js/popup.js | |
| parent | a49e4ccc4e5c7defb30bd88535c18137acf9812c (diff) | |
Update Popup and DisplayFloat optionsContext from Frontend (#464)
* set optionsContext from Frontend
* update Popup+Display options on Frontend change
* remove popup setOptions
* only update DisplayFloat options from Frontend
* fix optionsContext usage
* fix preview frame arguments
* keep Frontend URL up to date
* cache url
* fix preview frame
* trigger modifyingProfileChange in correct places
* remove async from function not using await
* refactor optionsContext in Frontend
Diffstat (limited to 'ext/fg/js/popup.js')
| -rw-r--r-- | ext/fg/js/popup.js | 27 | 
1 files changed, 18 insertions, 9 deletions
| diff --git a/ext/fg/js/popup.js b/ext/fg/js/popup.js index ae158263..e735431b 100644 --- a/ext/fg/js/popup.js +++ b/ext/fg/js/popup.js @@ -19,6 +19,7 @@   * DOM   * apiGetMessageToken   * apiInjectStylesheet + * apiOptionsGet   */  class Popup { @@ -33,10 +34,12 @@ class Popup {          this._visible = false;          this._visibleOverride = null;          this._options = null; +        this._optionsContext = null;          this._contentScale = 1.0;          this._containerSizeContentScale = null;          this._targetOrigin = chrome.runtime.getURL('/').replace(/\/$/, '');          this._messageToken = null; +        this._previousOptionsContextSource = null;          this._container = document.createElement('iframe');          this._container.className = 'yomichan-float'; @@ -72,19 +75,20 @@ class Popup {          return this._frameId;      } -    get url() { -        return window.location.href; -    } -      // Public functions      isProxy() {          return false;      } -    async setOptions(options) { -        this._options = options; +    async setOptionsContext(optionsContext, source) { +        this._optionsContext = optionsContext; +        this._previousOptionsContextSource = source; + +        this._options = await apiOptionsGet(optionsContext);          this.updateTheme(); + +        this._invokeApi('setOptionsContext', {optionsContext});      }      hide(changeFocus) { @@ -120,8 +124,14 @@ class Popup {          return false;      } -    async showContent(elementRect, writingMode, type=null, details=null) { +    async showContent(elementRect, writingMode, type, details, context) {          if (this._options === null) { throw new Error('Options not assigned'); } + +        const {optionsContext, source} = context; +        if (source !== this._previousOptionsContextSource) { +            await this.setOptionsContext(optionsContext, source); +        } +          await this._show(elementRect, writingMode);          if (type === null) { return; }          this._invokeApi('setContent', {type, details}); @@ -219,10 +229,9 @@ class Popup {              this._invokeApi('prepare', {                  popupInfo: {                      id: this._id, -                    depth: this._depth,                      parentFrameId                  }, -                url: this.url, +                optionsContext: this._optionsContext,                  childrenSupported: this._childrenSupported,                  scale: this._contentScale              }); |