Moving create and update containers into popup.js
This commit is contained in:
parent
f4597eae84
commit
f2ddc7fd84
3 changed files with 70 additions and 92 deletions
63
index.js
63
index.js
|
@ -196,11 +196,10 @@ const ContainerService = {
|
|||
"moveTabsToWindow",
|
||||
"queryIdentities",
|
||||
"getIdentity",
|
||||
"createIdentity",
|
||||
"updateIdentity",
|
||||
"getPreference",
|
||||
"sendTelemetryPayload",
|
||||
"getTheme",
|
||||
"refreshNeeded",
|
||||
"forgetIdentityAndRefresh",
|
||||
"checkIncompatibleAddons"
|
||||
];
|
||||
|
@ -911,62 +910,6 @@ const ContainerService = {
|
|||
return Promise.resolve(identity ? this._convert(identity) : null);
|
||||
},
|
||||
|
||||
createIdentity(args) {
|
||||
this.sendTelemetryPayload({
|
||||
"event": "add-container",
|
||||
});
|
||||
|
||||
for (let arg of [ "name", "color", "icon"]) { // eslint-disable-line prefer-const
|
||||
if (!(arg in args)) {
|
||||
return Promise.reject("createIdentity must be called with " + arg + " argument.");
|
||||
}
|
||||
}
|
||||
|
||||
const color = this._fromNameToColor(args.color);
|
||||
const icon = this._fromNameToIcon(args.icon);
|
||||
|
||||
const identity = ContextualIdentityProxy.create(args.name, icon, color);
|
||||
|
||||
this._identitiesState[identity.userContextId] = this._createIdentityState();
|
||||
|
||||
this._refreshNeeded().then(() => {
|
||||
return this._convert(identity);
|
||||
}).catch(() => {
|
||||
return this._convert(identity);
|
||||
});
|
||||
},
|
||||
|
||||
updateIdentity(args) {
|
||||
if (!("userContextId" in args)) {
|
||||
return Promise.reject("updateIdentity must be called with userContextId argument.");
|
||||
}
|
||||
|
||||
this.sendTelemetryPayload({
|
||||
"event": "edit-container",
|
||||
"userContextId": args.userContextId
|
||||
});
|
||||
|
||||
const identity = ContextualIdentityProxy.getIdentityFromId(args.userContextId);
|
||||
for (let arg of [ "name", "color", "icon"]) { // eslint-disable-line prefer-const
|
||||
if ((arg in args)) {
|
||||
identity[arg] = args[arg];
|
||||
}
|
||||
}
|
||||
|
||||
const color = this._fromNameToColor(identity.color);
|
||||
const icon = this._fromNameToIcon(identity.icon);
|
||||
|
||||
const updated = ContextualIdentityProxy.update(args.userContextId,
|
||||
identity.name,
|
||||
icon, color);
|
||||
|
||||
this._refreshNeeded().then(() => {
|
||||
return updated;
|
||||
}).catch(() => {
|
||||
return updated;
|
||||
});
|
||||
},
|
||||
|
||||
// Preferences
|
||||
|
||||
getPreference(args) {
|
||||
|
@ -1015,7 +958,7 @@ const ContainerService = {
|
|||
return this._windowMap.get(window);
|
||||
},
|
||||
|
||||
_refreshNeeded() {
|
||||
refreshNeeded() {
|
||||
return this._configureWindows();
|
||||
},
|
||||
|
||||
|
@ -1147,7 +1090,7 @@ const ContainerService = {
|
|||
|
||||
forgetIdentityAndRefresh(args) {
|
||||
this._forgetIdentity(args.userContextId);
|
||||
return this._refreshNeeded();
|
||||
return this.refreshNeeded();
|
||||
},
|
||||
|
||||
_forgetIdentity(userContextId = 0) {
|
||||
|
|
|
@ -58,26 +58,30 @@ const assignManager = {
|
|||
}
|
||||
},
|
||||
|
||||
_neverAsk(m) {
|
||||
const pageUrl = m.pageUrl;
|
||||
if (m.neverAsk === true) {
|
||||
// If we have existing data and for some reason it hasn't been deleted etc lets update it
|
||||
this.storageArea.get(pageUrl).then((siteSettings) => {
|
||||
if (siteSettings) {
|
||||
siteSettings.neverAsk = true;
|
||||
this.storageArea.set(pageUrl, siteSettings);
|
||||
}
|
||||
}).catch((e) => {
|
||||
throw e;
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
init() {
|
||||
browser.runtime.onMessage.addListener((m) => {
|
||||
switch (m.type) {
|
||||
case "delete-container":
|
||||
assignManager.deleteContainer(m.message.userContextId);
|
||||
break;
|
||||
case "never-ask":
|
||||
const pageUrl = m.pageUrl;
|
||||
if (m.neverAsk === true) {
|
||||
// If we have existing data and for some reason it hasn't been deleted etc lets update it
|
||||
this.storageArea.get(pageUrl).then((siteSettings) => {
|
||||
if (siteSettings) {
|
||||
siteSettings.neverAsk = true;
|
||||
this.storageArea.set(pageUrl, siteSettings);
|
||||
}
|
||||
}).catch((e) => {
|
||||
throw e;
|
||||
});
|
||||
}
|
||||
break;
|
||||
case "delete-container":
|
||||
assignManager.deleteContainer(m.message.userContextId);
|
||||
break;
|
||||
case "never-ask":
|
||||
this._neverAsk(m);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -152,7 +152,7 @@ const Logic = {
|
|||
tabs.forEach((tab) => {
|
||||
cb(tab);
|
||||
});
|
||||
});
|
||||
}).catch((e) => {throw e;});
|
||||
},
|
||||
|
||||
_containers(userContextId) {
|
||||
|
@ -161,14 +161,21 @@ const Logic = {
|
|||
});
|
||||
},
|
||||
|
||||
sendTelemetryPayload(message = {}) {
|
||||
if (!message.event) {
|
||||
throw new Error("Missing event name for telemetry");
|
||||
}
|
||||
message.method = "sendTelemetryPayload";
|
||||
browser.runtime.sendMessage(message);
|
||||
},
|
||||
|
||||
removeIdentity(userContextId) {
|
||||
const eventName = "delete-container";
|
||||
if (!userContextId) {
|
||||
return Promise.reject("removeIdentity must be called with userContextId argument.");
|
||||
}
|
||||
|
||||
browser.runtime.sendMessage({
|
||||
method: "sendTelemetryPayload",
|
||||
this.sendTelemetryPayload({
|
||||
event: eventName,
|
||||
userContextId
|
||||
});
|
||||
|
@ -189,7 +196,7 @@ const Logic = {
|
|||
method: "forgetIdentityAndRefresh"
|
||||
}).then(() => {
|
||||
return removed;
|
||||
});
|
||||
}).catch((e) => {throw e;});
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -292,8 +299,7 @@ Logic.registerPanel(P_CONTAINERS_LIST, {
|
|||
});
|
||||
|
||||
document.querySelector("#edit-containers-link").addEventListener("click", () => {
|
||||
browser.runtime.sendMessage({
|
||||
method: "sendTelemetryPayload",
|
||||
Logic.sendTelemetryPayload({
|
||||
event: "edit-containers"
|
||||
});
|
||||
Logic.showPanel(P_CONTAINERS_EDIT);
|
||||
|
@ -412,12 +418,12 @@ Logic.registerPanel(P_CONTAINER_INFO, {
|
|||
moveTabsEl.parentNode.insertBefore(fragment, moveTabsEl.nextSibling);
|
||||
} else {
|
||||
moveTabsEl.addEventListener("click", () => {
|
||||
return browser.runtime.sendMessage({
|
||||
browser.runtime.sendMessage({
|
||||
method: "moveTabsToWindow",
|
||||
userContextId: Logic.currentIdentity().userContextId,
|
||||
}).then(() => {
|
||||
window.close();
|
||||
});
|
||||
}).catch((e) => { throw e; });
|
||||
});
|
||||
}
|
||||
}).catch(() => {
|
||||
|
@ -583,13 +589,14 @@ Logic.registerPanel(P_CONTAINER_EDIT, {
|
|||
_submitForm() {
|
||||
const identity = Logic.currentIdentity();
|
||||
const formValues = new FormData(this._editForm);
|
||||
browser.runtime.sendMessage({
|
||||
method: identity.userContextId ? "updateIdentity" : "createIdentity",
|
||||
userContextId: identity.userContextId || 0,
|
||||
name: document.getElementById("edit-container-panel-name-input").value || Logic.generateIdentityName(),
|
||||
icon: formValues.get("container-icon") || DEFAULT_ICON,
|
||||
color: formValues.get("container-color") || DEFAULT_COLOR,
|
||||
}).then(() => {
|
||||
this._createOrUpdateIdentity(
|
||||
{
|
||||
name: document.getElementById("edit-container-panel-name-input").value || Logic.generateIdentityName(),
|
||||
icon: formValues.get("container-icon") || DEFAULT_ICON,
|
||||
color: formValues.get("container-color") || DEFAULT_COLOR,
|
||||
},
|
||||
identity.userContextId || false
|
||||
).then(() => {
|
||||
return Logic.refreshIdentities();
|
||||
}).then(() => {
|
||||
Logic.showPreviousPanel();
|
||||
|
@ -598,6 +605,30 @@ Logic.registerPanel(P_CONTAINER_EDIT, {
|
|||
});
|
||||
},
|
||||
|
||||
_createOrUpdateIdentity(params, userContextId) {
|
||||
let donePromise;
|
||||
if (userContextId) {
|
||||
donePromise = browser.contextualIdentities.update(
|
||||
Logic.cookieStoreId(userContextId),
|
||||
params
|
||||
);
|
||||
Logic.sendTelemetryPayload({
|
||||
event: "edit-container",
|
||||
userContextId
|
||||
});
|
||||
} else {
|
||||
donePromise = browser.contextualIdentities.create(params);
|
||||
Logic.sendTelemetryPayload({
|
||||
event: "add-container"
|
||||
});
|
||||
}
|
||||
return donePromise.then(() => {
|
||||
browser.runtime.sendMessage({
|
||||
method: "refreshNeeded"
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
initializeRadioButtons() {
|
||||
const colorRadioTemplate = (containerColor) => {
|
||||
return escaped`<input type="radio" value="${containerColor}" name="container-color" id="edit-container-panel-choose-color-${containerColor}" />
|
||||
|
|
Loading…
Add table
Reference in a new issue