in src/js/other-websites/inpage_menu.js [232:283]
async function populatePremiumMaskList(maskList, masks) {
const list = maskList.querySelector("ul");
if (masks.length === 0) {
return;
}
masks.forEach((mask) => {
const listItem = document.createElement("li");
const listButton = document.createElement("button");
listButton.tabIndex = 0;
listButton.dataset.domain = mask.domain;
listButton.dataset.maskId = mask.id;
listButton.dataset.mask = mask.full_address;
listButton.dataset.label = mask.description;
// The button text for a mask will show both the description label (if set) and the full address.
const listButtonLabel = document.createElement("span");
listButtonLabel.classList.add("fx-relay-menu-masks-search-result-label");
const listButtonAddress = document.createElement("span");
listButtonAddress.classList.add(
"fx-relay-menu-masks-search-result-address"
);
listButtonLabel.textContent = mask.description;
listButtonAddress.textContent = mask.full_address;
listButton.appendChild(listButtonLabel);
listButton.appendChild(listButtonAddress);
listButton.addEventListener("click", fillTargetWithRelayAddress, false);
listItem.appendChild(listButton);
list.appendChild(listItem);
});
// Remove loading state
const loadingItem = maskList.querySelector(
".fx-relay-menu-masks-list-loading"
);
loadingItem.remove();
list.classList.remove("is-loading");
// The free UI has both lists wrapped up in a hidden-by-default element, so this makes it visible too.
document
.querySelector(".fx-relay-menu-masks-lists")
?.classList.add("is-visible");
browser.runtime.sendMessage({
method: "updateIframeHeight",
height: document.getElementById("fxRelayMenuBody").scrollHeight,
});
}