From d2978510cab0f1abcec46e36a92b7f477311bc7a Mon Sep 17 00:00:00 2001 From: luke crouch Date: Thu, 29 Dec 2016 09:09:19 -0600 Subject: [PATCH] fix #9: implement sorting tabs by container (#23) --- index.js | 3 +-- webextension/js/popup.js | 33 +++++++++++++++++++++++++++++++-- webextension/manifest.json | 5 +++-- webextension/popup.html | 2 +- 4 files changed, 36 insertions(+), 7 deletions(-) diff --git a/index.js b/index.js index 7b373c3..34660cf 100644 --- a/index.js +++ b/index.js @@ -1,9 +1,8 @@ -const {ContextualIdentityService} = require('resource://gre/modules/ContextualIdentityService.jsm'); +/* global require */ const tabs = require('sdk/tabs'); const webExtension = require('sdk/webextension'); function handleWebExtensionMessage(message, sender, sendReply) { - console.log(message); switch (message) { case 'open-containers-preferences': tabs.open('about:preferences#containers'); diff --git a/webextension/js/popup.js b/webextension/js/popup.js index feb3147..e8481a7 100644 --- a/webextension/js/popup.js +++ b/webextension/js/popup.js @@ -16,10 +16,10 @@ function showContainer(containerId) { browser.contextualIdentities.show(containerId); } -browser.contextualIdentities.query({}).then(identites=> { +browser.contextualIdentities.query({}).then(identities=> { const identitiesListElement = document.querySelector('.identities-list'); - identites.forEach(identity=> { + identities.forEach(identity=> { const identityRow = `
{ window.close(); }); }); + +function moveTabs(sortedTabsArray) { + let positionIndex = 0; + + sortedTabsArray.forEach(tabID=> { + browser.tabs.move(tabID, {index: positionIndex}); + positionIndex++; + }); +} + +document.querySelector('#sort-containers-link').addEventListener('click', ()=> { + browser.contextualIdentities.query({}).then(identities=> { + identities.unshift({cookieStoreId: 'firefox-default'}); + + browser.tabs.query({}).then(tabsArray=> { + const sortedTabsArray = []; + + identities.forEach(identity=> { + tabsArray.forEach(tab=> { + if (tab.cookieStoreId === identity.cookieStoreId) { + sortedTabsArray.push(tab.id); + } + }); + }); + + moveTabs(sortedTabsArray); + }); + }); +}); diff --git a/webextension/manifest.json b/webextension/manifest.json index 4079e5c..a1195e2 100644 --- a/webextension/manifest.json +++ b/webextension/manifest.json @@ -22,7 +22,9 @@ "permissions": [ "cookies", "experiments.contextualidentities", - "contextualidentities" + "contextualidentities", + "tabs", + "cookies" ], "browser_action": { @@ -36,4 +38,3 @@ } } - diff --git a/webextension/popup.html b/webextension/popup.html index 879795b..d79c7e4 100644 --- a/webextension/popup.html +++ b/webextension/popup.html @@ -14,7 +14,7 @@

Containers

- Sort Containers + Sort Containers