diff --git a/app/scripts/comp/extension/protocol-impl.js b/app/scripts/comp/extension/protocol-impl.js index 37a99ea9..2bc8f1ea 100644 --- a/app/scripts/comp/extension/protocol-impl.js +++ b/app/scripts/comp/extension/protocol-impl.js @@ -428,7 +428,11 @@ const ProtocolHandlers = { entries = filter.getEntries().length > 0; if (!entries.length) { - throw makeError(Errors.noMatches); + if (AppSettingsModel.extensionFocusIfEmpty) { + filter.useUrl = false; + } else { + throw makeError(Errors.noMatches); + } } } diff --git a/app/scripts/const/default-app-settings.js b/app/scripts/const/default-app-settings.js index 23d3a873..720679e0 100644 --- a/app/scripts/const/default-app-settings.js +++ b/app/scripts/const/default-app-settings.js @@ -48,6 +48,7 @@ const DefaultAppSettings = { disableOfflineStorage: false, // don't cache loaded files in offline storage shortLivedStorageToken: false, // short-lived sessions in cloud storage providers extensionFocusIfLocked: true, // focus KeeWeb if a browser extension tries to connect while KeeWeb is locked + extensionFocusIfEmpty: true, // show the entry selection screen if there's no match found by URL yubiKeyShowIcon: true, // show an icon to open OTP codes from YubiKey yubiKeyAutoOpen: false, // auto-load one-time codes when there are open files diff --git a/app/scripts/locales/base.json b/app/scripts/locales/base.json index 3c6bf329..9544763b 100644 --- a/app/scripts/locales/base.json +++ b/app/scripts/locales/base.json @@ -652,6 +652,7 @@ "setBrowserNotEnabled": "Browser integration is not enabled, extensions won't be able to connect to KeeWeb. Use the checkboxes below to enable it:", "setBrowserEnablePerBrowser": "Enable browser integration using the checkboxes below:", "setBrowserFocusIfLocked": "Open KeeWeb if a browser extension tries to connect while there's no open file", + "setBrowserFocusIfEmpty": "Show the entry selection screen if there's no match found by URL", "setBrowserOtherBrowsers": "Other browsers", "setBrowserExtensionFor": "for {}", "setBrowserExtensionNotSupported": "Not supported", diff --git a/app/scripts/views/settings/settings-browser-view.js b/app/scripts/views/settings/settings-browser-view.js index 905aec6e..4ab170aa 100644 --- a/app/scripts/views/settings/settings-browser-view.js +++ b/app/scripts/views/settings/settings-browser-view.js @@ -20,6 +20,7 @@ class SettingsBrowserView extends View { events = { 'change .check-enable-for-browser': 'changeEnableForBrowser', 'change .settings__browser-focus-if-locked': 'changeFocusIfLocked', + 'change .settings__browser-focus-if-empty': 'changeFocusIfEmpty', 'change .settings__browser-session-ask-get': 'changeSessionAskGet', 'change .settings__browser-session-ask-save': 'changeSessionAskSave', 'change .settings__browser-session-file-check': 'changeSessionFileAccess', @@ -37,6 +38,7 @@ class SettingsBrowserView extends View { desktop: Features.isDesktop, icon: Features.browserIcon, focusIfLocked: AppSettingsModel.extensionFocusIfLocked, + focusIfEmpty: AppSettingsModel.extensionFocusIfEmpty, sessions: BrowserExtensionConnector.sessions.map((session) => { const fileAccess = this.getSessionFileAccess(session); return { @@ -157,6 +159,11 @@ class SettingsBrowserView extends View { this.render(); } + changeFocusIfEmpty(e) { + AppSettingsModel.extensionFocusIfEmpty = e.target.checked; + this.render(); + } + changeSessionAskGet(e) { const clientId = e.target.dataset.clientId; const askGet = e.target.value; diff --git a/app/templates/settings/settings-browser.hbs b/app/templates/settings/settings-browser.hbs index 0d2fcccd..618c8acb 100644 --- a/app/templates/settings/settings-browser.hbs +++ b/app/templates/settings/settings-browser.hbs @@ -73,6 +73,12 @@ {{#if focusIfLocked}}checked{{/if}} /> +
+ + +

{{res 'setBrowserSessions'}}

{{#if sessions.length}}