create: async()

in src/js/background/context-menu.js [310:372]


    create: async (data, options = null, aliases) => {
      // Loop Through Existing Aliases
      if (options?.createExistingAliases) {
        // https://github.com/mozilla/fx-private-relay-add-on/issues/239
        // There is a bug in the order in which the aliases are stored when synced with the server versus local storage.
        // We need to determine which method is used to determine if need to flip that order.
        const shouldAliasOrderBeReversed = await getCachedServerStoragePref();

        const filteredAliases = options.exisitingSite
          ? relayContextMenus.utils.getSiteSpecificAliases(
              aliases,
              options.currentWebsite,
              { shouldAliasOrderBeReversed }
            )
          : relayContextMenus.utils.getMostRecentAliases(
              aliases,
              options.currentWebsite,
              { shouldAliasOrderBeReversed }
            );

        // Only create the parent menu if we will create sub-items
        if (filteredAliases.length > 0) {
          await browser.contextMenus.create(
            options.parentMenu,
            relayContextMenus.utils.onCreatedCallback
          );
        } else {
          // Exit early. Nothing else to create.
          return Promise.resolve(1);
        }

        const STRING_LENGTH = 30;

        for (const alias of filteredAliases) {
          let title = alias.description
            ? alias.description
            : alias.full_address;

          if (title.length > STRING_LENGTH) {
            title = title.substr(0, STRING_LENGTH - 1) + "…";
          }

          const id = reuseAliasMenuIdPrefix + alias.id;

          data.title = title;
          data.id = id;
          data.parentId = options.parentMenu.id;
          await browser.contextMenus.create(
            data,
            relayContextMenus.utils.onCreatedCallback
          );
        }

        return Promise.resolve(1);
      }

      await browser.contextMenus.create(
        data,
        relayContextMenus.utils.onCreatedCallback
      );

      return Promise.resolve(1);
    },