Merge pull request #2212 from ethereum/plugin-permissions

Improve Plugin permissions + Use emit function from plugin
pull/1/head
yann300 6 years ago committed by GitHub
commit 3d2594faf8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      src/app/components/side-panel.js
  2. 4
      src/app/components/vertical-icons.js
  3. 14
      src/app/files/fileManager.js
  4. 2
      src/app/tabs/theme-module.js
  5. 28
      src/app/ui/persmission-handler.js

@ -73,16 +73,22 @@ export class SidePanel extends AbstractPanel {
verticalIcons.events.on('toggleContent', (name) => {
if (!this.contents[name]) return
if (this.active === name) {
// TODO: Only keep `this.emit` (issue#2210)
this.emit('toggle', name)
this.events.emit('toggle', name)
return
}
this.showContent(name)
// TODO: Only keep `this.emit` (issue#2210)
this.emit('showing', name)
this.events.emit('showing', name)
})
// Force opening
verticalIcons.events.on('showContent', (name) => {
if (!this.contents[name]) return
this.showContent(name)
// TODO: Only keep `this.emit` (issue#2210)
this.emit('showing', name)
this.events.emit('showing', name)
})
}

@ -187,6 +187,8 @@ export class VerticalIcons extends Plugin {
*/
select (name) {
this.updateActivations(name)
// TODO: Only keep `this.emit` (issue#2210)
this.emit('showContent', name)
this.events.emit('showContent', name)
}
@ -196,6 +198,8 @@ export class VerticalIcons extends Plugin {
*/
toggle (name) {
this.updateActivations(name)
// TODO: Only keep `this.emit` (issue#2210)
this.emit('toggleContent', name)
this.events.emit('toggleContent', name)
}

@ -85,6 +85,8 @@ class FileManager extends Plugin {
this.switchFile(newFocus)
}
}
// TODO: Only keep `this.emit` (issue#2210)
this.emit('fileRenamed', oldName, newName)
this.events.emit('fileRenamed', oldName, newName)
}
@ -104,8 +106,12 @@ class FileManager extends Plugin {
delete this.openedFiles[name]
if (!Object.keys(this.openedFiles).length) {
this._deps.config.set('currentFile', '')
// TODO: Only keep `this.emit` (issue#2210)
this.emit('noFileSelected')
this.events.emit('noFileSelected')
}
// TODO: Only keep `this.emit` (issue#2210)
this.emit('fileClosed', name)
this.events.emit('fileClosed', name)
}
@ -234,6 +240,8 @@ class FileManager extends Plugin {
}
this.editor.discard(path)
delete this.openedFiles[path]
// TODO: Only keep `this.emit` (issue#2210)
this.emit('fileRemoved', path)
this.events.emit('fileRemoved', path)
this.switchFile()
}
@ -241,6 +249,8 @@ class FileManager extends Plugin {
unselectCurrentFile () {
this.saveCurrentFile()
this._deps.config.set('currentFile', '')
// TODO: Only keep `this.emit` (issue#2210)
this.emit('noFileSelected')
this.events.emit('noFileSelected')
}
@ -258,6 +268,8 @@ class FileManager extends Plugin {
} else {
this.editor.open(file, content)
}
// TODO: Only keep `this.emit` (issue#2210)
this.emit('currentFileChanged', file)
this.events.emit('currentFileChanged', file)
}
})
@ -271,6 +283,8 @@ class FileManager extends Plugin {
if (fileList.length) {
_switchFile(browserProvider.type + '/' + fileList[0])
} else {
// TODO: Only keep `this.emit` (issue#2210)
this.emit('noFileSelected')
this.events.emit('noFileSelected')
}
})

@ -60,6 +60,8 @@ export class ThemeModule extends Plugin {
document.getElementById('theme-link').setAttribute('href', nextTheme.url)
document.documentElement.style.setProperty('--theme', nextTheme.quality)
if (themeName) this.active = themeName
// TODO: Only keep `this.emit` (issue#2210)
this.emit('themeChanged', nextTheme)
this.events.emit('themeChanged', nextTheme)
}
}

@ -78,7 +78,7 @@ export class PermissionHandler {
}
this.persistPermissions()
}
resolve()
resolve(true)
}
},
{
@ -105,19 +105,23 @@ export class PermissionHandler {
* @returns {Promise<boolean>}
*/
async askPermission (from, to) {
this.permissions = this._getFromLocal()
if (!this.permissions[to.name]) this.permissions[to.name] = {}
if (!this.permissions[to.name][from.name]) return this.openPermission(from, to)
try {
this.permissions = this._getFromLocal()
if (!this.permissions[to.name]) this.permissions[to.name] = {}
if (!this.permissions[to.name][from.name]) return this.openPermission(from, to)
const { allow, hash } = this.permissions[to.name][from.name]
if (!allow) {
const warning = notAllowWarning(from, to)
addTooltip(warning)
throw new Error(warning)
const { allow, hash } = this.permissions[to.name][from.name]
if (!allow) {
const warning = notAllowWarning(from, to)
addTooltip(warning)
return false
}
return hash === from.hash
? true // Allow
: this.openPermission(from, to) // New version of a plugin
} catch (err) {
throw new Error(err)
}
return hash === from.hash
? true // Allow
: this.openPermission(from, to) // New version of a plugin
}
/**

Loading…
Cancel
Save