From 4c368f7c10f58e7ec1ff48d9eb9a1b86eb79c892 Mon Sep 17 00:00:00 2001 From: Maxim Stewart Date: Sat, 1 Feb 2020 00:59:29 -0600 Subject: [PATCH] Added tab count code logic --- README.md | 2 +- src/scripts/actions.js | 124 ++++++++++++++++++--------------- src/scripts/events.js | 4 +- src/scripts/session-manager.js | 45 ++++++++---- src/scripts/utils.js | 15 ++++ 5 files changed, 115 insertions(+), 75 deletions(-) diff --git a/README.md b/README.md index ac2d658..09a6892 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Easy Session Manager allows you to manage your Firefox session by backing up or https://addons.mozilla.org/en-US/firefox/addon/easy-session-manager/ # Version: 0.2.1.0 -Refactored code. +Refactored code and added tab count per session. # Images ![1 Default interface with no sessions. ](images/pic1.png) diff --git a/src/scripts/actions.js b/src/scripts/actions.js index d0b3c26..e8b9ed1 100644 --- a/src/scripts/actions.js +++ b/src/scripts/actions.js @@ -6,7 +6,72 @@ const getSavedSessionIDs = () => { storageApi.get(null).then((results) => { const sessions = Object.keys(results); for (let session of sessions) { - appendToSavedSessionsList(session); + storageApi.get(session).then((results) => { + size = getStoreSize(results[session]); + appendToSavedSessionsList(session, size); + }); + } + }); +} + +const saveToStorage = (name, data, action = "undefined", willReplace = false, sveElm = null) => { + storageApi.get(name).then((results) => { + const size = getStoreSize(data); // Must be outside try block for catch block to see it + try { + const json = JSON.parse(results[name]); // If a session is found + if (!willReplace) { + swal({ + title: "Replace?", + text: "Found a session with that name! Do you want to replace it?", + icon: "warning", + buttons: true, + dangerMode: true, + }).then((willReplace) => { + if (willReplace) { + console.log("door 1"); + storageApi.set({[name]: data}); + sveElm.innerText = size + " | " + name; + sveElm.name = name; + messageWindow("warning", "Overwrote session..."); + } else { + messageWindow("warning", "Canceled " + action + "..."); + } + }); + } else { + sveElm.innerText = size + " | " + name; + sveElm.name = name; + storageApi.set({[name]: data}); + messageWindow("warning", "Overwrote session..."); + } + } catch (e) { + if (action !== "edit") { + appendToSavedSessionsList(name, size); + messageWindow("success", "Saved session..."); + storageApi.set({[name]: data}); + } else { + storageApi.set({[name]: data}); + messageWindow("warning", "Overwrote session..."); + } + } + }); +} + +const deleteFromStorage = (elm = null, name = null) => { + swal({ + title: "Are you sure?", + text: "Do you wish to delete session:\n" + name + "?", + icon: "warning", + buttons: true, + dangerMode: true, + }).then((willDelete) => { + if (willDelete) { + storageApi.remove(name).then(() => { + elm.parentElement.removeChild(elm); + }); + selectedItem = null; // reset selectedItem + messageWindow("success", "Deleted session successfully..."); + } else { + messageWindow("warning", "Canceled deletion..."); } }); } @@ -22,60 +87,3 @@ const windowMaker = (i, keysLength, keys, json) => { windowApi.create({ url: urls }); } } - -const saveToStorage = (name, data, action = "undefined", willReplace = false) => { - storageApi.get(name).then((results) => { - try { - // If save finds a session successfully then check if replacing - const json = JSON.parse(results[name]); - if (!willReplace) { - swal({ - title: "Replace?", - text: "Found a session with that name! Do you want to replace it?", - icon: "warning", - buttons: true, - dangerMode: true, - }).then((willReplace) => { - if (willReplace) { - storageApi.set({[name]: data}); - messageWindow("warning", "Overwrote session..."); - } else { - messageWindow("warning", "Canceled " + action + "..."); - } - }); - } else { - storageApi.set({[name]: data}); - messageWindow("warning", "Overwrote session..."); - } - } catch (e) { - if (action !== "edit") { - appendToSavedSessionsList(name); - messageWindow("success", "Saved session..."); - storageApi.set({[name]: data}); - } else { - messageWindow("warning", "Overwrote session..."); - storageApi.set({[name]: data}); - } - } - }); -} - -const deleteFromStorage = (elm = null) => { - swal({ - title: "Are you sure?", - text: "Do you wish to delete session:\n" + elm.innerText + "?", - icon: "warning", - buttons: true, - dangerMode: true, - }).then((willDelete) => { - if (willDelete) { - storageApi.remove(elm.innerText).then(() => { - elm.parentElement.removeChild(elm); - }); - selectedItem = null; // reset selectedItem - messageWindow("success", "Deleted session successfully..."); - } else { - messageWindow("warning", "Canceled deletion..."); - } - }); -} diff --git a/src/scripts/events.js b/src/scripts/events.js index 3b7a9af..7a1be15 100644 --- a/src/scripts/events.js +++ b/src/scripts/events.js @@ -29,7 +29,7 @@ document.addEventListener("click", (e) => { if (action == "download") downloadSession(selectedItemName); else if (action == "delete") - deleteFromStorage(selectedItem); + deleteFromStorage(selectedItem, selectedItemName); else if (action == "edit") editSession(selectedItem, selectedItemName); } else { @@ -49,7 +49,7 @@ document.addEventListener("dblclick", (e) => { if (e.button == 0) { // Left click if (e.target.tagName == "LI" && e.target.className.includes("sessionLI")) { selectedItem = e.target; - const id = selectedItem.innerText.trim(); + const id = selectedItem.getAttribute("name"); selectedItem.setAttribute("class", "sessionLI selected"); preLoadSession(id); } diff --git a/src/scripts/session-manager.js b/src/scripts/session-manager.js index 7b0ce76..2be835d 100644 --- a/src/scripts/session-manager.js +++ b/src/scripts/session-manager.js @@ -32,13 +32,13 @@ const saveSession = (elm = null, name = null, message = message1) => { let enteryName = inputTag.value.replace(/ /g, "_"); if (enteryName.length < 0 || enteryName.length > 54 || enteryName.search(regexp) == -1) { - saveSession(elm, message2); + saveSession(elm, name, message2); return ; } console.log("Saving session..."); sessionData = getSelectionData(container, keys, keysLength); - saveToStorage(enteryName, JSON.stringify(sessionData), "save", willReplace); + saveToStorage(enteryName, JSON.stringify(sessionData), "save", willReplace, elm); } else { messageWindow("warning", "Canceled save..."); } @@ -61,9 +61,17 @@ const editSession = (elm = null, name = null, message = message1) => { labelTag.htmlFor = "newSession"; storageApi.get(id).then((results) => { - let json = JSON.parse(results[id]); - let keys = Object.keys(json); - let keysLength = Object.keys(json).length; + let json = null; + let keys = null; + let keysLength = null; + + try { + json = JSON.parse(results[id]); + keys = Object.keys(json); + keysLength = Object.keys(json).length; + } catch (e) { + messageWindow("warning", "Canceled edit; couldn't load any data..."); + } let container = generateSelectionWindow(json, keys, keysLength); container.prepend(labelTag); container.prepend(newSessionTag); @@ -80,26 +88,35 @@ const editSession = (elm = null, name = null, message = message1) => { let newName = inputTag.value.replace(/ /g, "_"); if (newName.length < 0 || newName.length > 54 || newName.search(regexp) == -1) { - editSession(elm, message2); + editSession(elm, name, message2); return ; } - json = getSelectionData(container, keys, keysLength); + json = getSelectionData(container, keys, keysLength); + const strData = JSON.stringify(json); if (newSessionTag.checked) { // If creating new session - newName = checkSessionListForDuplicate(newName); - saveToStorage(newName, JSON.stringify(json), "save"); + newName = checkSessionListForDuplicate(newName); + saveToStorage(newName, strData, "save", false, elm); } else { if (newName == name) { // If not creating new session and are the same name storageApi.get(id).then((results) => { storageApi.remove(id); - saveToStorage(newName, JSON.stringify(json), "edit", true); - }).then(() => { elm.innerText = newName; }); + saveToStorage(newName, strData, "edit", true, elm); + }).then(() => { + const size = getStoreSize(strData); + elm.innerText = size + " | " + newName; + elm.setAttribute("name", newName); + }); } else { // If not creating new session and names are not the same rename storageApi.get(id).then((results) => { - storageApi.remove(id); newName = checkSessionListForDuplicate(newName); - saveToStorage(newName, JSON.stringify(json), "edit"); - }).then(() => { elm.innerText = newName; }); + storageApi.remove(id); + saveToStorage(newName, strData, "edit", false, elm); + }).then(() => { + const size = getStoreSize(strData); + elm.innerText = size + " | " + newName; + elm.setAttribute("name", newName); + }); } } } else { diff --git a/src/scripts/utils.js b/src/scripts/utils.js index 4cf7e60..bcd8438 100644 --- a/src/scripts/utils.js +++ b/src/scripts/utils.js @@ -73,6 +73,21 @@ const appendToSavedSessionsList = (enteryName, storeSize) => { // Generics +const getStoreSize = (session) => { + let count = 0; + try { + const json = JSON.parse(session); + const keys = Object.keys(json); + keys.forEach(key => { + count += json[key].length; + + }); + return count; + } catch (e) { } + + return count; +} + const getSessionData = (windows) => { let sessionData = {}; for (let i = 0; i < windows.length; i++) {