async prepare()

in src/js/popup.js [2049:2120]


  async prepare() {
    const identity = Logic.currentIdentity();
    const advancedProxyInput = document.getElementById("edit-advanced-proxy-input");

    const proxyPermissionEnabled = await browser.permissions.contains({ permissions: ["proxy"] });
    if (!proxyPermissionEnabled) {

      // Restrict tabbing inside advanced proxy panel to proxy permissions ui
      const panel = document.getElementById("advanced-proxy-settings-panel");
      const clickableEls = panel.querySelectorAll("button, a, input");
      clickableEls.forEach(el => {
        if (!el.dataset.tabGroup && el.id !== "advanced-proxy-settings-return") {
          el.setAttribute("tabindex", "-1");
          el.disabled = true;
        }
      });

      // Show proxy permission overlay
      const permissionsOverlay = document.getElementById("permissions-overlay");
      permissionsOverlay.style.display = "flex";

      // Add "enable" button handling
      const enableProxyPermissionsButton = document.getElementById("enable-proxy-permissions");

      enableProxyPermissionsButton.addEventListener("click", async() => {
        const granted = await browser.permissions.request({ permissions: ["proxy"] });
        if (granted) {
          permissionsOverlay.style.display = "none";
          // restore normal panel tabbing
          clickableEls.forEach(el => {
            el.tabindex = "0";
            el.disabled = false;
          });
        }
      });
    }


    // reset input
    const resetProxyInput = () => {
      if (!advancedProxyInput) {
        return;
      }
      advancedProxyInput.value = "";
    };

    resetProxyInput();

    this.hideInvalidEntryWarning();

    const setProxyInputPlaceholder = (proxy) => {
      this._advancedProxyInput.value =  `${proxy.type}://${proxy.host}:${proxy.port}`;
    };

    const edit_proxy_dom = function(proxy) {
      if (!proxy.type || MozillaVPN.proxyIsDisabled(proxy)) {
        resetProxyInput();
        return;
      }
      return setProxyInputPlaceholder(proxy);
    };

    const proxyData = await proxifiedContainers.retrieve(identity.cookieStoreId);
    if (proxyData) {
      edit_proxy_dom(proxyData.proxy);
    } else {
      resetProxyInput();
    }
    const containerColor = document.querySelector(".proxy-title-container-color");
    containerColor.dataset.identityColor = identity.color;
    return Promise.resolve(null);
  }