97 lines
3 KiB
JavaScript
97 lines
3 KiB
JavaScript
async function load() {
|
|
const searchParams = new URL(window.location).searchParams;
|
|
const redirectUrl = searchParams.get("url");
|
|
const cookieStoreId = searchParams.get("cookieStoreId");
|
|
const currentCookieStoreId = searchParams.get("currentCookieStoreId");
|
|
const redirectUrlElement = document.getElementById("redirect-url");
|
|
redirectUrlElement.textContent = redirectUrl;
|
|
appendFavicon(redirectUrl, redirectUrlElement);
|
|
|
|
document.getElementById("deny").addEventListener("click", (e) => {
|
|
e.preventDefault();
|
|
denySubmit(redirectUrl);
|
|
});
|
|
|
|
document.getElementById("deny-no-container").addEventListener("click", (e) => {
|
|
e.preventDefault();
|
|
denySubmit(redirectUrl);
|
|
});
|
|
|
|
const container = await browser.contextualIdentities.get(cookieStoreId);
|
|
const currentContainer = currentCookieStoreId ? await browser.contextualIdentities.get(currentCookieStoreId) : null;
|
|
const currentContainerName = currentContainer ? setDenyButton(currentContainer.name) : setDenyButton("");
|
|
|
|
document.querySelectorAll("[data-message-id]").forEach(el => {
|
|
const elementData = el.dataset;
|
|
const containerName = elementData.messageArg === "container-name" ? container.name : currentContainerName;
|
|
el.textContent = browser.i18n.getMessage(elementData.messageId, containerName);
|
|
});
|
|
|
|
document.getElementById("confirm").addEventListener("click", (e) => {
|
|
e.preventDefault();
|
|
confirmSubmit(redirectUrl, cookieStoreId);
|
|
});
|
|
}
|
|
|
|
function setDenyButton(currentContainerName) {
|
|
const buttonDeny = document.getElementById("deny");
|
|
const buttonDenyNoContainer = document.getElementById("deny-no-container");
|
|
|
|
if (currentContainerName) {
|
|
buttonDenyNoContainer.style.display = "none";
|
|
return currentContainerName;
|
|
}
|
|
buttonDeny.style.display = "none";
|
|
return;
|
|
}
|
|
|
|
function appendFavicon(pageUrl, redirectUrlElement) {
|
|
const origin = new URL(pageUrl).origin;
|
|
const favIconElement = Utils.createFavIconElement(`${origin}/favicon.ico`);
|
|
|
|
redirectUrlElement.prepend(favIconElement);
|
|
}
|
|
|
|
function confirmSubmit(redirectUrl, cookieStoreId) {
|
|
const neverAsk = document.getElementById("never-ask").checked;
|
|
// Sending neverAsk message to background to store for next time we see this process
|
|
if (neverAsk) {
|
|
browser.runtime.sendMessage({
|
|
method: "neverAsk",
|
|
neverAsk: true,
|
|
pageUrl: redirectUrl
|
|
});
|
|
}
|
|
openInContainer(redirectUrl, cookieStoreId);
|
|
}
|
|
|
|
function getCurrentTab() {
|
|
return browser.tabs.query({
|
|
active: true,
|
|
windowId: browser.windows.WINDOW_ID_CURRENT
|
|
});
|
|
}
|
|
|
|
async function denySubmit(redirectUrl) {
|
|
const tab = await getCurrentTab();
|
|
await browser.runtime.sendMessage({
|
|
method: "exemptContainerAssignment",
|
|
tabId: tab[0].id,
|
|
pageUrl: redirectUrl
|
|
});
|
|
document.location.replace(redirectUrl);
|
|
}
|
|
|
|
load();
|
|
|
|
async function openInContainer(redirectUrl, cookieStoreId) {
|
|
const tab = await getCurrentTab();
|
|
await browser.tabs.create({
|
|
index: tab[0].index + 1,
|
|
cookieStoreId,
|
|
url: redirectUrl
|
|
});
|
|
if (tab.length > 0) {
|
|
browser.tabs.remove(tab[0].id);
|
|
}
|
|
}
|