Fixed serchmode persistence and missing slot 0 tab

This commit is contained in:
Maxim Stewart 2018-05-24 17:04:06 -05:00
parent da93d9cfc3
commit c70553b0e4
5 changed files with 70 additions and 27 deletions

View File

@ -4,9 +4,10 @@ Search Firefox tabs and get a list or automatic direct to the searched tab.
# Download
https://addons.mozilla.org/en-US/firefox/addon/tab-search-and-manage/
# Version: 1.2.6
# Version: 1.2.8
<ul>
<li>Added all window search and list with toggling functionality.</li>
<li>Fixed search type persistence.</li>
<li>Fixed missing starting tabs in list.</li>
</ul>
***Note:

View File

@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "Tab Search and Manage",
"version": "1.2.6",
"version": "1.2.8",
"description": "This plugin can search, drag-n-drop ordering, and (un)hide all or some tabs.",
"applications": {
@ -18,7 +18,8 @@
"permissions": [
"tabs",
"tabHide"
"tabHide",
"storage"
],
"browser_action": {

View File

@ -59,16 +59,12 @@ document.addEventListener("click", (e) => {
} else if (targetID == "searchMode") {
var currentMode = target.getAttribute("searchwindowsmode");
if (currentMode == "true") {
target.title = "Searching curent window...";
target.children[0].src = "../icons/window.png";
target.setAttribute("searchwindowsmode", "false");
// In generateview
setSearchMode(target, "curent window", "window", false);
} else {
target.title = "Searching all windows...";
target.children[0].src = "../icons/windows.png";
target.setAttribute("searchwindowsmode", "true");
setSearchMode(target, "all windows", "windows", true);
}
clearNodes(listZone);
getTabs();
}
});

View File

@ -1,3 +1,4 @@
const storageArea = browser.storage.local;
const tabsAction = browser.tabs;
const searchBar = document.getElementById("searchBar");
const errHandler = document.getElementById("errorZone");
@ -33,6 +34,7 @@ function logTabs(tabs) {
windowIndex++;
createContainer(tab);
} else {
createContainer(tab);
windowIndex = 1;
}
}
@ -104,15 +106,49 @@ function createTab() {
function onError(error) { console.log(`Error: ${error}`); }
function getTabs() {
var elm = document.getElementById("searchMode");
var currentMode = (elm.getAttribute("searchwindowsmode") == "false");
clearNodes(listZone);
storageArea.get("searchMode").then((results) => {
var target = document.getElementById("searchMode");
if (Object.keys(results).length > 0) {
var fileKeys = Object.keys(results);
for (let fileKey of fileKeys) {
var key = results[fileKey];
if (key) {
target.title = "Searching curent windows...";
target.children[0].src = "../icons/windows.png";
target.setAttribute("searchwindowsmode", true);
if (currentMode == false) {
tabsAction.query({}).then(logTabs, onError)
.then(resetWinIndex, onError);
} else {
tabsAction.query({currentWindow: currentMode})
.then(logTabs, onError)
target.title = "Searching curent window...";
target.children[0].src = "../icons/window.png";
target.setAttribute("searchwindowsmode", false);
tabsAction.query({currentWindow: true})
.then(logTabs, onError);
}
}
} else {
setSearchMode(target, "curent window", "window", false);
}
});
}
async function setSearchMode(target, text, img, state) {
target.title = "Searching " + text + "...";
target.children[0].src = "../icons/" + img + ".png";
target.setAttribute("searchwindowsmode", state);
await storageArea.set({"searchMode": state });
getTabs(); // No loop b/c object keys will be greater than 0 after setup
}
function clearNodes(targetNode) {
while (targetNode.firstChild) {
targetNode.removeChild(targetNode.firstChild);
}
}

View File

@ -39,10 +39,19 @@ function searchTabs() {
var currentMode = (elm.getAttribute("searchwindowsmode") == "false");
clearNodes(listZone);
if (currentMode == false) {
tabsAction.query({}).then(findTabs, onError);
storageArea.get("searchMode").then((results) => {
if (Object.keys(results).length > 0) {
var fileKeys = Object.keys(results);
for (let fileKey of fileKeys) {
var key = results[fileKey];
if (key) {
tabsAction.query({}).then(findTabs, onError)
.then(resetWinIndex, onError);
} else {
tabsAction.query({currentWindow: currentMode})
tabsAction.query({currentWindow: true})
.then(findTabs, onError)
}
}
}
});
}