This commit is contained in:
antelle 2019-09-16 22:01:59 +02:00
parent 0dea89c0de
commit 9859e921d2
9 changed files with 35 additions and 23 deletions

5
app/scripts/.eslintrc Normal file
View File

@ -0,0 +1,5 @@
{
"rules": {
"import/no-commonjs": "error"
}
}

View File

@ -75,7 +75,7 @@ ready(() => {
KdbxwebInit.init();
FocusDetector.init();
window.kw = ExportApi;
return PluginManager.instance.init();
return PluginManager.init();
}
function showSettingsLoadError() {
@ -141,10 +141,7 @@ ready(() => {
Updater.init();
SingleInstanceChecker.init();
AppRightsChecker.init();
setTimeout(
() => PluginManager.instance.runAutoUpdate(),
Timeouts.AutoUpdatePluginsAfterStart
);
setTimeout(() => PluginManager.runAutoUpdate(), Timeouts.AutoUpdatePluginsAfterStart);
}
function showView() {

View File

@ -0,0 +1,12 @@
import EventEmitter from 'events';
class EventBus extends EventEmitter {
constructor() {
super();
this.setMaxListeners(100);
}
}
const instance = new EventBus();
export { instance as EventBus };

View File

@ -141,7 +141,7 @@ const AppModel = Backbone.Model.extend({
}
if (config.plugins) {
const pluginsPromises = config.plugins.map(plugin =>
PluginManager.instance.installIfNew(plugin.url, plugin.manifest, true)
PluginManager.installIfNew(plugin.url, plugin.manifest, true)
);
return Promise.all(pluginsPromises).then(() => {
this.settings.set(config.settings);

View File

@ -233,6 +233,6 @@ const PluginManager = Backbone.Model.extend({
}
});
PluginManager.instance = new PluginManager();
const instance = new PluginManager();
export { PluginManager };
export { instance as PluginManager };

View File

@ -1,6 +1,7 @@
import { Color } from 'util/data/color';
const ThemeVarsScss = require('raw-loader!../../styles/base/_theme-vars.scss').default;
// eslint-disable-next-line import/no-commonjs
const ThemeDefaults = require('../../styles/themes/_theme-defaults.scss');
const ThemeVars = {

View File

@ -1,4 +1,3 @@
import Backbone from 'backbone';
import kdbxweb from 'kdbxweb';
import { Keys } from 'const/keys';
import { Locale } from 'util/locale';

View File

@ -40,7 +40,7 @@ class SettingsPluginsView extends View {
constructor(model, options) {
super(model, options);
this.listenTo(PluginManager.instance, 'change', this.render.bind(this));
this.listenTo(PluginManager, 'change', this.render.bind(this));
this.listenTo(
Backbone,
'plugin-gallery-load-complete',
@ -50,8 +50,7 @@ class SettingsPluginsView extends View {
render() {
super.render({
plugins: PluginManager.instance
.get('plugins')
plugins: PluginManager.get('plugins')
.map(plugin => ({
id: plugin.id,
manifest: plugin.get('manifest'),
@ -90,7 +89,7 @@ class SettingsPluginsView extends View {
if (!PluginGallery.gallery) {
return null;
}
const plugins = PluginManager.instance.get('plugins');
const plugins = PluginManager.get('plugins');
return PluginGallery.gallery.plugins
.map(pl => ({
url: pl.url,
@ -145,8 +144,7 @@ class SettingsPluginsView extends View {
urlTextBox.prop('disabled', true);
installBtn.text(Locale.setPlInstallBtnProgress + '...').prop('disabled', true);
this.installFromUrl = { url };
PluginManager.instance
.install(url, undefined, true)
PluginManager.install(url, undefined, true)
.then(() => {
this.installFinished();
this.installFromUrl = null;
@ -170,22 +168,22 @@ class SettingsPluginsView extends View {
uninstallClick(e) {
const pluginId = $(e.target).data('plugin');
PluginManager.instance.uninstall(pluginId);
PluginManager.uninstall(pluginId);
}
disableClick(e) {
const pluginId = $(e.target).data('plugin');
PluginManager.instance.disable(pluginId);
PluginManager.disable(pluginId);
}
enableClick(e) {
const pluginId = $(e.target).data('plugin');
PluginManager.instance.activate(pluginId);
PluginManager.activate(pluginId);
}
updateClick(e) {
const pluginId = $(e.target).data('plugin');
PluginManager.instance.update(pluginId);
PluginManager.update(pluginId);
}
useLocaleClick(e) {
@ -205,8 +203,7 @@ class SettingsPluginsView extends View {
installBtn.text(Locale.setPlInstallBtnProgress + '...').prop('disabled', true);
this.installing[plugin.url] = true;
delete this.installErrors[plugin.url];
PluginManager.instance
.install(plugin.url, plugin.manifest)
PluginManager.install(plugin.url, plugin.manifest)
.catch(e => {
this.installErrors[plugin.url] = e;
delete this.installing[plugin.url];
@ -254,14 +251,14 @@ class SettingsPluginsView extends View {
const setting = settingEl.data('setting');
const pluginId = settingEl.data('plugin');
const val = el.type === 'checkbox' ? el.checked : el.value;
const plugin = PluginManager.instance.getPlugin(pluginId);
const plugin = PluginManager.getPlugin(pluginId);
plugin.setSettings({ [setting]: val });
}
autoUpdateChange(e) {
const pluginId = $(e.target).data('plugin');
const enabled = e.target.checked;
PluginManager.instance.setAutoUpdate(pluginId, enabled);
PluginManager.setAutoUpdate(pluginId, enabled);
}
}

View File

@ -10,6 +10,7 @@
<h3>Libraries</h3>
<ul>
<li><a href="https://electron.atom.io/" target="_blank">electron</a><span class="muted-color">, cross-platform desktop apps framework</span></li>
<li><a href="https://github.com/patrick-steele-idem/morphdom" target="_blank">morphdom</a><span class="muted-color">, fast and lightweight DOM diffing/patching</span></li>
<li><a href="https://backbonejs.org/" target="_blank">backbone</a><span class="muted-color">, JavaScript framework</span></li>
<li><a href="https://underscorejs.org/" target="_blank">underscore</a><span class="muted-color">, utility-belt library for JavaScript</span></li>
<li><a href="https://jquery.com/" target="_blank">jQuery</a><span class="muted-color">, fast, small, and feature-rich JavaScript library</span></li>