implemented logic for deleting multiple selected containers and hidden the delete button if no one is selected

This commit is contained in:
joey 2020-03-08 22:53:15 -04:00
parent cd8ae50c60
commit 4592a91cdf
2 changed files with 24 additions and 10 deletions

View file

@ -976,6 +976,23 @@ Logic.registerPanel(P_CONTAINERS_EDIT, {
Logic.addEnterHandler(document.querySelector("#exit-edit-mode-link"), () => { Logic.addEnterHandler(document.querySelector("#exit-edit-mode-link"), () => {
Logic.showPanel(P_CONTAINERS_LIST); Logic.showPanel(P_CONTAINERS_LIST);
}); });
Logic.addEnterHandler(document.querySelector("#delete-link"), async () => {
/*
Showing the confirm page of deleting all selected containers.
*/
const selectedIdentities = Logic.currentSelectedIdentities();
if (selectedIdentities.length > 0) {
await Logic.showPanel(P_CONTAINER_DELETE, null, Logic.currentSelectedIdentities());
}
});
},
// showing delete button if there is any selected containers
showDeleteSelectedButton(selectedContainers) {
const assignmentPanel = document.getElementById("edit-sites-assigned");
const assignmentKeys = Object.keys(selectedContainers);
assignmentPanel.hidden = !(assignmentKeys.length > 0);
}, },
// This method is called when the panel is shown. // This method is called when the panel is shown.
@ -1217,17 +1234,15 @@ Logic.registerPanel(P_CONTAINER_DELETE, {
} else { } else {
currentSelection = [Logic.currentIdentity()]; currentSelection = [Logic.currentIdentity()];
} }
let i = 0;
// TODO this is still async and may cause issue
try { try {
while(i < currentSelection.length) { // loop through each selected container
for (let i = 0; i < currentSelection.length; i++) {
await Logic.removeIdentity(Logic.userContextId(currentSelection[i].cookieStoreId)); await Logic.removeIdentity(Logic.userContextId(currentSelection[i].cookieStoreId));
await Logic.refreshIdentities();
i ++;
} }
await Logic.refreshIdentities();
Logic.showPreviousPanel(); Logic.showPreviousPanel();
} catch (e) { } catch (e) {
Logic.showPanel(P_CONTAINERS_LIST); await Logic.showPanel(P_CONTAINERS_LIST);
} }
}); });
}, },
@ -1246,8 +1261,8 @@ Logic.registerPanel(P_CONTAINER_DELETE, {
// Populating the panel: name, icon, and warning message // Populating the panel: name, icon, and warning message
document.getElementById("delete-container-name").textContent = currentSelection[0].name; document.getElementById("delete-container-name").textContent = currentSelection[0].name;
document.getElementById("delete-container-tab-warning").textContent = ``; document.getElementById("delete-container-tab-warning").textContent = ``;
while(i < currentSelection.length) { for (let i = 0; i < currentSelection.length; i++) {
const identity = currentSelection[0]; const identity = currentSelection[i];
const totalNumberOfTabs = identity.numberOfHiddenTabs + identity.numberOfOpenTabs; const totalNumberOfTabs = identity.numberOfHiddenTabs + identity.numberOfOpenTabs;
let warningMessage = ""; let warningMessage = "";
if (totalNumberOfTabs > 0) { if (totalNumberOfTabs > 0) {
@ -1259,7 +1274,6 @@ Logic.registerPanel(P_CONTAINER_DELETE, {
const icon = document.getElementById("delete-container-icon"); const icon = document.getElementById("delete-container-icon");
icon.setAttribute("data-identity-icon", identity.icon); icon.setAttribute("data-identity-icon", identity.icon);
icon.setAttribute("data-identity-color", identity.color); icon.setAttribute("data-identity-color", identity.color);
i++;
} }
return Promise.resolve(null); return Promise.resolve(null);
}, },

View file

@ -179,7 +179,7 @@
<tbody id="edit-identities-list"></tbody> <tbody id="edit-identities-list"></tbody>
</table> </table>
</div> </div>
<div class="panel-footer panel-footer-secondary"> <div class="panel-footer panel-footer-secondary" hidden>
<a href="#" id="delete-link" class="edit-container-delete-button">Delete</a> <a href="#" id="delete-link" class="edit-container-delete-button">Delete</a>
</div> </div>
<div class="panel-footer edit-containers-panel-footer"> <div class="panel-footer edit-containers-panel-footer">