diff options
| author | siikamiika <siikamiika@users.noreply.github.com> | 2020-04-10 15:00:23 +0300 | 
|---|---|---|
| committer | siikamiika <siikamiika@users.noreply.github.com> | 2020-04-11 21:03:22 +0300 | 
| commit | 7dd2610ce844986feed72720378d7da601c44d27 (patch) | |
| tree | f3cb883896823ea568950c89eaf5f419d20df768 /ext/fg/js | |
| parent | 92109bb5d25db99033b0bb9f7f3806883f79218d (diff) | |
extract different popup creation functions
Diffstat (limited to 'ext/fg/js')
| -rw-r--r-- | ext/fg/js/frontend-initialize.js | 70 | 
1 files changed, 44 insertions, 26 deletions
| diff --git a/ext/fg/js/frontend-initialize.js b/ext/fg/js/frontend-initialize.js index 3fe5ac5b..db581b93 100644 --- a/ext/fg/js/frontend-initialize.js +++ b/ext/fg/js/frontend-initialize.js @@ -24,6 +24,47 @@   * apiOptionsGet   */ +async function createIframePopupProxy(url) { +    const rootPopupInformationPromise = yomichan.getTemporaryListenerResult( +        chrome.runtime.onMessage, +        ({action, params}, {resolve}) => { +            if (action === 'rootPopupInformation') { +                resolve(params); +            } +        } +    ); +    apiBroadcastTab('rootPopupRequestInformationBroadcast'); +    const {popupId, frameId} = await rootPopupInformationPromise; + +    const frameOffsetForwarder = new FrameOffsetForwarder(); +    frameOffsetForwarder.start(); +    const getFrameOffset = frameOffsetForwarder.getOffset.bind(frameOffsetForwarder); + +    const popup = new PopupProxy(popupId, 0, null, frameId, url, getFrameOffset); +    await popup.prepare(); + +    return popup; +} + +async function getOrCreatePopup(depth) { +    const frameOffsetForwarder = new FrameOffsetForwarder(); +    frameOffsetForwarder.start(); + +    const popupHost = new PopupProxyHost(); +    await popupHost.prepare(); + +    const popup = popupHost.getOrCreatePopup(null, null, depth); + +    return popup; +} + +async function createPopupProxy(depth, id, parentFrameId, url) { +    const popup = new PopupProxy(null, depth + 1, id, parentFrameId, url); +    await popup.prepare(); + +    return popup; +} +  async function main() {      await yomichan.prepare(); @@ -46,34 +87,11 @@ async function main() {      let popup;      if (!proxy && (window !== window.parent) && options.general.showIframePopupsInRootFrame) { -        const rootPopupInformationPromise = yomichan.getTemporaryListenerResult( -            chrome.runtime.onMessage, -            ({action, params}, {resolve}) => { -                if (action === 'rootPopupInformation') { -                    resolve(params); -                } -            } -        ); -        apiBroadcastTab('rootPopupRequestInformationBroadcast'); -        const {popupId, frameId} = await rootPopupInformationPromise; - -        const frameOffsetForwarder = new FrameOffsetForwarder(); -        frameOffsetForwarder.start(); -        const getFrameOffset = frameOffsetForwarder.getOffset.bind(frameOffsetForwarder); - -        popup = new PopupProxy(popupId, 0, null, frameId, url, getFrameOffset); -        await popup.prepare(); +        popup = await createIframePopupProxy(url);      } else if (proxy) { -        popup = new PopupProxy(null, depth + 1, id, parentFrameId, url); -        await popup.prepare(); +        popup = await createPopupProxy(depth, id, parentFrameId, url);      } else { -        const frameOffsetForwarder = new FrameOffsetForwarder(); -        frameOffsetForwarder.start(); - -        const popupHost = new PopupProxyHost(); -        await popupHost.prepare(); - -        popup = popupHost.getOrCreatePopup(null, null, depth); +        popup = await getOrCreatePopup(depth);      }      const frontend = new Frontend(popup, initEventDispatcher); |