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/content-script-main.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/content-script-main.js')
| -rw-r--r-- | ext/fg/js/content-script-main.js | 31 | 
1 files changed, 23 insertions, 8 deletions
diff --git a/ext/fg/js/content-script-main.js b/ext/fg/js/content-script-main.js index 14285536..0b852644 100644 --- a/ext/fg/js/content-script-main.js +++ b/ext/fg/js/content-script-main.js @@ -25,7 +25,7 @@   * apiOptionsGet   */ -async function createIframePopupProxy(url, frameOffsetForwarder, setDisabled) { +async function createIframePopupProxy(frameOffsetForwarder, setDisabled) {      const rootPopupInformationPromise = yomichan.getTemporaryListenerResult(          chrome.runtime.onMessage,          ({action, params}, {resolve}) => { @@ -39,7 +39,7 @@ async function createIframePopupProxy(url, frameOffsetForwarder, setDisabled) {      const getFrameOffset = frameOffsetForwarder.getOffset.bind(frameOffsetForwarder); -    const popup = new PopupProxy(popupId, 0, null, frameId, url, getFrameOffset, setDisabled); +    const popup = new PopupProxy(popupId, 0, null, frameId, getFrameOffset, setDisabled);      await popup.prepare();      return popup; @@ -54,8 +54,8 @@ async function getOrCreatePopup(depth) {      return popup;  } -async function createPopupProxy(depth, id, parentFrameId, url) { -    const popup = new PopupProxy(null, depth + 1, id, parentFrameId, url); +async function createPopupProxy(depth, id, parentFrameId) { +    const popup = new PopupProxy(null, depth + 1, id, parentFrameId);      await popup.prepare();      return popup; @@ -86,8 +86,22 @@ async function createPopupProxy(depth, id, parentFrameId, url) {          applyOptions();      }; +    let urlUpdatedAt = 0; +    let proxyHostUrlCached = url; +    const getProxyHostUrl = async () => { +        const now = Date.now(); +        if (popups.proxy !== null && now - urlUpdatedAt > 500) { +            proxyHostUrlCached = await popups.proxy.getHostUrl(); +            urlUpdatedAt = now; +        } +        return proxyHostUrlCached; +    }; +      const applyOptions = async () => { -        const optionsContext = {depth: isSearchPage ? 0 : depth, url}; +        const optionsContext = { +            depth: isSearchPage ? 0 : depth, +            url: proxy ? await getProxyHostUrl() : window.location.href +        };          const options = await apiOptionsGet(optionsContext);          if (!proxy && frameOffsetForwarder === null) { @@ -97,10 +111,10 @@ async function createPopupProxy(depth, id, parentFrameId, url) {          let popup;          if (isIframe && options.general.showIframePopupsInRootFrame && DOM.getFullscreenElement() === null && iframePopupsInRootFrameAvailable) { -            popup = popups.iframe || await createIframePopupProxy(url, frameOffsetForwarder, disableIframePopupsInRootFrame); +            popup = popups.iframe || await createIframePopupProxy(frameOffsetForwarder, disableIframePopupsInRootFrame);              popups.iframe = popup;          } else if (proxy) { -            popup = popups.proxy || await createPopupProxy(depth, id, parentFrameId, url); +            popup = popups.proxy || await createPopupProxy(depth, id, parentFrameId);              popups.proxy = popup;          } else {              popup = popups.normal || await getOrCreatePopup(depth); @@ -108,7 +122,8 @@ async function createPopupProxy(depth, id, parentFrameId, url) {          }          if (frontend === null) { -            frontend = new Frontend(popup); +            const getUrl = proxy ? getProxyHostUrl : null; +            frontend = new Frontend(popup, getUrl);              frontendPreparePromise = frontend.prepare();              await frontendPreparePromise;          } else {  |