diff --git a/README.md b/README.md index f806377..ba40b6f 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ Easy Session Manager allows you to manage your Firefox session by backing up or # Download https://addons.mozilla.org/en-US/firefox/addon/easy-session-manager/ -# Version: 0.2.3.5 -* Updated prompting text +# Version: 0.2.3.6 +* Updated in place tab loading logic # Images diff --git a/src/manifest.json b/src/manifest.json index 67c1daf..dda09da 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Easy Session Manager", - "version": "0.2.3.5", + "version": "0.2.3.6", "description": "Easy Session Manager allows you to manage your Firefox session by backing up or loading your saved sessions.", "browser_specific_settings": { diff --git a/src/scripts/listener.js b/src/scripts/listener.js index c0e5a47..515098c 100644 --- a/src/scripts/listener.js +++ b/src/scripts/listener.js @@ -1,5 +1,5 @@ const onMessageListener = async (request, sender, sendResponse) => { - switch (request.action) { + switch (request.action) { case "new-window": { let store = request.store; let newWindow = await browser.windows.create({focused: false}); @@ -33,7 +33,7 @@ const onMessageListener = async (request, sender, sendResponse) => { browser.tabs.update(tabs.at(-1).id, { active: true }); browser.tabs.remove( tabs.at(0).id ) } - } + } } diff --git a/src/scripts/replaced_.js b/src/scripts/replaced_.js deleted file mode 100644 index 30f9e9a..0000000 --- a/src/scripts/replaced_.js +++ /dev/null @@ -1,62 +0,0 @@ -const sanitaize = { - encode: str => { - str = str || ""; - return str - .replace(/&/g, "&") - .replace(//g, ">") - .replace(/"/g, """) - .replace(/'/g, "'"); - }, - decode: str => { - str = str || ""; - return str - .replace(/</g, "<") - .replace(/>/g, ">") - .replace(/"/g, '"') - .replace(/'/g, "'") - .replace(/&/g, "&"); - } -}; - -let parameter = returnReplaceParameter(location.href); - -document.title = parameter.title; -document.getElementsByClassName("title")[0].innerText = parameter.title; -document.getElementsByClassName("replacedUrl")[0].value = parameter.url; - -if (parameter.favIconUrl === "" || parameter.favIconUrl === "undefined") { - parameter.favIconUrl = "../icons/nofavicon.png"; -} - -document.head.insertAdjacentHTML( - "beforeend", - `` -); -document.body.dataset.theme = parameter.theme || "light"; - -const copy = () => { - const url = document.querySelector(".replacedUrl"); - url.select(); - document.execCommand("Copy"); - document.querySelector(".copyButton").innerText = browser.i18n.getMessage("copiedLabel"); -}; - -document.querySelector(".copyButton").onclick = copy; -document.querySelector(".copyButton").innerText = browser.i18n.getMessage("copyUrlLabel"); - -if (parameter.state == "open_faild") { - document.getElementsByClassName("replacedPageMessage")[0].innerText = browser.i18n.getMessage( - "replacedPageMessage" - ); -} - -function returnReplaceParameter(url) { - let parameter = {}; - let paras = url.split("?")[1].split("&"); - for (let p of paras) { - parameter[p.split("=")[0]] = decodeURIComponent(p.split("=")[1]); - } - - return parameter; -} \ No newline at end of file diff --git a/src/scripts/session-manager.js b/src/scripts/session-manager.js index fbe25e3..bee4cf1 100644 --- a/src/scripts/session-manager.js +++ b/src/scripts/session-manager.js @@ -245,9 +245,32 @@ const loadSession = (json = null, replaceTabs = false) => { // First load tabs to current window. let store = json[keys[0]]; - store.forEach(tab => { - tabsApi.create({ url: tab.link }); - }); + for (let i = 0; i < store.length; i++) { + let createOption = (store[i].link !== "about:newtab") ? + { + active: false, + discarded: true, + pinned: false, + url: store[i].link, + index: i + 1 + } + : { }; + + + tabsApi.create(createOption).catch( async (e) => { + createOption.url = returnReplaceURL( + "open_faild", + store[i].title, + store[i].link, + "../images/icons/error.png" + ); + + await tabsApi.create(createOption); + }); + } + + let tab = json[keys[0]].at(-1); + tabsApi.update(tab.id, { active: true }); tabsApi.remove(wasCurrentTabId); // If more than one window, load tabs to new windows.