Merge pull request #1835 from Moonloard/replace-tab

Replace tab instead of creating a new one (#1765 #1704 #1590  #1837)
This commit is contained in:
luke crouch 2020-08-14 11:11:19 -05:00 committed by GitHub
commit 899476e81a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 12 deletions

View file

@ -51,6 +51,11 @@ window.assignManager = {
return !!syncEnabled; return !!syncEnabled;
}, },
async getReplaceTabEnabled() {
const { replaceTabEnabled } = await browser.storage.local.get("replaceTabEnabled");
return !!replaceTabEnabled;
},
getByUrlKey(siteStoreKey) { getByUrlKey(siteStoreKey) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.area.get([siteStoreKey]).then((storageResponse) => { this.area.get([siteStoreKey]).then((storageResponse) => {
@ -233,9 +238,11 @@ window.assignManager = {
return {}; return {};
} }
} }
const replaceTabEnabled = await this.storageArea.getReplaceTabEnabled();
const removeTab = backgroundLogic.NEW_TAB_PAGES.has(tab.url) const removeTab = backgroundLogic.NEW_TAB_PAGES.has(tab.url)
|| (messageHandler.lastCreatedTab || (messageHandler.lastCreatedTab
&& messageHandler.lastCreatedTab.id === tab.id); && messageHandler.lastCreatedTab.id === tab.id)
|| replaceTabEnabled;
const openTabId = removeTab ? tab.openerTabId : tab.id; const openTabId = removeTab ? tab.openerTabId : tab.id;
if (!this.canceledRequests[tab.id]) { if (!this.canceledRequests[tab.id]) {

View file

@ -16,25 +16,24 @@ async function requestPermissions() {
async function enableDisableSync() { async function enableDisableSync() {
const checkbox = document.querySelector("#syncCheck"); const checkbox = document.querySelector("#syncCheck");
if (checkbox.checked) { await browser.storage.local.set({syncEnabled: !!checkbox.checked});
await browser.storage.local.set({syncEnabled: true});
} else {
await browser.storage.local.set({syncEnabled: false});
}
browser.runtime.sendMessage({ method: "resetSync" }); browser.runtime.sendMessage({ method: "resetSync" });
} }
async function enableDisableReplaceTab() {
const checkbox = document.querySelector("#replaceTabCheck");
await browser.storage.local.set({replaceTabEnabled: !!checkbox.checked});
}
async function setupOptions() { async function setupOptions() {
const hasPermission = await browser.permissions.contains({permissions: ["bookmarks"]}); const hasPermission = await browser.permissions.contains({permissions: ["bookmarks"]});
const { syncEnabled } = await browser.storage.local.get("syncEnabled"); const { syncEnabled } = await browser.storage.local.get("syncEnabled");
const { replaceTabEnabled } = await browser.storage.local.get("replaceTabEnabled");
if (hasPermission) { if (hasPermission) {
document.querySelector("#bookmarksPermissions").checked = true; document.querySelector("#bookmarksPermissions").checked = true;
} }
if (syncEnabled) { document.querySelector("#syncCheck").checked = !!syncEnabled;
document.querySelector("#syncCheck").checked = true; document.querySelector("#replaceTabCheck").checked = !!replaceTabEnabled;
} else {
document.querySelector("#syncCheck").checked = false;
}
setupContainerShortcutSelects(); setupContainerShortcutSelects();
} }
@ -82,6 +81,7 @@ function resetOnboarding() {
document.addEventListener("DOMContentLoaded", setupOptions); document.addEventListener("DOMContentLoaded", setupOptions);
document.querySelector("#bookmarksPermissions").addEventListener( "change", requestPermissions); document.querySelector("#bookmarksPermissions").addEventListener( "change", requestPermissions);
document.querySelector("#syncCheck").addEventListener( "change", enableDisableSync); document.querySelector("#syncCheck").addEventListener( "change", enableDisableSync);
document.querySelector("#replaceTabCheck").addEventListener( "change", enableDisableReplaceTab);
document.querySelector("button").addEventListener("click", resetOnboarding); document.querySelector("button").addEventListener("click", resetOnboarding);
for (let i=0; i < NUMBER_OF_KEYBOARD_SHORTCUTS; i++) { for (let i=0; i < NUMBER_OF_KEYBOARD_SHORTCUTS; i++) {

View file

@ -20,6 +20,13 @@
Enable Sync Enable Sync
</label> </label>
<p><em>This setting allows you to sync your containers and site assignments across devices.</em></p> <p><em>This setting allows you to sync your containers and site assignments across devices.</em></p>
<h3>Tab behaviour:</h3>
<label>
<input type="checkbox" id="replaceTabCheck">
Replace tab instead of creating a new one
</label>
<p><em>Replace the current tab if a page which is assigned to another container is opened (instead of keeping the current tab open).
Opening tabs with middle mouse button is not affected.</em></p>
<h3>Keyboard Shortcuts:</h3> <h3>Keyboard Shortcuts:</h3>
<p><em>Edit which container is opened when using the numbered shortcuts.</em></p> <p><em>Edit which container is opened when using the numbered shortcuts.</em></p>
<p><label> <p><label>

View file

@ -87,7 +87,8 @@ const initializeWithTab = async (details = {
"browserActionBadgesClicked": [], "browserActionBadgesClicked": [],
"onboarding-stage": 7, "onboarding-stage": 7,
"achievements": [], "achievements": [],
"syncEnabled": true "syncEnabled": true,
"replaceTabEnabled": false
}); });
window.browser.storage.local.set.resetHistory(); window.browser.storage.local.set.resetHistory();
window.browser.storage.sync.clear(); window.browser.storage.sync.clear();