62 lines
1.7 KiB
JavaScript
62 lines
1.7 KiB
JavaScript
const identityState = {
|
|
storageArea: {
|
|
area: browser.storage.local,
|
|
|
|
getContainerStoreKey(cookieStoreId) {
|
|
const storagePrefix = "identitiesState@@_";
|
|
return `${storagePrefix}${cookieStoreId}`;
|
|
},
|
|
|
|
async get(cookieStoreId) {
|
|
const storeKey = this.getContainerStoreKey(cookieStoreId);
|
|
const storageResponse = await this.area.get([storeKey]);
|
|
if (storageResponse && storeKey in storageResponse) {
|
|
return storageResponse[storeKey];
|
|
}
|
|
const defaultContainerState = identityState._createIdentityState();
|
|
await this.set(cookieStoreId, defaultContainerState);
|
|
|
|
return defaultContainerState;
|
|
},
|
|
|
|
set(cookieStoreId, data) {
|
|
const storeKey = this.getContainerStoreKey(cookieStoreId);
|
|
return this.area.set({
|
|
[storeKey]: data
|
|
});
|
|
},
|
|
|
|
remove(cookieStoreId) {
|
|
const storeKey = this.getContainerStoreKey(cookieStoreId);
|
|
return this.area.remove([storeKey]);
|
|
}
|
|
},
|
|
|
|
_createTabObject(tab) {
|
|
return Object.assign({}, tab);
|
|
},
|
|
|
|
async storeHidden(cookieStoreId, windowId) {
|
|
const containerState = await this.storageArea.get(cookieStoreId);
|
|
const tabsByContainer = await browser.tabs.query({cookieStoreId, windowId});
|
|
tabsByContainer.forEach((tab) => {
|
|
const tabObject = this._createTabObject(tab);
|
|
if (!backgroundLogic.isPermissibleURL(tab.url)) {
|
|
return;
|
|
}
|
|
// This tab is going to be closed. Let's mark this tabObject as
|
|
// non-active.
|
|
tabObject.active = false;
|
|
tabObject.hiddenState = true;
|
|
containerState.hiddenTabs.push(tabObject);
|
|
});
|
|
|
|
return this.storageArea.set(cookieStoreId, containerState);
|
|
},
|
|
|
|
_createIdentityState() {
|
|
return {
|
|
hiddenTabs: []
|
|
};
|
|
},
|
|
};
|