Excluding containers from sync with RegExp
https://github.com/mozilla/multi-account-containers/pull/2231
This commit is contained in:
parent
9afc07de0a
commit
61e5960c6f
5 changed files with 45 additions and 0 deletions
|
@ -37,6 +37,16 @@ form {
|
|||
margin-block: 4px 8px;
|
||||
}
|
||||
|
||||
.settings-group-column {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.settings-group-column label,
|
||||
.settings-group-column p {
|
||||
margin-block: 4px 8px;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
margin-inline: 0 8px;
|
||||
margin-block: 1px auto;
|
||||
|
|
|
@ -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) {
|
||||
|
@ -483,6 +484,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);
|
||||
|
|
|
@ -120,11 +120,13 @@ async function setupOptions() {
|
|||
const { replaceTabEnabled } = await browser.storage.local.get("replaceTabEnabled");
|
||||
const { pageActionEnabled } = await browser.storage.local.get({ pageActionEnabled: true });
|
||||
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("#pageActionCheck").checked = !!pageActionEnabled;
|
||||
document.querySelector("#changeTheme").selectedIndex = currentThemeId;
|
||||
document.querySelector("#syncExcludeRegExp").value = syncExcludeRegExp || "";
|
||||
setupContainerShortcutSelects();
|
||||
}
|
||||
|
||||
|
@ -178,11 +180,16 @@ 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("#pageActionCheck").addEventListener( "change", enableDisablePageAction);
|
||||
document.querySelector("#changeTheme").addEventListener( "change", changeTheme);
|
||||
document.querySelector("#syncExcludeRegExp").addEventListener( "change", updateSyncExcludeRegExp);
|
||||
document.querySelector("#containersRestoreInput").addEventListener( "change", restoreContainers);
|
||||
|
||||
maybeShowPermissionsWarningIcon();
|
||||
|
|
|
@ -48,6 +48,15 @@
|
|||
</label>
|
||||
<p><em data-i18n-message-id="enableSyncDescription"></em></p>
|
||||
</div>
|
||||
<div class="settings-group-column">
|
||||
<label for="syncExcludeRegExp">
|
||||
<span class="bold" data-i18n-message-id="syncExclude"></span>
|
||||
</label>
|
||||
<input id="syncExcludeRegExp"
|
||||
data-i18n-attribute="placeholder"
|
||||
data-i18n-attribute-message-id="syncExcludePlaceholder">
|
||||
<p><em data-i18n-message-id="syncExcludeDescription"></em></p>
|
||||
</div>
|
||||
|
||||
<h3 data-i18n-message-id="tabBehavior"></h3>
|
||||
<div class="settings-group">
|
||||
|
|
Loading…
Add table
Reference in a new issue