Moving create and update containers into popup.js

This commit is contained in:
Jonathan Kingston 2017-04-28 15:39:05 +01:00 committed by groovecoder
parent f4597eae84
commit f2ddc7fd84
3 changed files with 70 additions and 92 deletions

View file

@ -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) {

View file

@ -58,13 +58,7 @@ const assignManager = {
}
},
init() {
browser.runtime.onMessage.addListener((m) => {
switch (m.type) {
case "delete-container":
assignManager.deleteContainer(m.message.userContextId);
break;
case "never-ask":
_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
@ -77,6 +71,16 @@ const assignManager = {
throw e;
});
}
},
init() {
browser.runtime.onMessage.addListener((m) => {
switch (m.type) {
case "delete-container":
assignManager.deleteContainer(m.message.userContextId);
break;
case "never-ask":
this._neverAsk(m);
break;
}
});

View file

@ -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,
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,
}).then(() => {
},
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}" />