diff --git a/src/js/background/backgroundLogic.js b/src/js/background/backgroundLogic.js index cd649cb..43f935a 100644 --- a/src/js/background/backgroundLogic.js +++ b/src/js/background/backgroundLogic.js @@ -6,14 +6,15 @@ const backgroundLogic = { "about:home", "about:blank" ]), - NUMBER_OF_KEYBOARD_SHORTCUTS: 2, + NUMBER_OF_KEYBOARD_SHORTCUTS: 10, unhideQueue: [], init() { browser.commands.onCommand.addListener(function (command) { - for (let i=0; i < this.NUMBER_OF_KEYBOARD_SHORTCUTS; i++) { + for (let i=0; i < backgroundLogic.NUMBER_OF_KEYBOARD_SHORTCUTS; i++) { const key = "open_container_" + i; const cookieStoreId = identityState.keyboardShortcut[key]; if (command === key) { + if (cookieStoreId === "none") return; browser.tabs.create({cookieStoreId}); } } diff --git a/src/js/background/identityState.js b/src/js/background/identityState.js index 8d8f275..46cb34f 100644 --- a/src/js/background/identityState.js +++ b/src/js/background/identityState.js @@ -49,11 +49,21 @@ window.identityState = { }, async loadKeyboardShortcuts () { + const identities = await browser.contextualIdentities.query({}); for (let i=0; i < backgroundLogic.NUMBER_OF_KEYBOARD_SHORTCUTS; i++) { const key = "open_container_" + i; const storageObject = await this.area.get(key); - identityState.keyboardShortcut[key] = storageObject[key]; + if (storageObject[key]){ + identityState.keyboardShortcut[key] = storageObject[key]; + continue; + } + if (identities[i]) { + identityState.keyboardShortcut[key] = identities[i].cookieStoreId; + continue; + } + identityState.keyboardShortcut[key] = "none"; } + return identityState.keyboardShortcut; }, /* diff --git a/src/js/background/messageHandler.js b/src/js/background/messageHandler.js index d1bc33d..efe92dc 100644 --- a/src/js/background/messageHandler.js +++ b/src/js/background/messageHandler.js @@ -12,8 +12,7 @@ const messageHandler = { switch (m.method) { case "getShortcuts": - console.log("getShortcuts", identityState.keyboardShortcut); - response = identityState.keyboardShortcut; + response = identityState.storageArea.loadKeyboardShortcuts(); break; case "setShortcut": identityState.storageArea.setKeyboardShortcut(m.shortcut, m.cookieStoreId); @@ -105,7 +104,6 @@ const messageHandler = { }); break; } - console.log(m.method, "response", response); return response; }); diff --git a/src/js/options.js b/src/js/options.js index 71cca77..2d5f910 100644 --- a/src/js/options.js +++ b/src/js/options.js @@ -1,4 +1,4 @@ -const NUMBER_OF_KEYBOARD_SHORTCUTS = 2; +const NUMBER_OF_KEYBOARD_SHORTCUTS = 10; async function requestPermissions() { const checkbox = document.querySelector("#bookmarksPermissions"); @@ -40,11 +40,11 @@ async function setupOptions() { async function setupContainerShortcutSelects () { const keyboardShortcut = await browser.runtime.sendMessage({method: "getShortcuts"}); - // console.log(keyboardShortcut); const identities = await browser.contextualIdentities.query({}); const fragment = document.createDocumentFragment(); const noneOption = document.createElement("option"); noneOption.value = "none"; + noneOption.id = "none"; noneOption.textContent = "None"; fragment.append(noneOption); @@ -61,7 +61,8 @@ async function setupContainerShortcutSelects () { const shortcutSelect = document.getElementById(shortcutKey); shortcutSelect.appendChild(fragment.cloneNode(true)); if (keyboardShortcut && keyboardShortcut[shortcutKey]) { - shortcutSelect.getElementById(keyboardShortcut[shortcutKey]).selected = true; + const cookieStoreId = keyboardShortcut[shortcutKey]; + shortcutSelect.querySelector("#" + cookieStoreId).selected = true; } } } diff --git a/src/manifest.json b/src/manifest.json index c9513e2..ae79437 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -51,6 +51,54 @@ "default": "Ctrl+Shift+2" }, "description": "Container Shortcut 2" + }, + "open_container_2": { + "suggested_key": { + "default": "Ctrl+Shift+3" + }, + "description": "Container Shortcut 3" + }, + "open_container_3": { + "suggested_key": { + "default": "Ctrl+Shift+4" + }, + "description": "Container Shortcut 4" + }, + "open_container_4": { + "suggested_key": { + "default": "Ctrl+Shift+5" + }, + "description": "Container Shortcut 5" + }, + "open_container_5": { + "suggested_key": { + "default": "Ctrl+Shift+6" + }, + "description": "Container Shortcut 6" + }, + "open_container_6": { + "suggested_key": { + "default": "Ctrl+Shift+7" + }, + "description": "Container Shortcut 7" + }, + "open_container_7": { + "suggested_key": { + "default": "Ctrl+Shift+8" + }, + "description": "Container Shortcut 8" + }, + "open_container_8": { + "suggested_key": { + "default": "Ctrl+Shift+9" + }, + "description": "Container Shortcut 9" + }, + "open_container_9": { + "suggested_key": { + "default": "Ctrl+Shift+0" + }, + "description": "Container Shortcut 10" } }, "browser_action": { diff --git a/src/options.html b/src/options.html index 2651326..62671e1 100644 --- a/src/options.html +++ b/src/options.html @@ -18,15 +18,55 @@
This setting allows you to sync your containers and site assignments across devices.
+ + + + + + + +