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
+21 -17
View File
@@ -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;
}
});
+46 -15
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,
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}" />