This commit is contained in:
antelle 2019-09-16 22:57:56 +02:00
parent 7f30350873
commit 2fcc6f2ea3
39 changed files with 202 additions and 193 deletions

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { FileInfoCollection } from 'collections/file-info-collection';
import { AppRightsChecker } from 'comp/app/app-rights-checker';
import { ExportApi } from 'comp/app/export-api';
@ -147,7 +147,7 @@ ready(() => {
function showView() {
appModel.prepare();
new AppView(appModel).render();
Backbone.trigger('app-ready');
Events.emit('app-ready');
logStartupTime();
}

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { AutoTypeFilter } from 'auto-type/auto-type-filter';
import { AutoTypeHelperFactory } from 'auto-type/auto-type-helper-factory';
import { AutoTypeParser } from 'auto-type/auto-type-parser';
@ -25,8 +25,8 @@ const AutoType = {
return;
}
this.appModel = appModel;
Backbone.on('auto-type', this.handleEvent, this);
Backbone.on('main-window-blur main-window-will-close', this.resetPendingEvent, this);
Events.on('auto-type', e => this.handleEvent(e));
Events.on('main-window-blur main-window-will-close', e => this.resetPendingEvent(e));
},
handleEvent(e) {
@ -66,7 +66,7 @@ const AutoType = {
});
if (AppSettingsModel.instance.get('lockOnAutoType')) {
Backbone.trigger('lock-workspace');
Events.emit('lock-workspace');
}
},
@ -249,15 +249,11 @@ const AutoType = {
this.selectEntryView.render();
this.selectEntryView.on('show-open-files', () => {
this.selectEntryView.hide();
Backbone.trigger('open-file');
Backbone.once(
'closed-open-view',
() => {
this.selectEntryView.show();
this.selectEntryView.setupKeys();
},
this
);
Events.emit('open-file');
Events.once('closed-open-view', () => {
this.selectEntryView.show();
this.selectEntryView.setupKeys();
});
});
},

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { Launcher } from 'comp/launcher';
const LocalStorageKeyName = 'instanceCheck';
@ -26,7 +26,7 @@ const SingleInstanceChecker = {
);
} else if (e.key === LocalStorageResponseKeyName && e.newValue.indexOf(instanceKey) < 0) {
window.removeEventListener('storage', SingleInstanceChecker.storageChanged);
Backbone.trigger('second-instance');
Events.emit('second-instance');
}
},

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { RuntimeInfo } from 'comp/app/runtime-info';
import { Transport } from 'comp/browser/transport';
import { Launcher } from 'comp/launcher';
@ -193,7 +193,7 @@ const Updater = {
} else {
UpdateModel.instance.set({ updateStatus: 'ready', updateError: null });
if (!startedByUser) {
Backbone.trigger('update-app');
Events.emit('update-app');
}
if (typeof successCallback === 'function') {
successCallback();

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { Launcher } from 'comp/launcher';
import { AppSettingsModel } from 'models/app-settings-model';
@ -15,10 +15,10 @@ const CopyPaste = {
Launcher.clearClipboardText();
}
};
Backbone.on('main-window-will-close', clearClipboard);
Events.on('main-window-will-close', clearClipboard);
setTimeout(() => {
clearClipboard();
Backbone.off('main-window-will-close', clearClipboard);
Events.off('main-window-will-close', clearClipboard);
}, clipboardSeconds * 1000);
}
return { success: true, seconds: clipboardSeconds };

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { Launcher } from 'comp/launcher';
import { Features } from 'util/features';
@ -10,13 +10,13 @@ const FocusDetector = {
window.addEventListener('focus', () => {
if (!FocusDetector.isFocused) {
FocusDetector.isFocused = true;
Backbone.trigger('main-window-focus');
Events.emit('main-window-focus');
}
});
window.addEventListener('blur', () => {
if (FocusDetector.isFocused) {
FocusDetector.isFocused = false;
Backbone.trigger('main-window-blur');
Events.emit('main-window-blur');
}
});
}

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { AppSettingsModel } from 'models/app-settings-model';
const IdleTracker = {
@ -10,7 +10,7 @@ const IdleTracker = {
const idleMinutes = (Date.now() - this.actionTime) / 1000 / 60;
const maxIdleMinutes = AppSettingsModel.instance.get('idleMinutes');
if (maxIdleMinutes && idleMinutes > maxIdleMinutes) {
Backbone.trigger('user-idle');
Events.emit('user-idle');
}
},
regUserAction() {
@ -18,6 +18,6 @@ const IdleTracker = {
}
};
Backbone.on('power-monitor-resume', IdleTracker.checkIdle, IdleTracker);
Events.on('power-monitor-resume', () => IdleTracker.checkIdle);
export { IdleTracker };

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { AuthReceiver } from 'comp/browser/auth-receiver';
import { Launcher } from 'comp/launcher';
import { Alerts } from 'comp/ui/alerts';
@ -21,7 +21,7 @@ const PopupNotifier = {
const win = windowOpen.apply(window, args);
if (win) {
PopupNotifier.deferCheckClosed(win);
Backbone.trigger('popup-opened', win);
Events.emit('popup-opened', win);
} else {
if (!Alerts.alertDisplayed) {
Alerts.error({
@ -117,7 +117,7 @@ const PopupNotifier = {
win = null;
});
win.loadURL(url);
Backbone.trigger('popup-opened', win);
Events.emit('popup-opened', win);
return win;
},
@ -153,7 +153,7 @@ const PopupNotifier = {
},
triggerClosed(win) {
Backbone.trigger('popup-closed', win);
Events.emit('popup-closed', win);
}
};

View File

@ -1,6 +1,6 @@
/* global FingerprintAuth */
import Backbone from 'backbone';
import { Events } from 'framework/events';
const Launcher = {
name: 'cordova',
@ -13,7 +13,7 @@ const Launcher = {
document.addEventListener(
'pause',
() => {
Backbone.trigger('app-minimized');
Events.emit('app-minimized');
},
false
);

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { Locale } from 'util/locale';
import { Logger } from 'util/logger';
@ -287,7 +287,7 @@ const Launcher = {
},
openFile(file) {
if (this.readyToOpenFiles) {
Backbone.trigger('launcher-open-file', file);
Events.emit('launcher-open-file', file);
} else {
this.pendingFileToOpen = file;
}
@ -297,16 +297,16 @@ const Launcher = {
}
};
Backbone.on('launcher-exit-request', () => {
Events.on('launcher-exit-request', () => {
setTimeout(() => Launcher.exit(), 0);
});
Backbone.on('launcher-minimize', () => setTimeout(() => Backbone.trigger('app-minimized'), 0));
Events.on('launcher-minimize', () => setTimeout(() => Events.emit('app-minimized'), 0));
window.launcherOpen = file => Launcher.openFile(file);
if (window.launcherOpenedFile) {
logger.info('Open file request', window.launcherOpenedFile);
Launcher.openFile(window.launcherOpenedFile);
delete window.launcherOpenedFile;
}
Backbone.on('app-ready', () => setTimeout(() => Launcher.checkOpenFiles(), 0));
Events.on('app-ready', () => setTimeout(() => Launcher.checkOpenFiles(), 0));
export { Launcher };

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { Features } from 'util/features';
import { Locale } from 'util/locale';
@ -85,7 +85,7 @@ const SettingsManager = {
}
_.extend(Locale, this.neutralLocale, localeValues);
this.activeLocale = loc;
Backbone.trigger('set-locale', loc);
Events.emit('set-locale', loc);
},
getBrowserLocale() {

View File

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

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { AppSettingsModel } from 'models/app-settings-model';
import { Locale } from 'util/locale';
import { Tip } from 'util/ui/tip';
@ -41,7 +41,7 @@ const Copyable = {
AppSettingsModel.instance.get('lockOnCopy')
) {
setTimeout(() => {
Backbone.trigger('lock-workspace');
Events.emit('lock-workspace');
}, Timeouts.BeforeAutoLock);
}
}, Timeouts.CopyTip);

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
const Resizable = {
listenDrag(dragView) {
@ -17,7 +17,7 @@ const Resizable = {
size = Math.max(dragInfo.min, Math.min(dragInfo.max, size));
this.$el[dragInfo.prop](size);
this.emit('view-resize', size);
Backbone.trigger('page-geometry', { source: 'resizable' });
Events.emit('page-geometry', { source: 'resizable' });
},
autoSize(e) {
@ -29,7 +29,7 @@ const Resizable = {
}
this.fixSize(dragInfo);
this.emit('view-resize', null);
Backbone.trigger('page-geometry', { source: 'resizable' });
Events.emit('page-geometry', { source: 'resizable' });
},
fixSize(cfg) {

View File

@ -1,5 +1,6 @@
import Backbone from 'backbone';
import baron from 'baron';
import { Events } from 'framework/events';
import { Features } from 'util/features';
const isEnabled = !Features.isMobile;
@ -49,7 +50,7 @@ const Scrollable = {
initScroll() {
if (isEnabled) {
this.listenTo(Backbone, 'page-geometry', this.pageResized);
this.listenTo(Events, 'page-geometry', this.pageResized);
}
}
};

View File

@ -1,5 +1,6 @@
import { AutoType } from 'auto-type';
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { AutoType } from 'auto-type';
import { Storage } from 'storage';
import { EntryCollection } from 'collections/entry-collection';
import { FileCollection } from 'collections/file-collection';
@ -37,13 +38,13 @@ const AppModel = Backbone.Model.extend({
this.isBeta = RuntimeInfo.beta;
this.advancedSearch = null;
this.listenTo(Backbone, 'refresh', this.refresh);
this.listenTo(Backbone, 'set-filter', this.setFilter);
this.listenTo(Backbone, 'add-filter', this.addFilter);
this.listenTo(Backbone, 'set-sort', this.setSort);
this.listenTo(Backbone, 'empty-trash', this.emptyTrash);
this.listenTo(Backbone, 'select-entry', this.selectEntry);
this.listenTo(Backbone, 'unset-keyfile', this.unsetKeyFile);
this.listenTo(Events, 'refresh', this.refresh);
this.listenTo(Events, 'set-filter', this.setFilter);
this.listenTo(Events, 'add-filter', this.addFilter);
this.listenTo(Events, 'set-sort', this.setSort);
this.listenTo(Events, 'empty-trash', this.emptyTrash);
this.listenTo(Events, 'select-entry', this.selectEntry);
this.listenTo(Events, 'unset-keyfile', this.unsetKeyFile);
this.appLogger = new Logger('app');
@ -272,8 +273,8 @@ const AppModel = Backbone.Model.extend({
const firstEntry = entries.first();
this.activeEntryId = firstEntry ? firstEntry.id : null;
}
Backbone.trigger('filter', { filter: this.filter, sort: this.sort, entries });
Backbone.trigger('entry-selected', entries.get(this.activeEntryId));
Events.emit('filter', { filter: this.filter, sort: this.sort, entries });
Events.emit('entry-selected', entries.get(this.activeEntryId));
},
refresh() {
@ -739,7 +740,7 @@ const AppModel = Backbone.Model.extend({
);
}
if (file.isKeyChangePending(true)) {
Backbone.trigger('key-change-pending', { file });
Events.emit('key-change-pending', { file });
}
const backup = file.get('backup');
if (data && backup && backup.enabled && backup.pending) {
@ -881,7 +882,7 @@ const AppModel = Backbone.Model.extend({
if (err) {
if (err.code === 'InvalidKey') {
logger.info('Remote key changed, request to enter new key');
Backbone.trigger('remote-key-changed', { file });
Events.emit('remote-key-changed', { file });
}
return complete(err);
}

View File

@ -1,6 +1,7 @@
import Backbone from 'backbone';
import kdbxweb from 'kdbxweb';
import demoFileData from 'demo.kdbx';
import { Events } from 'framework/events';
import { GroupCollection } from 'collections/group-collection';
import { KdbxToHtml } from 'comp/format/kdbx-to-html';
import { GroupModel } from 'models/group-model';
@ -420,7 +421,7 @@ const FileModel = Backbone.Model.extend({
setModified() {
if (!this.get('demo')) {
this.set({ modified: true, dirty: true });
Backbone.trigger('file-modified');
Events.emit('file-modified');
}
},
@ -548,7 +549,7 @@ const FileModel = Backbone.Model.extend({
this.db.meta.keyChanged = this._oldKeyChangeDate;
}
this.set({ keyFileName: '', keyFilePath: '', keyFileChanged: changed });
Backbone.trigger('unset-keyfile', this.id);
Events.emit('unset-keyfile', this.id);
this.setModified();
},

View File

@ -1,4 +1,5 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { MenuSectionCollection } from 'collections/menu/menu-section-collection';
import { Colors } from 'const/colors';
import { Keys } from 'const/keys';
@ -95,9 +96,9 @@ const MenuModel = Backbone.Model.extend({
]);
this.set('sections', this.menus.app);
this.listenTo(Backbone, 'set-locale', this._setLocale);
this.listenTo(Backbone, 'select-next-menu-item', this._selectNext);
this.listenTo(Backbone, 'select-previous-menu-item', this._selectPrevious);
this.listenTo(Events, 'set-locale', this._setLocale);
this.listenTo(Events, 'select-next-menu-item', this._selectNext);
this.listenTo(Events, 'select-previous-menu-item', this._selectPrevious);
this._setLocale();
},
@ -117,9 +118,9 @@ const MenuModel = Backbone.Model.extend({
const filterValue = (sel.option || sel.item).get('filterValue');
const filter = {};
filter[filterKey] = filterValue;
Backbone.trigger('set-filter', filter);
Events.emit('set-filter', filter);
} else if (sections === this.menus.settings) {
Backbone.trigger('set-page', {
Events.emit('set-page', {
page: sel.item.get('page'),
file: sel.item.get('file')
});

View File

@ -1,5 +1,5 @@
import Backbone from 'backbone';
import kdbxweb from 'kdbxweb';
import { Events } from 'framework/events';
import { SettingsStore } from 'comp/settings/settings-store';
import { Links } from 'const/links';
import { SignatureVerifier } from 'util/data/signature-verifier';
@ -45,7 +45,7 @@ const PluginGallery = {
this.gallery = gallery;
this.saveGallery(gallery);
}
Backbone.trigger('plugin-gallery-load-complete');
Events.emit('plugin-gallery-load-complete');
return gallery;
});
});

View File

@ -1,4 +1,5 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { Links } from 'const/links';
import { AppSettingsModel } from 'models/app-settings-model';
import { RuntimeDataModel } from 'models/runtime-data-model';
@ -176,7 +177,7 @@ _.extend(StorageBase.prototype, {
}
this._popupOpened(popupWindow);
const popupClosed = () => {
Backbone.off('popup-closed', popupClosed);
Events.off('popup-closed', popupClosed);
window.removeEventListener('message', windowMessage);
this.logger.error('OAuth error', 'popup closed');
callback('OAuth: popup closed');
@ -187,7 +188,7 @@ _.extend(StorageBase.prototype, {
}
const token = this._oauthProcessReturn(e.data);
if (token) {
Backbone.off('popup-closed', popupClosed);
Events.off('popup-closed', popupClosed);
window.removeEventListener('message', windowMessage);
if (token.error) {
this.logger.error('OAuth error', token.error, token.errorDescription);
@ -199,7 +200,7 @@ _.extend(StorageBase.prototype, {
this.logger.debug('Skipped OAuth message', e.data);
}
};
Backbone.on('popup-closed', popupClosed);
Events.on('popup-closed', popupClosed);
window.addEventListener('message', windowMessage);
},

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { Features } from 'util/features';
const Tip = function(el, config) {
@ -32,7 +32,7 @@ Tip.prototype.show = function() {
if ((!Tip.enabled && !this.force) || !this.title) {
return;
}
Backbone.on('page-geometry', this.hide);
Events.on('page-geometry', this.hide);
if (this.tipEl) {
this.tipEl.remove();
if (this.hideTimeout) {
@ -83,7 +83,7 @@ Tip.prototype.hide = function() {
if (this.tipEl) {
this.tipEl.remove();
this.tipEl = null;
Backbone.off('page-geometry', this.hide);
Events.off('page-geometry', this.hide);
}
};

View File

@ -1,5 +1,5 @@
import Backbone from 'backbone';
import { View } from 'framework/views/view';
import { Events } from 'framework/events';
import { IdleTracker } from 'comp/browser/idle-tracker';
import { KeyHandler } from 'comp/browser/key-handler';
import { Launcher } from 'comp/launcher';
@ -63,33 +63,33 @@ class AppView extends View {
this.listenTo(this.model.settings, 'change:fontSize', this.setFontSize);
this.listenTo(this.model.files, 'update reset', this.fileListUpdated);
this.listenTo(Backbone, 'select-all', this.selectAll);
this.listenTo(Backbone, 'menu-select', this.menuSelect);
this.listenTo(Backbone, 'lock-workspace', this.lockWorkspace);
this.listenTo(Backbone, 'show-file', this.showFileSettings);
this.listenTo(Backbone, 'open-file', this.toggleOpenFile);
this.listenTo(Backbone, 'save-all', this.saveAll);
this.listenTo(Backbone, 'remote-key-changed', this.remoteKeyChanged);
this.listenTo(Backbone, 'key-change-pending', this.keyChangePending);
this.listenTo(Backbone, 'toggle-settings', this.toggleSettings);
this.listenTo(Backbone, 'toggle-menu', this.toggleMenu);
this.listenTo(Backbone, 'toggle-details', this.toggleDetails);
this.listenTo(Backbone, 'edit-group', this.editGroup);
this.listenTo(Backbone, 'edit-tag', this.editTag);
this.listenTo(Backbone, 'edit-generator-presets', this.editGeneratorPresets);
this.listenTo(Backbone, 'launcher-open-file', this.launcherOpenFile);
this.listenTo(Backbone, 'user-idle', this.userIdle);
this.listenTo(Backbone, 'os-lock', this.osLocked);
this.listenTo(Backbone, 'power-monitor-suspend', this.osLocked);
this.listenTo(Backbone, 'app-minimized', this.appMinimized);
this.listenTo(Backbone, 'show-context-menu', this.showContextMenu);
this.listenTo(Backbone, 'second-instance', this.showSingleInstanceAlert);
this.listenTo(Backbone, 'file-modified', this.handleAutoSaveTimer);
this.listenTo(Events, 'select-all', this.selectAll);
this.listenTo(Events, 'menu-select', this.menuSelect);
this.listenTo(Events, 'lock-workspace', this.lockWorkspace);
this.listenTo(Events, 'show-file', this.showFileSettings);
this.listenTo(Events, 'open-file', this.toggleOpenFile);
this.listenTo(Events, 'save-all', this.saveAll);
this.listenTo(Events, 'remote-key-changed', this.remoteKeyChanged);
this.listenTo(Events, 'key-change-pending', this.keyChangePending);
this.listenTo(Events, 'toggle-settings', this.toggleSettings);
this.listenTo(Events, 'toggle-menu', this.toggleMenu);
this.listenTo(Events, 'toggle-details', this.toggleDetails);
this.listenTo(Events, 'edit-group', this.editGroup);
this.listenTo(Events, 'edit-tag', this.editTag);
this.listenTo(Events, 'edit-generator-presets', this.editGeneratorPresets);
this.listenTo(Events, 'launcher-open-file', this.launcherOpenFile);
this.listenTo(Events, 'user-idle', this.userIdle);
this.listenTo(Events, 'os-lock', this.osLocked);
this.listenTo(Events, 'power-monitor-suspend', this.osLocked);
this.listenTo(Events, 'app-minimized', this.appMinimized);
this.listenTo(Events, 'show-context-menu', this.showContextMenu);
this.listenTo(Events, 'second-instance', this.showSingleInstanceAlert);
this.listenTo(Events, 'file-modified', this.handleAutoSaveTimer);
this.listenTo(UpdateModel.instance, 'change:updateReady', this.updateApp);
this.listenTo(Backbone, 'enter-full-screen', this.enterFullScreen);
this.listenTo(Backbone, 'leave-full-screen', this.leaveFullScreen);
this.listenTo(Events, 'enter-full-screen', this.enterFullScreen);
this.listenTo(Events, 'leave-full-screen', this.leaveFullScreen);
window.onbeforeunload = this.beforeUnload.bind(this);
window.onresize = this.windowResize.bind(this);
@ -166,7 +166,7 @@ class AppView extends View {
this.views.open = new OpenView(this.model);
this.views.open.render();
this.views.open.on('close', () => {
Backbone.trigger('closed-open-view');
Events.emit('closed-open-view');
});
this.views.open.on('close', () => this.showEntries());
}
@ -344,7 +344,7 @@ class AppView extends View {
this.prevented = true;
}
};
Backbone.trigger('main-window-will-close', exitEvent);
Events.emit('main-window-will-close', exitEvent);
if (exitEvent.prevented) {
Launcher.preventExit(e);
return;
@ -414,12 +414,12 @@ class AppView extends View {
}
windowResize() {
Backbone.trigger('page-geometry', { source: 'window' });
Events.emit('page-geometry', { source: 'window' });
}
windowBlur(e) {
if (e.target === window) {
Backbone.trigger('page-blur');
Events.emit('page-blur');
}
}
@ -726,7 +726,7 @@ class AppView extends View {
contextMenuSelect(e) {
this.hideContextMenu();
Backbone.trigger('context-menu-select', e);
Events.emit('context-menu-select', e);
}
showSingleInstanceAlert() {
@ -776,7 +776,7 @@ class AppView extends View {
bodyClick(e) {
IdleTracker.regUserAction();
Backbone.trigger('click', e);
Events.emit('click', e);
}
}

View File

@ -1,5 +1,5 @@
import Backbone from 'backbone';
import { View } from 'framework/views/view';
import { Events } from 'framework/events';
import { Shortcuts } from 'comp/app/shortcuts';
import { KeyHandler } from 'comp/browser/key-handler';
import { Keys } from 'const/keys';
@ -31,8 +31,8 @@ class AutoTypeSelectView extends View {
constructor(model) {
super(model);
this.initScroll();
this.listenTo(Backbone, 'main-window-blur', this.mainWindowBlur);
this.listenTo(Backbone, 'main-window-will-close', this.mainWindowWillClose);
this.listenTo(Events, 'main-window-blur', this.mainWindowBlur);
this.listenTo(Events, 'main-window-will-close', this.mainWindowWillClose);
this.setupKeys();
}

View File

@ -1,6 +1,6 @@
import Backbone from 'backbone';
import kdbxweb from 'kdbxweb';
import { View } from 'framework/views/view';
import { Events } from 'framework/events';
import { AutoType } from 'auto-type';
import { CopyPaste } from 'comp/browser/copy-paste';
import { KeyHandler } from 'comp/browser/key-handler';
@ -66,13 +66,13 @@ class DetailsView extends View {
constructor(model, options) {
super(model, options);
this.initScroll();
this.listenTo(Backbone, 'entry-selected', this.showEntry);
this.listenTo(Backbone, 'copy-password', this.copyPassword);
this.listenTo(Backbone, 'copy-user', this.copyUserName);
this.listenTo(Backbone, 'copy-url', this.copyUrl);
this.listenTo(Backbone, 'toggle-settings', this.settingsToggled);
this.listenTo(Backbone, 'context-menu-select', this.contextMenuSelect);
this.listenTo(Backbone, 'set-locale', this.render);
this.listenTo(Events, 'entry-selected', this.showEntry);
this.listenTo(Events, 'copy-password', this.copyPassword);
this.listenTo(Events, 'copy-user', this.copyUserName);
this.listenTo(Events, 'copy-url', this.copyUrl);
this.listenTo(Events, 'toggle-settings', this.settingsToggled);
this.listenTo(Events, 'context-menu-select', this.contextMenuSelect);
this.listenTo(Events, 'set-locale', this.render);
this.listenTo(OtpQrReader, 'qr-read', this.otpCodeRead);
this.listenTo(OtpQrReader, 'enter-manually', this.otpEnterManually);
this.onKey(
@ -672,7 +672,7 @@ class DetailsView extends View {
this.model.moveToFile(newFile);
this.appModel.activeEntryId = this.model.id;
this.entryUpdated();
Backbone.trigger('entry-selected', this.model);
Events.emit('entry-selected', this.model);
return;
} else if (fieldName) {
this.model.setField(fieldName, e.val);
@ -840,7 +840,7 @@ class DetailsView extends View {
$(e.target).unbind('blur');
if (this.model.isJustCreated) {
this.model.removeWithoutHistory();
Backbone.trigger('refresh');
Events.emit('refresh');
return;
}
this.render();
@ -867,7 +867,7 @@ class DetailsView extends View {
}
entryUpdated(skipRender) {
Backbone.trigger('entry-updated', { entry: this.model });
Events.emit('entry-updated', { entry: this.model });
if (!skipRender) {
this.render();
}
@ -919,7 +919,7 @@ class DetailsView extends View {
moveToTrash() {
const doMove = () => {
this.model.moveToTrash();
Backbone.trigger('refresh');
Events.emit('refresh');
};
if (Features.isMobile) {
Alerts.yesno({
@ -935,7 +935,7 @@ class DetailsView extends View {
clone() {
const newEntry = this.model.cloneEntry(' ' + Locale.detClonedName);
Backbone.trigger('select-entry', newEntry);
Events.emit('select-entry', newEntry);
}
copyToClipboard() {
@ -953,13 +953,13 @@ class DetailsView extends View {
icon: 'minus-circle',
success: () => {
this.model.deleteFromTrash();
Backbone.trigger('refresh');
Events.emit('refresh');
}
});
}
backClick() {
Backbone.trigger('toggle-details', false);
Events.emit('toggle-details', false);
}
contextMenu(e) {
@ -989,7 +989,7 @@ class DetailsView extends View {
if (AutoType.enabled) {
options.push({ value: 'det-auto-type', icon: 'keyboard-o', text: Locale.detAutoType });
}
Backbone.trigger('show-context-menu', _.extend(e, { options }));
Events.emit('show-context-menu', _.extend(e, { options }));
}
contextMenuSelect(e) {
@ -1062,7 +1062,7 @@ class DetailsView extends View {
}
autoType() {
Backbone.trigger('auto-type', { entry: this.model });
Events.emit('auto-type', { entry: this.model });
}
}

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { View } from 'framework/views/view';
import { KeyHandler } from 'comp/browser/key-handler';
import { Keys } from 'const/keys';
@ -16,10 +16,11 @@ class DropdownView extends View {
constructor(model) {
super(model);
Backbone.trigger('dropdown-shown');
Events.emit('dropdown-shown');
this.bodyClick = this.bodyClick.bind(this);
this.listenTo(Backbone, 'show-context-menu dropdown-shown', this.bodyClick);
this.listenTo(Events, 'show-context-menu', this.bodyClick);
this.listenTo(Events, 'dropdown-shown', this.bodyClick);
$('body').on('click contextmenu keydown', this.bodyClick);
this.onKey(Keys.DOM_VK_UP, this.upPressed, false, 'dropdown');

View File

@ -1,5 +1,5 @@
import Backbone from 'backbone';
import kdbxweb from 'kdbxweb';
import { Events } from 'framework/events';
import { KeyHandler } from 'comp/browser/key-handler';
import { Keys } from 'const/keys';
import { Features } from 'util/features';
@ -44,8 +44,9 @@ class FieldViewText extends FieldView {
click: this.fieldValueInputClick.bind(this),
mousedown: this.fieldValueInputMouseDown.bind(this)
});
Backbone.on('click', this._fieldValueBlur);
this.listenTo(Backbone, 'main-window-will-close user-idle', this.externalEndEdit);
Events.on('click', this.fieldValueBlur);
this.listenTo(Events, 'main-window-will-close', this.externalEndEdit);
this.listenTo(Events, 'user-idle', this.externalEndEdit);
if (this.model.multiline) {
this.setInputHeight();
}
@ -217,6 +218,11 @@ class FieldViewText extends FieldView {
super.endEdit(newVal, extra);
}
stopBlurListener() {
// TODO
// this.stopListening(Backbone, 'click main-window-will-close', this.fieldValueBlur);
}
mobileFieldControlMouseDown(e) {
e.stopPropagation();
this.stopBlurListener();

View File

@ -1,5 +1,5 @@
import Backbone from 'backbone';
import { View } from 'framework/views/view';
import { Events } from 'framework/events';
import { KeyHandler } from 'comp/browser/key-handler';
import { Keys } from 'const/keys';
import { UpdateModel } from 'models/update-model';
@ -31,7 +31,7 @@ class FooterView extends View {
this.listenTo(this, 'hide', this.viewHidden);
this.listenTo(this.model.files, 'update reset change', this.render);
this.listenTo(Backbone, 'set-locale', this.render);
this.listenTo(Events, 'set-locale', this.render);
this.listenTo(UpdateModel.instance, 'change:updateStatus', this.render);
}
@ -53,7 +53,7 @@ class FooterView extends View {
lockWorkspace(e) {
if (this.model.files.hasOpenFiles()) {
e.preventDefault();
Backbone.trigger('lock-workspace');
Events.emit('lock-workspace');
}
}
@ -81,24 +81,24 @@ class FooterView extends View {
.closest('.footer__db-item')
.data('file-id');
if (fileId) {
Backbone.trigger('show-file', { fileId });
Events.emit('show-file', { fileId });
}
}
openFile() {
Backbone.trigger('open-file');
Events.emit('open-file');
}
saveAll() {
Backbone.trigger('save-all');
Events.emit('save-all');
}
toggleHelp() {
Backbone.trigger('toggle-settings', 'help');
Events.emit('toggle-settings', 'help');
}
toggleSettings() {
Backbone.trigger('toggle-settings', 'general');
Events.emit('toggle-settings', 'general');
}
}

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { View } from 'framework/views/view';
import { GeneratorPresets } from 'comp/app/generator-presets';
import { PasswordGenerator } from 'util/generators/password-generator';
@ -76,7 +76,7 @@ class GeneratorPresetsView extends View {
}
returnToApp() {
Backbone.trigger('edit-generator-presets');
Events.emit('edit-generator-presets');
}
changePreset(e) {

View File

@ -1,5 +1,5 @@
import Backbone from 'backbone';
import { View } from 'framework/views/view';
import { Events } from 'framework/events';
import { GeneratorPresets } from 'comp/app/generator-presets';
import { CopyPaste } from 'comp/browser/copy-paste';
import { AppSettingsModel } from 'models/app-settings-model';
@ -64,7 +64,7 @@ class GeneratorView extends View {
this.gen = _.clone(_.find(this.presets, pr => pr.name === preset));
this.hide = AppSettingsModel.instance.get('generatorHidePassword');
$('body').one('click', this.remove.bind(this));
this.listenTo(Backbone, 'lock-workspace', this.remove.bind(this));
this.listenTo(Events, 'lock-workspace', this.remove.bind(this));
}
render() {
@ -184,7 +184,7 @@ class GeneratorView extends View {
presetChange(e) {
const name = e.target.value;
if (name === '...') {
Backbone.trigger('edit-generator-presets');
Events.emit('edit-generator-presets');
this.remove();
return;
}

View File

@ -1,6 +1,6 @@
import { View } from 'framework/views/view';
import { Events } from 'framework/events';
import { AutoType } from 'auto-type';
import Backbone from 'backbone';
import { Scrollable } from 'framework/views/scrollable';
import { AutoTypeHintView } from 'views/auto-type/auto-type-hint-view';
import { IconSelectView } from 'views/icon-select-view';
@ -62,7 +62,7 @@ class GrpView extends View {
} else {
if (this.model.isJustCreated) {
this.model.removeWithoutHistory();
Backbone.trigger('edit-group');
Events.emit('edit-group');
}
}
}
@ -121,7 +121,7 @@ class GrpView extends View {
moveToTrash() {
this.model.moveToTrash();
Backbone.trigger('select-all');
Events.emit('select-all');
}
setEnableSearching(e) {
@ -135,7 +135,7 @@ class GrpView extends View {
}
returnToApp() {
Backbone.trigger('edit-group');
Events.emit('edit-group');
}
}

View File

@ -1,5 +1,5 @@
import Backbone from 'backbone';
import { View } from 'framework/views/view';
import { Events } from 'framework/events';
import { Shortcuts } from 'comp/app/shortcuts';
import { KeyHandler } from 'comp/browser/key-handler';
import { Keys } from 'const/keys';
@ -124,9 +124,9 @@ class ListSearchView extends View {
this.onKey(Keys.DOM_VK_UP, this.upKeyPress);
this.listenTo(this, 'show', this.viewShown);
this.listenTo(this, 'hide', this.viewHidden);
this.listenTo(Backbone, 'filter', this.filterChanged);
this.listenTo(Backbone, 'set-locale', this.setLocale);
this.listenTo(Backbone, 'page-blur', this.pageBlur);
this.listenTo(Events, 'filter', this.filterChanged);
this.listenTo(Events, 'set-locale', this.setLocale);
this.listenTo(Events, 'page-blur', this.pageBlur);
this.once('remove', () => {
this.removeKeypressHandler();
@ -210,7 +210,7 @@ class ListSearchView extends View {
}
inputChange() {
Backbone.trigger('add-filter', { text: this.inputEl.val() });
Events.emit('add-filter', { text: this.inputEl.val() });
}
inputFocus(e) {
@ -301,17 +301,17 @@ class ListSearchView extends View {
} else if (this.model.advancedSearch) {
advanced = this.model.advancedSearch;
}
Backbone.trigger('add-filter', { advanced });
Events.emit('add-filter', { advanced });
}
toggleMenu() {
Backbone.trigger('toggle-menu');
Events.emit('toggle-menu');
}
toggleAdvCheck(e) {
const setting = $(e.target).data('id');
this.advancedSearch[setting] = e.target.checked;
Backbone.trigger('add-filter', { advanced: this.advancedSearch });
Events.emit('add-filter', { advanced: this.advancedSearch });
}
hideSearchOptions() {
@ -397,7 +397,7 @@ class ListSearchView extends View {
sortDropdownSelect(e) {
this.hideSearchOptions();
Backbone.trigger('set-sort', e.item);
Events.emit('set-sort', e.item);
}
createDropdownSelect(e) {

View File

@ -1,5 +1,5 @@
import Backbone from 'backbone';
import { View } from 'framework/views/view';
import { Events } from 'framework/events';
import { EntryCollection } from 'collections/entry-collection';
import { DragDropInfo } from 'comp/app/drag-drop-info';
import { Alerts } from 'comp/ui/alerts';
@ -58,9 +58,9 @@ class ListView extends View {
this.listenTo(this, 'show', this.viewShown);
this.listenTo(this, 'hide', this.viewHidden);
this.listenTo(this, 'view-resize', this.viewResized);
this.listenTo(Backbone, 'filter', this.filterChanged);
this.listenTo(Backbone, 'entry-updated', this.entryUpdated);
this.listenTo(Backbone, 'set-locale', this.render);
this.listenTo(Events, 'filter', this.filterChanged);
this.listenTo(Events, 'entry-updated', this.entryUpdated);
this.listenTo(Events, 'set-locale', this.render);
this.listenTo(this.model.settings, 'change:tableView', this.setTableView);
@ -145,7 +145,7 @@ class ListView extends View {
if (!item.active) {
this.selectItem(item);
}
Backbone.trigger('toggle-details', true);
Events.emit('toggle-details', true);
}
selectPrev() {
@ -171,7 +171,7 @@ class ListView extends View {
createGroup() {
const newGroup = this.model.createNewGroup();
Backbone.trigger('edit-group', newGroup);
Events.emit('edit-group', newGroup);
}
createTemplate() {
@ -199,7 +199,7 @@ class ListView extends View {
selectItem(item) {
this.model.activeEntryId = item.id;
Backbone.trigger('entry-selected', item);
Events.emit('entry-selected', item);
this.itemsEl.find('.list__item--active').removeClass('list__item--active');
const itemEl = document.getElementById(item.id);
itemEl.classList.add('list__item--active');

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { View } from 'framework/views/view';
import { DragDropInfo } from 'comp/app/drag-drop-info';
import { KeyHandler } from 'comp/browser/key-handler';
@ -127,7 +127,7 @@ class MenuItemView extends View {
if (this.model.get('disabled')) {
Alerts.info(this.model.get('disabled'));
} else {
Backbone.trigger('menu-select', { item: this.model });
Events.emit('menu-select', { item: this.model });
}
}
@ -137,7 +137,7 @@ class MenuItemView extends View {
if (options && options.length) {
const option = options.find(op => op.get('value') === value);
if (option) {
Backbone.trigger('menu-select', { item: this.model, option });
Events.emit('menu-select', { item: this.model, option });
}
}
e.stopImmediatePropagation();
@ -156,10 +156,10 @@ class MenuItemView extends View {
e.stopPropagation();
switch (this.model.get('filterKey')) {
case 'tag':
Backbone.trigger('edit-tag', this.model);
Events.emit('edit-tag', this.model);
break;
case 'group':
Backbone.trigger('edit-group', this.model);
Events.emit('edit-group', this.model);
break;
}
}
@ -172,7 +172,7 @@ class MenuItemView extends View {
body: Locale.menuEmptyTrashAlertBody,
icon: 'minus-circle',
success() {
Backbone.trigger('empty-trash');
Events.emit('empty-trash');
}
});
}
@ -225,7 +225,7 @@ class MenuItemView extends View {
this.model.moveHere(DragDropInfo.dragObject);
}
}
Backbone.trigger('refresh');
Events.emit('refresh');
}
}

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { View } from 'framework/views/view';
import { KeyHandler } from 'comp/browser/key-handler';
import { Keys } from 'const/keys';
@ -75,11 +75,11 @@ class MenuView extends View {
}
selectPreviousSection() {
Backbone.trigger('select-previous-menu-item');
Events.emit('select-previous-menu-item');
}
selectNextSection() {
Backbone.trigger('select-next-menu-item');
Events.emit('select-next-menu-item');
}
}

View File

@ -1,6 +1,6 @@
import Backbone from 'backbone';
import kdbxweb from 'kdbxweb';
import { View } from 'framework/views/view';
import { Events } from 'framework/events';
import { Storage } from 'storage';
import { DropboxChooser } from 'comp/app/dropbox-chooser';
import { FocusDetector } from 'comp/browser/focus-detector';
@ -65,7 +65,7 @@ class OpenView extends View {
this.onKey(Keys.DOM_VK_RETURN, this.enterKeyPress);
this.onKey(Keys.DOM_VK_DOWN, this.moveOpenFileSelectionDown);
this.onKey(Keys.DOM_VK_UP, this.moveOpenFileSelectionUp);
this.listenTo(Backbone, 'main-window-focus', this.windowFocused.bind(this));
this.listenTo(Events, 'main-window-focus', this.windowFocused.bind(this));
this.once('reset', () => {
this.passwordInput.reset();
});
@ -682,7 +682,7 @@ class OpenView extends View {
}
openSettings() {
Backbone.trigger('toggle-settings');
Events.emit('toggle-settings');
}
openStorage(e) {

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { View } from 'framework/views/view';
import { AutoType } from 'auto-type';
import { Storage } from 'storage';
@ -293,19 +293,19 @@ class SettingsGeneralView extends View {
changeTableView(e) {
const tableView = e.target.checked || false;
AppSettingsModel.instance.set('tableView', tableView);
Backbone.trigger('refresh');
Events.emit('refresh');
}
changeColorfulIcons(e) {
const colorfulIcons = e.target.checked || false;
AppSettingsModel.instance.set('colorfulIcons', colorfulIcons);
Backbone.trigger('refresh');
Events.emit('refresh');
}
changeDirectAutotype(e) {
const directAutotype = e.target.checked || false;
AppSettingsModel.instance.set('directAutotype', directAutotype);
Backbone.trigger('refresh');
Events.emit('refresh');
}
restartApp() {
@ -329,7 +329,7 @@ class SettingsGeneralView extends View {
changeExpandGroups(e) {
const expand = e.target.checked;
AppSettingsModel.instance.set('expandGroups', expand);
Backbone.trigger('refresh');
Events.emit('refresh');
}
changeStorageEnabled(e) {

View File

@ -1,5 +1,6 @@
import Backbone from 'backbone';
import { View } from 'framework/views/view';
import { Events } from 'framework/events';
import { RuntimeInfo } from 'comp/app/runtime-info';
import { SettingsManager } from 'comp/settings/settings-manager';
import { Links } from 'const/links';
@ -82,7 +83,7 @@ class SettingsPluginsView extends View {
pluginGalleryLoadComplete() {
this.render();
Backbone.trigger('page-geometry', { source: 'view' });
Events.emit('page-geometry', { source: 'view' });
}
getGalleryPlugins() {

View File

@ -1,5 +1,5 @@
import Backbone from 'backbone';
import { View } from 'framework/views/view';
import { Events } from 'framework/events';
import { Keys } from 'const/keys';
import { Scrollable } from 'framework/views/scrollable';
import { StringFormat } from 'util/formatting/string-format';
@ -17,7 +17,7 @@ class SettingsView extends View {
constructor(model, options) {
super(model, options);
this.initScroll();
this.listenTo(Backbone, 'set-page', this.setPage);
this.listenTo(Events, 'set-page', this.setPage);
this.onKey(Keys.DOM_VK_ESCAPE, this.returnToApp);
}
@ -47,7 +47,7 @@ class SettingsView extends View {
}
returnToApp() {
Backbone.trigger('toggle-settings', false);
Events.emit('toggle-settings', false);
}
}

View File

@ -1,4 +1,4 @@
import Backbone from 'backbone';
import { Events } from 'framework/events';
import { View } from 'framework/views/view';
import { Alerts } from 'comp/ui/alerts';
import { Locale } from 'util/locale';
@ -45,7 +45,7 @@ class TagView extends View {
return;
}
this.model.renameTag(this.tag.get('title'), title);
Backbone.trigger('select-all');
Events.emit('select-all');
}
moveToTrash() {
@ -55,13 +55,13 @@ class TagView extends View {
body: Locale.tagTrashQuestionBody,
success: () => {
this.model.renameTag(this.tag.get('title'), undefined);
Backbone.trigger('select-all');
Events.emit('select-all');
}
});
}
returnToApp() {
Backbone.trigger('edit-tag');
Events.emit('edit-tag');
}
}