init: async()

in src/js/popup/popup.js [163:214]


    init: async () => {

      const { isAndroid } = await browser.storage.local.get(
        "isAndroid"
      );

      // Add CSS class for custom Firefox for Android styles to the panel
      if (isAndroid) {
        document.body.classList.add("is-android")
      }
      
      // Set Navigation Listeners
      const navigationButtons = document.querySelectorAll(".js-internal-link");
      navigationButtons.forEach((button) => {
        button.addEventListener("click", popup.events.navigationClick, false);
      });

      // Set Back Button Listeners
      const backButtons = document.querySelectorAll(
        ".fx-relay-panel-header-btn-back"
      );
      
      backButtons.forEach((button) => {
        button.addEventListener("click", popup.events.backClick, false);
      });

      sessionState.loggedIn = await popup.utilities.isUserSignedIn();

      // Check if user is signed in to show default/sign-in panel
      if (sessionState.loggedIn) {
        popup.panel.update("masks");
        popup.utilities.unhideNavigationItemsOnceLoggedIn();
        // populateNewsFeed Also sets Notification Bug for Unread News Items
        popup.utilities.populateNewsFeed();
      } else {
        popup.panel.update("sign-up");
        document.body.classList.remove("is-loading");
      }

      // Set External Event Listerners
      await popup.utilities.setExternalLinkEventListeners();

      // Clear browser action "!" badge
      await popup.utilities.clearBrowserActionBadge();

      // Note: There's a chain of functions that run from init, and end with putting focus on the most reasonable element: 
      // Cases:
      //   If not logged in: focused on "Sign In" button
      //   (Both tiers) If no masks made: focused on primary generate mask button
      //   If free tier: focused on "Create mask" button
      //   If premium tier: focused in search bar
    },