mirror of https://github.com/keeweb/keeweb
enable extension settings
parent
c4be926b7c
commit
5bbc9003f4
|
@ -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 };
|
||||
|
|
|
@ -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'
|
||||
};
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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}}
|
||||
|
|
Loading…
Reference in New Issue