From 444d680827ecdb017c0d4b3f91a7bc1db2f83d26 Mon Sep 17 00:00:00 2001 From: LianaHus Date: Mon, 9 Dec 2019 13:58:23 +0100 Subject: [PATCH] unregistered listeners --- src/app/files/file-explorer.js | 12 +++++------- src/app/files/fileManager.js | 4 ++-- src/app/tabs/compile-tab.js | 11 +++++++++++ src/app/tabs/compileTab/compilerContainer.js | 13 ++++++++++--- src/app/ui/contextMenu.js | 6 +++--- 5 files changed, 31 insertions(+), 15 deletions(-) diff --git a/src/app/files/file-explorer.js b/src/app/files/file-explorer.js index 8ff297f872..899da13702 100644 --- a/src/app/files/file-explorer.js +++ b/src/app/files/file-explorer.js @@ -209,19 +209,17 @@ function fileExplorer (localRegistry, files, menuItems) { const provider = self._deps.fileManager.fileProviderOf(key) actions['Create File'] = () => self.createNewFile(key) actions['Create Folder'] = () => self.createNewFolder(key) - // todo not fully implemented. Readd later when fixed - // https://github.com/ethereum/remix-ide/issues/2386 - /* if (provider.isExternalFolder(key)) { - actions['Discard changes'] = () => { + // @todo(#2386) not fully implemented. Readd later when fixed + if (provider.isExternalFolder(key)) { + /* actions['Discard changes'] = () => { modalDialogCustom.confirm( 'Discard changes', 'Are you sure you want to discard all your changes?', () => { self.files.discardChanges(key) }, () => {} ) - } - } else { */ - if (! provider.isExternalFolder(key)) { + } */ + } else { const folderPath = extractExternalFolder(key) actions['Rename'] = () => { if (self.files.isReadOnly(key)) { return tooltip('cannot rename folder. ' + self.files.type + ' is a read only explorer') } diff --git a/src/app/files/fileManager.js b/src/app/files/fileManager.js index 57503afd56..eb1b538807 100644 --- a/src/app/files/fileManager.js +++ b/src/app/files/fileManager.js @@ -59,8 +59,8 @@ class FileManager extends Plugin { } fileChangedEvent (path) { - // todo. use only for discard changes function. - //this.syncEditor(path) + // @todo(#2386) use only for discard changes function. + // this.syncEditor(path) } fileRenamedEvent (oldName, newName, isFolder) { diff --git a/src/app/tabs/compile-tab.js b/src/app/tabs/compile-tab.js index 284ae890ad..f2727abc9c 100644 --- a/src/app/tabs/compile-tab.js +++ b/src/app/tabs/compile-tab.js @@ -457,6 +457,17 @@ class CompileTab extends ViewPlugin { return this._view.el } + onDeactivation () { + this.compilerContainer.deactivate() + this.editor.event.unregister('contentChanged') + this.compiler.event.unregister('loadingCompiler') + this.compiler.event.unregister('compilerLoaded') + this.compileTabLogic.event.off('startingCompilation') + this.fileManager.events.off('currentFileChanged') + this.fileManager.events.off('noFileSelected') + this.compiler.event.unregister('compilationFinished') + globalRegistry.get('themeModule').api.events.off('themeChanged') + } } module.exports = CompileTab diff --git a/src/app/tabs/compileTab/compilerContainer.js b/src/app/tabs/compileTab/compilerContainer.js index ef5d2d0021..38c1634e03 100644 --- a/src/app/tabs/compileTab/compilerContainer.js +++ b/src/app/tabs/compileTab/compilerContainer.js @@ -42,6 +42,9 @@ class CompilerContainer { } deactivate () { + // deactivate editor listeners + this.editor.event.unregister('contentChanged') + this.editor.event.unregister('sessionSwitched') } activate () { @@ -50,8 +53,10 @@ class CompilerContainer { } listenToEvents () { - this.editor.event.register('contentChanged', this.scheduleCompilation.bind(this)) - this.editor.event.register('sessionSwitched', this.scheduleCompilation.bind(this)) + this.editor.event.register('sessionSwitched', () => { + if (!this._view.compileIcon) return + this.scheduleCompilation() + }) this.compileTabLogic.event.on('startingCompilation', () => { if (!this._view.compileIcon) return @@ -73,6 +78,7 @@ class CompilerContainer { this.editor.event.register('contentChanged', () => { if (!this._view.compileIcon) return + this.scheduleCompilation.bind(this) this._view.compileIcon.classList.add(`${css.bouncingIcon}`) // @TODO: compileView tab }) @@ -131,12 +137,13 @@ class CompilerContainer { // Load solc compiler version according to pragma in contract file _setCompilerVersionFromPragma (filename) { + if (!this.data.allversions) return this.compileTabLogic.fileManager.getFile(filename).then(data => { const pragmaArr = data.match(/(pragma solidity (.+?);)/g) if (pragmaArr && pragmaArr.length === 1) { const pragmaStr = pragmaArr[0].replace('pragma solidity', '').trim() const pragma = pragmaStr.substring(0, pragmaStr.length - 1) - const releasedVersions = (this.data.allversions) ? this.data.allversions.filter(obj => !obj.prerelease).map(obj => obj.version) : [] + const releasedVersions = this.data.allversions.filter(obj => !obj.prerelease).map(obj => obj.version) const allVersions = this.data.allversions.map(obj => this._retrieveVersion(obj.version)) const currentCompilerName = this._retrieveVersion(this._view.versionSelector.selectedOptions[0].label) // contains only numbers part, for example '0.4.22' diff --git a/src/app/ui/contextMenu.js b/src/app/ui/contextMenu.js index fc1c71dba1..ca2e953c79 100644 --- a/src/app/ui/contextMenu.js +++ b/src/app/ui/contextMenu.js @@ -40,12 +40,12 @@ module.exports = (event, items) => { window.removeEventListener('click', hide) } - var menu = Object.keys(items).map((item, index) => { - var current = yo`` + const menu = Object.keys(items).map((item, index) => { + const current = yo`` current.onclick = () => { hide(null, true); items[item]() } return current }) - var container = yo`
` + const container = yo`
` container.style.left = event.pageX + 'px' container.style.top = event.pageY + 'px' container.style.display = 'block'