enable extension settings

This commit is contained in:
antelle 2021-04-19 22:40:59 +02:00
parent c4be926b7c
commit 5bbc9003f4
No known key found for this signature in database
GPG Key ID: 63C9777AAB7C563C
4 changed files with 51 additions and 31 deletions

View File

@ -7,11 +7,8 @@ import {
deleteProtocolImplConnection
} from './protocol-impl';
import { RuntimeInfo } from 'const/runtime-info';
const logger = new Logger('browser-extension-connector');
if (!localStorage.debugBrowserExtension) {
logger.level = Logger.Level.Info;
}
import { AppSettingsModel } from 'models/app-settings-model';
import { Features } from 'util/features';
const WebConnectionInfo = {
connectionId: 1,
@ -19,6 +16,20 @@ const WebConnectionInfo = {
supportsNotifications: true
};
const SupportedExtensions = [
{ alias: 'KWC', name: 'KeeWeb Connect' },
{ alias: 'KPXC', name: 'KeePassXC-Browser' }
];
const SupportedBrowsers = ['Chrome', 'Firefox', 'Edge', 'Other'];
if (Features.isMac) {
SupportedBrowsers.unshift('Safari');
}
const logger = new Logger('browser-extension-connector');
if (!localStorage.debugBrowserExtension) {
logger.level = Logger.Level.Info;
}
const connections = new Map();
const pendingBrowserMessages = [];
let processingBrowserMessage = false;
@ -79,6 +90,17 @@ const BrowserExtensionConnector = {
window.removeEventListener('message', this.browserWindowMessage);
},
isEnabledOnDesktop() {
for (const browser of SupportedBrowsers) {
for (const ext of SupportedExtensions) {
if (AppSettingsModel[`extensionEnabled${ext.alias}${browser}`]) {
return true;
}
}
}
return false;
},
async startDesktopAppListener() {
const { ipcRenderer } = Launcher.electron();
ipcRenderer.invoke('browserExtensionConnectorStart', {
@ -198,4 +220,4 @@ const BrowserExtensionConnector = {
}
};
export { BrowserExtensionConnector };
export { BrowserExtensionConnector, SupportedExtensions, SupportedBrowsers };

View File

@ -23,14 +23,14 @@ const Links = {
HaveIBeenPwnedPrivacy: 'https://haveibeenpwned.com/Passwords',
ExtensionHelpForOtherBrowsers:
'https://github.com/keeweb/keeweb/wiki/Browser-AutoFill#other-browsers',
KeeWebConnectForChrome: 'https://TODO',
KeeWebConnectForFirefox: 'https://TODO',
KeeWebConnectForEdge: 'https://TODO',
KeeWebConnectForSafari: 'https://TODO',
KeePassXcBrowserForChrome:
KWCForChrome: 'https://TODO',
KWCForFirefox: 'https://TODO',
KWCForEdge: 'https://TODO',
KWCForSafari: 'https://TODO',
KPXCForChrome:
'https://chrome.google.com/webstore/detail/keepassxc-browser/oboonakemofpalcgghocfoadofidjkkk',
KeePassXcBrowserForFirefox: 'https://addons.mozilla.org/firefox/addon/keepassxc-browser/',
KeePassXcBrowserForEdge:
KPXCForFirefox: 'https://addons.mozilla.org/firefox/addon/keepassxc-browser/',
KPXCForEdge:
'https://microsoftedge.microsoft.com/addons/detail/keepassxcbrowser/pdffhmdngciaglkoonimfcmckehcpafo'
};

View File

@ -4,6 +4,7 @@ import { Features } from 'util/features';
import { Links } from 'const/links';
import { AppSettingsModel } from 'models/app-settings-model';
import { Locale } from 'util/locale';
import { SupportedBrowsers, SupportedExtensions } from 'comp/extension/browser-extension-connector';
class SettingsBrowserView extends View {
template = template;
@ -34,28 +35,25 @@ class SettingsBrowserView extends View {
}
getSettingsPerBrowser() {
const browsers = ['Chrome', 'Firefox', 'Edge', Locale.setBrowserOtherBrowsers];
if (Features.isMac) {
browsers.unshift('Safari');
}
return browsers.map((browser) => {
const extensions = [
{ alias: 'kwc', loc: 'KeeWebConnect' },
{ alias: 'kpxc', loc: 'KeePassXcBrowser' }
];
for (const ext of extensions) {
ext.supported = true;
ext.enabled = !!AppSettingsModel[`${ext.alias}EnabledFor${browser}`];
ext.installUrl = Links[`${ext.loc}For${browser}`];
return SupportedBrowsers.map((browser) => {
const browserName = browser === 'Other' ? Locale.setBrowserOtherBrowsers : browser;
const extensions = SupportedExtensions.map((ext) => {
ext = {
...ext,
supported: true,
enabled: !!AppSettingsModel[`extensionEnabled${ext.alias}${browser}`],
installUrl: Links[`${ext.alias}For${browser}`]
};
if (!ext.installUrl) {
if (browser === Locale.setBrowserOtherBrowsers) {
if (browser === 'Other') {
ext.helpUrl = Links.ExtensionHelpForOtherBrowsers;
} else {
ext.supported = false;
}
}
}
return { browser, extensions };
return ext;
});
return { browser, browserName, extensions };
});
}
@ -64,7 +62,7 @@ class SettingsBrowserView extends View {
const browser = e.target.dataset.browser;
const extension = e.target.dataset.extension;
const setting = `${extension}EnabledFor${browser}`;
const setting = `extensionEnabled${extension}${browser}`;
if (setting) {
AppSettingsModel[setting] = enabled;
} else {

View File

@ -21,7 +21,7 @@
<tbody>
{{#each settingsPerBrowser as |perBrowser|}}
<tr>
<td>{{perBrowser.browser}}</td>
<td>{{perBrowser.browserName}}</td>
{{#each perBrowser.extensions as |setting|}}
<td>
{{#if setting.supported}}