-
Notifications
You must be signed in to change notification settings - Fork 17
[MPP-3063] Reduce panel load time #498
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 4 commits
5b5ecca
ea125b9
b56f145
3fcffb5
7fa9c62
dffd267
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -343,10 +343,12 @@ | |
}, false); | ||
|
||
// Get masks and determine what to display | ||
const masks = await popup.utilities.getMasks(getMasksOptions); | ||
const { relayAddresses } = await browser.storage.local.get( | ||
"relayAddresses" | ||
); | ||
|
||
// If no masks are created, show onboarding prompt | ||
if (masks.length === 0) { | ||
if (relayAddresses.length === 0) { | ||
maxxcrawford marked this conversation as resolved.
Show resolved
Hide resolved
|
||
const noMasksCreatedPanel = document.querySelector(".fx-relay-no-masks-created"); | ||
noMasksCreatedPanel.classList.remove("is-hidden"); | ||
} | ||
|
@@ -356,8 +358,7 @@ | |
popup.panel.masks.utilities.buildMasksList(); | ||
|
||
|
||
// Remove loading state | ||
document.body.classList.remove("is-loading"); | ||
|
||
|
||
}, | ||
search: { | ||
|
@@ -475,85 +476,14 @@ | |
const masks = await popup.utilities.getMasks(getMasksOptions); | ||
|
||
const maskList = document.querySelector(".fx-relay-mask-list"); | ||
|
||
// Reset mask list | ||
maskList.textContent = ""; | ||
|
||
masks.forEach(mask => { | ||
const maskListItem = document.createElement("li"); | ||
|
||
// Attributes used to power search filtering | ||
maskListItem.setAttribute("data-mask-address", mask.full_address); | ||
maskListItem.setAttribute("data-mask-description", mask.description ?? ""); | ||
maskListItem.setAttribute("data-mask-used-on", mask.used_on ?? ""); | ||
maskListItem.setAttribute("data-mask-generated", mask.generated_for ?? ""); | ||
|
||
maskListItem.classList.add("fx-relay-mask-item"); | ||
|
||
const maskListItemNewMaskCreatedLabel = document.createElement("span"); | ||
maskListItemNewMaskCreatedLabel.textContent = browser.i18n.getMessage("labelMaskCreated"); | ||
maskListItemNewMaskCreatedLabel.classList.add("fx-relay-mask-item-new-mask-created"); | ||
maskListItem.appendChild(maskListItemNewMaskCreatedLabel); | ||
|
||
const maskListItemAddressBar = document.createElement("div"); | ||
maskListItemAddressBar.classList.add("fx-relay-mask-item-address-bar"); | ||
|
||
const maskListItemAddressWrapper = document.createElement("div"); | ||
maskListItemAddressWrapper.classList.add("fx-relay-mask-item-address-wrapper"); | ||
|
||
const maskListItemLabel = document.createElement("span"); | ||
maskListItemLabel.classList.add("fx-relay-mask-item-label"); | ||
maskListItemLabel.textContent = mask.description; | ||
|
||
// Append Label if it exists | ||
if (mask.description !== "") { | ||
maskListItemAddressWrapper.appendChild(maskListItemLabel); | ||
} | ||
|
||
const maskListItemAddress = document.createElement("div"); | ||
maskListItemAddress.classList.add("fx-relay-mask-item-address"); | ||
maskListItemAddress.textContent = mask.full_address; | ||
maskListItemAddressWrapper.appendChild(maskListItemAddress); | ||
|
||
// Add Mask Address Bar Contents | ||
maskListItemAddressBar.appendChild(maskListItemAddressWrapper); | ||
|
||
const maskListItemAddressActions = document.createElement("div"); | ||
maskListItemAddressActions.classList.add("fx-relay-mask-item-address-actions"); | ||
|
||
const maskListItemCopyButton = document.createElement("button"); | ||
maskListItemCopyButton.classList.add("fx-relay-mask-item-address-copy"); | ||
maskListItemCopyButton.setAttribute("data-mask-address", mask.full_address); | ||
|
||
const maskListItemCopyButtonSuccessMessage = document.createElement("span"); | ||
maskListItemCopyButtonSuccessMessage.textContent = browser.i18n.getMessage("popupCopyMaskButtonCopied"); | ||
maskListItemCopyButtonSuccessMessage.classList.add("fx-relay-mask-item-address-copy-success"); | ||
maskListItemAddressActions.appendChild(maskListItemCopyButtonSuccessMessage); | ||
|
||
maskListItemCopyButton.addEventListener("click", (e)=> { | ||
e.preventDefault(); | ||
navigator.clipboard.writeText(e.target.dataset.maskAddress); | ||
maskListItemCopyButtonSuccessMessage.classList.add("is-shown"); | ||
setTimeout(() => { | ||
maskListItemCopyButtonSuccessMessage.classList.remove("is-shown") | ||
}, 1000); | ||
}, false); | ||
maskListItemAddressActions.appendChild(maskListItemCopyButton); | ||
|
||
const maskListItemToggleButton = document.createElement("button"); | ||
maskListItemToggleButton.classList.add("fx-relay-mask-item-address-toggle"); | ||
maskListItemToggleButton.addEventListener("click", ()=> { | ||
// TODO: Add Toggle Function | ||
}, false); | ||
maskListItemToggleButton.setAttribute("data-mask-id", mask.id); | ||
maskListItemToggleButton.setAttribute("data-mask-type", mask.mask_type); | ||
maskListItemToggleButton.setAttribute("data-mask-address", mask.full_address); | ||
|
||
// TODO: Add toggle button back | ||
// maskListItemAddressActions.appendChild(maskListItemToggleButton); | ||
|
||
maskListItemAddressBar.appendChild(maskListItemAddressActions); | ||
maskListItem.appendChild(maskListItemAddressBar); | ||
maskList.appendChild(maskListItem); | ||
|
||
// Generate and append each mask item to the mask list | ||
masks.forEach( mask => { | ||
maxxcrawford marked this conversation as resolved.
Show resolved
Hide resolved
|
||
const maskListItem = popup.panel.masks.utilities.buildMaskListItem(mask); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Context: This function was getting really big. Broke out the |
||
maskList.append(maskListItem); | ||
}); | ||
|
||
// Display "Mask created" temporary label when a new mask is created in the panel | ||
|
@@ -577,6 +507,86 @@ | |
popup.panel.masks.search.init(); | ||
} | ||
|
||
// Remove loading state | ||
document.body.classList.remove("is-loading"); | ||
Comment on lines
+502
to
+503
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Context: Moved this to the end of the |
||
|
||
}, | ||
buildMaskListItem: (mask) => { | ||
const maskListItem = document.createElement("li"); | ||
|
||
// Attributes used to power search filtering | ||
maskListItem.setAttribute("data-mask-address", mask.full_address); | ||
maskListItem.setAttribute("data-mask-description", mask.description ?? ""); | ||
maskListItem.setAttribute("data-mask-used-on", mask.used_on ?? ""); | ||
maskListItem.setAttribute("data-mask-generated", mask.generated_for ?? ""); | ||
|
||
maskListItem.classList.add("fx-relay-mask-item"); | ||
|
||
const maskListItemNewMaskCreatedLabel = document.createElement("span"); | ||
maskListItemNewMaskCreatedLabel.textContent = browser.i18n.getMessage("labelMaskCreated"); | ||
maskListItemNewMaskCreatedLabel.classList.add("fx-relay-mask-item-new-mask-created"); | ||
maskListItem.append(maskListItemNewMaskCreatedLabel); | ||
|
||
const maskListItemAddressBar = document.createElement("div"); | ||
maskListItemAddressBar.classList.add("fx-relay-mask-item-address-bar"); | ||
|
||
const maskListItemAddressWrapper = document.createElement("div"); | ||
maskListItemAddressWrapper.classList.add("fx-relay-mask-item-address-wrapper"); | ||
|
||
const maskListItemLabel = document.createElement("span"); | ||
maskListItemLabel.classList.add("fx-relay-mask-item-label"); | ||
maskListItemLabel.textContent = mask.description; | ||
|
||
// Append Label if it exists | ||
if (mask.description !== "") { | ||
maskListItemAddressWrapper.append(maskListItemLabel); | ||
} | ||
|
||
const maskListItemAddress = document.createElement("div"); | ||
maskListItemAddress.classList.add("fx-relay-mask-item-address"); | ||
maskListItemAddress.textContent = mask.full_address; | ||
maskListItemAddressWrapper.append(maskListItemAddress); | ||
|
||
// Add Mask Address Bar Contents | ||
maskListItemAddressBar.append(maskListItemAddressWrapper); | ||
|
||
const maskListItemAddressActions = document.createElement("div"); | ||
maskListItemAddressActions.classList.add("fx-relay-mask-item-address-actions"); | ||
|
||
const maskListItemCopyButton = document.createElement("button"); | ||
maskListItemCopyButton.classList.add("fx-relay-mask-item-address-copy"); | ||
maskListItemCopyButton.setAttribute("data-mask-address", mask.full_address); | ||
|
||
const maskListItemCopyButtonSuccessMessage = document.createElement("span"); | ||
maskListItemCopyButtonSuccessMessage.textContent = browser.i18n.getMessage("popupCopyMaskButtonCopied"); | ||
maskListItemCopyButtonSuccessMessage.classList.add("fx-relay-mask-item-address-copy-success"); | ||
maskListItemAddressActions.append(maskListItemCopyButtonSuccessMessage); | ||
|
||
maskListItemCopyButton.addEventListener("click", (e)=> { | ||
e.preventDefault(); | ||
navigator.clipboard.writeText(e.target.dataset.maskAddress); | ||
maskListItemCopyButtonSuccessMessage.classList.add("is-shown"); | ||
setTimeout(() => { | ||
maskListItemCopyButtonSuccessMessage.classList.remove("is-shown") | ||
}, 1000); | ||
}, false); | ||
maskListItemAddressActions.append(maskListItemCopyButton); | ||
|
||
const maskListItemToggleButton = document.createElement("button"); | ||
maskListItemToggleButton.classList.add("fx-relay-mask-item-address-toggle"); | ||
maskListItemToggleButton.addEventListener("click", ()=> { | ||
// TODO: Add Toggle Function | ||
maxxcrawford marked this conversation as resolved.
Show resolved
Hide resolved
|
||
}, false); | ||
maskListItemToggleButton.setAttribute("data-mask-id", mask.id); | ||
maskListItemToggleButton.setAttribute("data-mask-type", mask.mask_type); | ||
maskListItemToggleButton.setAttribute("data-mask-address", mask.full_address); | ||
|
||
// TODO: Add toggle button back | ||
// maskListItemAddressActions.append(maskListItemToggleButton); | ||
Comment on lines
+576
to
+577
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Disregard this TODO. It is part of #473 |
||
|
||
maskListItemAddressBar.append(maskListItemAddressActions); | ||
maskListItem.append(maskListItemAddressBar); | ||
return maskListItem; | ||
}, | ||
getRemainingAliases: async () => { | ||
const masks = await popup.utilities.getMasks(); | ||
|
@@ -869,15 +879,16 @@ | |
getMasksOptions.fetchCustomMasks = isPremiumSubdomainSet; | ||
} | ||
|
||
const masks = await popup.utilities.getMasks(getMasksOptions); | ||
// Use localStorage of Masks | ||
const { relayAddresses } = await browser.storage.local.get("relayAddresses"); | ||
|
||
// Get Global Mask Stats data | ||
const totalAliasesUsedVal = masks.length; | ||
const totalAliasesUsedVal = relayAddresses.length; | ||
let totalEmailsForwardedVal = 0; | ||
let totalEmailsBlockedVal = 0; | ||
|
||
// Loop through all masks to calculate totals | ||
masks.forEach((mask) => { | ||
relayAddresses.forEach((mask) => { | ||
totalEmailsForwardedVal += mask.num_forwarded; | ||
totalEmailsBlockedVal += mask.num_blocked; | ||
}); | ||
|
@@ -898,10 +909,10 @@ | |
}); | ||
|
||
// Check if any data applies to the current site | ||
if ( popup.utilities.checkIfAnyMasksWereGeneratedOnCurrentWebsite(masks,currentPageHostName) ) { | ||
if ( popup.utilities.checkIfAnyMasksWereGeneratedOnCurrentWebsite(relayAddresses,currentPageHostName) ) { | ||
|
||
// Some masks are used on the current site. Time to calculate! | ||
const filteredMasks = masks.filter( | ||
const filteredMasks = relayAddresses.filter( | ||
(mask) => | ||
mask.generated_for === currentPageHostName || | ||
popup.utilities.hasMaskBeenUsedOnCurrentSite( | ||
|
@@ -1240,10 +1251,15 @@ | |
|
||
if (serverStoragePref) { | ||
try { | ||
return await browser.runtime.sendMessage({ | ||
const masks = await browser.runtime.sendMessage({ | ||
method: "getAliasesFromServer", | ||
options, | ||
}); | ||
|
||
await browser.storage.local.set({"relayAddresses": masks}); | ||
|
||
return masks; | ||
|
||
maxxcrawford marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} catch (error) { | ||
console.warn(`getAliasesFromServer Error: ${error}`); | ||
|
||
|
Uh oh!
There was an error while loading. Please reload this page.