Hide/Show icon should be shown only if we have opened tabs
This commit is contained in:
parent
76ad3fcb0f
commit
71725d829b
2 changed files with 47 additions and 1 deletions
31
index.js
31
index.js
|
@ -42,7 +42,35 @@ let ContainerService =
|
||||||
|
|
||||||
// Map of identities.
|
// Map of identities.
|
||||||
ContextualIdentityService.getIdentities().forEach(identity => {
|
ContextualIdentityService.getIdentities().forEach(identity => {
|
||||||
this._identitiesState[identity.userContextId] = {hiddenTabUrls: []};
|
this._identitiesState[identity.userContextId] = {
|
||||||
|
hiddenTabUrls: [],
|
||||||
|
openTabs: 0,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
// It can happen that this jsm is loaded after the opening a container tab.
|
||||||
|
for (let tab of tabs) {
|
||||||
|
let xulTab = viewFor(tab);
|
||||||
|
let userContextId = parseInt(xulTab.getAttribute('usercontextid') || 0, 10);
|
||||||
|
if (userContextId) {
|
||||||
|
++this._identitiesState[userContextId].openTabs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tabs.on("open", tab => {
|
||||||
|
let xulTab = viewFor(tab);
|
||||||
|
let userContextId = parseInt(xulTab.getAttribute('usercontextid') || 0, 10);
|
||||||
|
if (userContextId) {
|
||||||
|
++this._identitiesState[userContextId].openTabs;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
tabs.on("close", tab => {
|
||||||
|
let xulTab = viewFor(tab);
|
||||||
|
let userContextId = parseInt(xulTab.getAttribute('usercontextid') || 0, 10);
|
||||||
|
if (userContextId && this._identitiesState[userContextId].openTabs) {
|
||||||
|
--this._identitiesState[userContextId].openTabs;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// WebExtension startup
|
// WebExtension startup
|
||||||
|
@ -65,6 +93,7 @@ let ContainerService =
|
||||||
color: identity.color,
|
color: identity.color,
|
||||||
userContextId: identity.userContextId,
|
userContextId: identity.userContextId,
|
||||||
hasHiddenTabs: !!this._identitiesState[identity.userContextId].hiddenTabUrls.length,
|
hasHiddenTabs: !!this._identitiesState[identity.userContextId].hiddenTabUrls.length,
|
||||||
|
hasOpenTabs: !!this._identitiesState[identity.userContextId].openTabs,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,17 @@ function showOrHideContainerTabs(userContextId, hasHiddenTabs) {
|
||||||
method: hasHiddenTabs ? 'showTabs' : 'hideTabs',
|
method: hasHiddenTabs ? 'showTabs' : 'hideTabs',
|
||||||
userContextId: userContextId
|
userContextId: userContextId
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
return browser.runtime.sendMessage({
|
||||||
|
method: 'getIdentity',
|
||||||
|
userContextId: userContextId
|
||||||
|
});
|
||||||
|
}).then((identity) => {
|
||||||
|
if (!identity.hasHiddenTabs && !identity.hasOpenTabs) {
|
||||||
|
hideorshowIcon.style.display = "none";
|
||||||
|
} else {
|
||||||
|
hideorshowIcon.style.display = "";
|
||||||
|
}
|
||||||
|
|
||||||
hideorshowIcon.src = hasHiddenTabs ? CONTAINER_HIDE_SRC : CONTAINER_UNHIDE_SRC;
|
hideorshowIcon.src = hasHiddenTabs ? CONTAINER_HIDE_SRC : CONTAINER_UNHIDE_SRC;
|
||||||
}).then(resolve);
|
}).then(resolve);
|
||||||
});
|
});
|
||||||
|
@ -79,6 +90,12 @@ browser.runtime.sendMessage({method: 'queryIdentities'}).then(identities=> {
|
||||||
</tr>`;
|
</tr>`;
|
||||||
|
|
||||||
identitiesListElement.innerHTML += identityRow;
|
identitiesListElement.innerHTML += identityRow;
|
||||||
|
|
||||||
|
// No tabs, no icon.
|
||||||
|
if (!identity.hasHiddenTabs && !identity.hasOpenTabs) {
|
||||||
|
const hideorshowIcon = document.querySelector(`#uci-${identity.userContextId}-hideorshow-icon`);
|
||||||
|
hideorshowIcon.style.display = "none";
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const rows = identitiesListElement.querySelectorAll('tr');
|
const rows = identitiesListElement.querySelectorAll('tr');
|
||||||
|
|
Loading…
Add table
Reference in a new issue