From 2fcc6f2ea3b061927e97a9f7b2ab13a28a5db5ac Mon Sep 17 00:00:00 2001 From: antelle Date: Mon, 16 Sep 2019 22:57:56 +0200 Subject: [PATCH] events --- app/scripts/app.js | 4 +- app/scripts/auto-type/index.js | 22 +++---- .../comp/app/single-instance-checker.js | 4 +- app/scripts/comp/app/updater.js | 4 +- app/scripts/comp/browser/copy-paste.js | 6 +- app/scripts/comp/browser/focus-detector.js | 6 +- app/scripts/comp/browser/idle-tracker.js | 6 +- app/scripts/comp/browser/popup-notifier.js | 8 +-- app/scripts/comp/launcher/launcher-cordova.js | 4 +- .../comp/launcher/launcher-electron.js | 10 +-- app/scripts/comp/settings/settings-manager.js | 4 +- .../app/event-bus.js => framework/events.js} | 6 +- app/scripts/framework/views/copyable.js | 4 +- app/scripts/framework/views/resizable.js | 6 +- app/scripts/framework/views/scrollable.js | 3 +- app/scripts/models/app-model.js | 25 ++++---- app/scripts/models/file-model.js | 5 +- app/scripts/models/menu/menu-model.js | 11 ++-- app/scripts/plugins/plugin-gallery.js | 4 +- app/scripts/storage/storage-base.js | 7 ++- app/scripts/util/ui/tip.js | 6 +- app/scripts/views/app-view.js | 62 +++++++++---------- .../views/auto-type/auto-type-select-view.js | 6 +- app/scripts/views/details/details-view.js | 34 +++++----- app/scripts/views/dropdown-view.js | 7 ++- app/scripts/views/fields/field-view-text.js | 12 +++- app/scripts/views/footer-view.js | 16 ++--- app/scripts/views/generator-presets-view.js | 4 +- app/scripts/views/generator-view.js | 6 +- app/scripts/views/grp-view.js | 8 +-- app/scripts/views/list-search-view.js | 18 +++--- app/scripts/views/list-view.js | 14 ++--- app/scripts/views/menu/menu-item-view.js | 14 ++--- app/scripts/views/menu/menu-view.js | 6 +- app/scripts/views/open-view.js | 6 +- .../views/settings/settings-general-view.js | 10 +-- .../views/settings/settings-plugins-view.js | 3 +- app/scripts/views/settings/settings-view.js | 6 +- app/scripts/views/tag-view.js | 8 +-- 39 files changed, 202 insertions(+), 193 deletions(-) rename app/scripts/{comp/app/event-bus.js => framework/events.js} (53%) diff --git a/app/scripts/app.js b/app/scripts/app.js index 947b18e1..e84b4a82 100644 --- a/app/scripts/app.js +++ b/app/scripts/app.js @@ -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(); } diff --git a/app/scripts/auto-type/index.js b/app/scripts/auto-type/index.js index 1db2c620..893da9ac 100644 --- a/app/scripts/auto-type/index.js +++ b/app/scripts/auto-type/index.js @@ -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(); + }); }); }, diff --git a/app/scripts/comp/app/single-instance-checker.js b/app/scripts/comp/app/single-instance-checker.js index 92258ac2..eb90980e 100644 --- a/app/scripts/comp/app/single-instance-checker.js +++ b/app/scripts/comp/app/single-instance-checker.js @@ -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'); } }, diff --git a/app/scripts/comp/app/updater.js b/app/scripts/comp/app/updater.js index b3608d0d..f9c8d846 100644 --- a/app/scripts/comp/app/updater.js +++ b/app/scripts/comp/app/updater.js @@ -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(); diff --git a/app/scripts/comp/browser/copy-paste.js b/app/scripts/comp/browser/copy-paste.js index 1f6696bc..74f96b46 100644 --- a/app/scripts/comp/browser/copy-paste.js +++ b/app/scripts/comp/browser/copy-paste.js @@ -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 }; diff --git a/app/scripts/comp/browser/focus-detector.js b/app/scripts/comp/browser/focus-detector.js index 27f598ec..1629bc29 100644 --- a/app/scripts/comp/browser/focus-detector.js +++ b/app/scripts/comp/browser/focus-detector.js @@ -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'); } }); } diff --git a/app/scripts/comp/browser/idle-tracker.js b/app/scripts/comp/browser/idle-tracker.js index b1509679..c7928290 100644 --- a/app/scripts/comp/browser/idle-tracker.js +++ b/app/scripts/comp/browser/idle-tracker.js @@ -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 }; diff --git a/app/scripts/comp/browser/popup-notifier.js b/app/scripts/comp/browser/popup-notifier.js index 79e12157..e3b86bae 100644 --- a/app/scripts/comp/browser/popup-notifier.js +++ b/app/scripts/comp/browser/popup-notifier.js @@ -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); } }; diff --git a/app/scripts/comp/launcher/launcher-cordova.js b/app/scripts/comp/launcher/launcher-cordova.js index 14671ead..04951522 100644 --- a/app/scripts/comp/launcher/launcher-cordova.js +++ b/app/scripts/comp/launcher/launcher-cordova.js @@ -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 ); diff --git a/app/scripts/comp/launcher/launcher-electron.js b/app/scripts/comp/launcher/launcher-electron.js index 5b8a5a12..ddcd6284 100644 --- a/app/scripts/comp/launcher/launcher-electron.js +++ b/app/scripts/comp/launcher/launcher-electron.js @@ -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 }; diff --git a/app/scripts/comp/settings/settings-manager.js b/app/scripts/comp/settings/settings-manager.js index f55c8253..73ff6493 100644 --- a/app/scripts/comp/settings/settings-manager.js +++ b/app/scripts/comp/settings/settings-manager.js @@ -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() { diff --git a/app/scripts/comp/app/event-bus.js b/app/scripts/framework/events.js similarity index 53% rename from app/scripts/comp/app/event-bus.js rename to app/scripts/framework/events.js index e49c0835..f9b71aa7 100644 --- a/app/scripts/comp/app/event-bus.js +++ b/app/scripts/framework/events.js @@ -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 }; diff --git a/app/scripts/framework/views/copyable.js b/app/scripts/framework/views/copyable.js index 285a4bb6..3e4971a7 100644 --- a/app/scripts/framework/views/copyable.js +++ b/app/scripts/framework/views/copyable.js @@ -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); diff --git a/app/scripts/framework/views/resizable.js b/app/scripts/framework/views/resizable.js index 32e578a0..41c92534 100644 --- a/app/scripts/framework/views/resizable.js +++ b/app/scripts/framework/views/resizable.js @@ -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) { diff --git a/app/scripts/framework/views/scrollable.js b/app/scripts/framework/views/scrollable.js index 36996f7f..acb2eec4 100644 --- a/app/scripts/framework/views/scrollable.js +++ b/app/scripts/framework/views/scrollable.js @@ -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); } } }; diff --git a/app/scripts/models/app-model.js b/app/scripts/models/app-model.js index 9018e87b..ac6f6ef1 100644 --- a/app/scripts/models/app-model.js +++ b/app/scripts/models/app-model.js @@ -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); } diff --git a/app/scripts/models/file-model.js b/app/scripts/models/file-model.js index c1841f73..858939ba 100644 --- a/app/scripts/models/file-model.js +++ b/app/scripts/models/file-model.js @@ -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(); }, diff --git a/app/scripts/models/menu/menu-model.js b/app/scripts/models/menu/menu-model.js index dae8e40d..bb197c5a 100644 --- a/app/scripts/models/menu/menu-model.js +++ b/app/scripts/models/menu/menu-model.js @@ -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') }); diff --git a/app/scripts/plugins/plugin-gallery.js b/app/scripts/plugins/plugin-gallery.js index 82a10d2f..251645e1 100644 --- a/app/scripts/plugins/plugin-gallery.js +++ b/app/scripts/plugins/plugin-gallery.js @@ -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; }); }); diff --git a/app/scripts/storage/storage-base.js b/app/scripts/storage/storage-base.js index 13b2ac12..df937b82 100644 --- a/app/scripts/storage/storage-base.js +++ b/app/scripts/storage/storage-base.js @@ -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); }, diff --git a/app/scripts/util/ui/tip.js b/app/scripts/util/ui/tip.js index 81a55240..1f2649ab 100644 --- a/app/scripts/util/ui/tip.js +++ b/app/scripts/util/ui/tip.js @@ -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); } }; diff --git a/app/scripts/views/app-view.js b/app/scripts/views/app-view.js index 6c1c704d..e2877620 100644 --- a/app/scripts/views/app-view.js +++ b/app/scripts/views/app-view.js @@ -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); } } diff --git a/app/scripts/views/auto-type/auto-type-select-view.js b/app/scripts/views/auto-type/auto-type-select-view.js index 197a2e5e..294a7166 100644 --- a/app/scripts/views/auto-type/auto-type-select-view.js +++ b/app/scripts/views/auto-type/auto-type-select-view.js @@ -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(); } diff --git a/app/scripts/views/details/details-view.js b/app/scripts/views/details/details-view.js index 822d932c..9419de44 100644 --- a/app/scripts/views/details/details-view.js +++ b/app/scripts/views/details/details-view.js @@ -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 }); } } diff --git a/app/scripts/views/dropdown-view.js b/app/scripts/views/dropdown-view.js index 7c981c3b..fe6332cb 100644 --- a/app/scripts/views/dropdown-view.js +++ b/app/scripts/views/dropdown-view.js @@ -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'); diff --git a/app/scripts/views/fields/field-view-text.js b/app/scripts/views/fields/field-view-text.js index 5b8cf781..13213b87 100644 --- a/app/scripts/views/fields/field-view-text.js +++ b/app/scripts/views/fields/field-view-text.js @@ -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(); diff --git a/app/scripts/views/footer-view.js b/app/scripts/views/footer-view.js index 82e3e40d..bf5ffe33 100644 --- a/app/scripts/views/footer-view.js +++ b/app/scripts/views/footer-view.js @@ -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'); } } diff --git a/app/scripts/views/generator-presets-view.js b/app/scripts/views/generator-presets-view.js index f9b84382..546b33e7 100644 --- a/app/scripts/views/generator-presets-view.js +++ b/app/scripts/views/generator-presets-view.js @@ -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) { diff --git a/app/scripts/views/generator-view.js b/app/scripts/views/generator-view.js index 1377c5fc..dafbd163 100644 --- a/app/scripts/views/generator-view.js +++ b/app/scripts/views/generator-view.js @@ -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; } diff --git a/app/scripts/views/grp-view.js b/app/scripts/views/grp-view.js index 7d439801..4453e152 100644 --- a/app/scripts/views/grp-view.js +++ b/app/scripts/views/grp-view.js @@ -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'); } } diff --git a/app/scripts/views/list-search-view.js b/app/scripts/views/list-search-view.js index 641a3fcf..cc6ac693 100644 --- a/app/scripts/views/list-search-view.js +++ b/app/scripts/views/list-search-view.js @@ -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) { diff --git a/app/scripts/views/list-view.js b/app/scripts/views/list-view.js index 06ce17cf..1f8ac7f9 100644 --- a/app/scripts/views/list-view.js +++ b/app/scripts/views/list-view.js @@ -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'); diff --git a/app/scripts/views/menu/menu-item-view.js b/app/scripts/views/menu/menu-item-view.js index 7d10df3f..8e1f1887 100644 --- a/app/scripts/views/menu/menu-item-view.js +++ b/app/scripts/views/menu/menu-item-view.js @@ -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'); } } diff --git a/app/scripts/views/menu/menu-view.js b/app/scripts/views/menu/menu-view.js index 688b8762..36cd4634 100644 --- a/app/scripts/views/menu/menu-view.js +++ b/app/scripts/views/menu/menu-view.js @@ -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'); } } diff --git a/app/scripts/views/open-view.js b/app/scripts/views/open-view.js index 34fc1a6c..052ec32e 100644 --- a/app/scripts/views/open-view.js +++ b/app/scripts/views/open-view.js @@ -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) { diff --git a/app/scripts/views/settings/settings-general-view.js b/app/scripts/views/settings/settings-general-view.js index 7de593e5..7489c160 100644 --- a/app/scripts/views/settings/settings-general-view.js +++ b/app/scripts/views/settings/settings-general-view.js @@ -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) { diff --git a/app/scripts/views/settings/settings-plugins-view.js b/app/scripts/views/settings/settings-plugins-view.js index 9ed5f643..cfaed8fa 100644 --- a/app/scripts/views/settings/settings-plugins-view.js +++ b/app/scripts/views/settings/settings-plugins-view.js @@ -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() { diff --git a/app/scripts/views/settings/settings-view.js b/app/scripts/views/settings/settings-view.js index da10642c..df14b1c9 100644 --- a/app/scripts/views/settings/settings-view.js +++ b/app/scripts/views/settings/settings-view.js @@ -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); } } diff --git a/app/scripts/views/tag-view.js b/app/scripts/views/tag-view.js index 608ae323..0bbd4507 100644 --- a/app/scripts/views/tag-view.js +++ b/app/scripts/views/tag-view.js @@ -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'); } }