Merge pull request #2231 from stoically/stoically/feat/sync-exclude-regexp
Excluding containers from sync with RegExp
This commit is contained in:
@@ -27,6 +27,7 @@ const backgroundLogic = {
|
||||
|
||||
browser.permissions.onAdded.addListener(permissions => this.resetPermissions(permissions));
|
||||
browser.permissions.onRemoved.addListener(permissions => this.resetPermissions(permissions));
|
||||
backgroundLogic.setSyncExclusion();
|
||||
},
|
||||
|
||||
resetPermissions(permissions) {
|
||||
@@ -399,6 +400,17 @@ const backgroundLogic = {
|
||||
cookieStoreId(userContextId) {
|
||||
if(userContextId === 0) return "firefox-default";
|
||||
return `firefox-container-${userContextId}`;
|
||||
},
|
||||
|
||||
async setSyncExclusion() {
|
||||
// Default container sync exclude regexp to "^tmp\d+$" to prevent
|
||||
// https://github.com/mozilla/multi-account-containers/issues/1675
|
||||
// https://github.com/stoically/temporary-containers/issues/371
|
||||
// for future users of the MAC + TC combination.
|
||||
const { syncExcludeRegExp } = await browser.storage.local.get("syncExcludeRegExp");
|
||||
if (syncExcludeRegExp === undefined) {
|
||||
browser.storage.local.set({syncExcludeRegExp: "^tmp\\d+$"});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -128,9 +128,16 @@ const sync = {
|
||||
await sync.checkForListenersMaybeAdd();
|
||||
|
||||
async function updateSyncIdentities() {
|
||||
const { syncExcludeRegExp } = await browser.storage.local.get("syncExcludeRegExp");
|
||||
const excludeRegExp = new RegExp(syncExcludeRegExp, "i");
|
||||
const identities = await browser.contextualIdentities.query({});
|
||||
|
||||
for (const identity of identities) {
|
||||
// skip excluded identities
|
||||
if (identity.name.match(excludeRegExp)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
delete identity.colorCode;
|
||||
delete identity.iconUrl;
|
||||
identity.macAddonUUID = await identityState.lookupMACaddonUUID(identity.cookieStoreId);
|
||||
|
||||
@@ -63,10 +63,12 @@ async function setupOptions() {
|
||||
const { syncEnabled } = await browser.storage.local.get("syncEnabled");
|
||||
const { replaceTabEnabled } = await browser.storage.local.get("replaceTabEnabled");
|
||||
const { currentThemeId } = await browser.storage.local.get("currentThemeId");
|
||||
const { syncExcludeRegExp } = await browser.storage.local.get("syncExcludeRegExp");
|
||||
|
||||
document.querySelector("#syncCheck").checked = !!syncEnabled;
|
||||
document.querySelector("#replaceTabCheck").checked = !!replaceTabEnabled;
|
||||
document.querySelector("#changeTheme").selectedIndex = currentThemeId;
|
||||
document.querySelector("#syncExcludeRegExp").value = syncExcludeRegExp || "";
|
||||
setupContainerShortcutSelects();
|
||||
}
|
||||
|
||||
@@ -120,10 +122,15 @@ async function resetPermissionsUi() {
|
||||
browser.permissions.onAdded.addListener(resetPermissionsUi);
|
||||
browser.permissions.onRemoved.addListener(resetPermissionsUi);
|
||||
|
||||
function updateSyncExcludeRegExp(event) {
|
||||
browser.storage.local.set({syncExcludeRegExp: event.target.value});
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", setupOptions);
|
||||
document.querySelector("#syncCheck").addEventListener( "change", enableDisableSync);
|
||||
document.querySelector("#replaceTabCheck").addEventListener( "change", enableDisableReplaceTab);
|
||||
document.querySelector("#changeTheme").addEventListener( "change", changeTheme);
|
||||
document.querySelector("#syncExcludeRegExp").addEventListener( "change", updateSyncExcludeRegExp);
|
||||
|
||||
maybeShowPermissionsWarningIcon();
|
||||
for (let i=0; i < NUMBER_OF_KEYBOARD_SHORTCUTS; i++) {
|
||||
|
||||
Reference in New Issue
Block a user