diff --git a/src/app/components/plugin-manager-settings.js b/src/app/components/plugin-manager-settings.js index 017cf53cf2..08adf6bf26 100644 --- a/src/app/components/plugin-manager-settings.js +++ b/src/app/components/plugin-manager-settings.js @@ -25,6 +25,14 @@ const css = csjs` .permissionForm hr { width: 80%; } +.permissionKey { + display: flex; + justify-content: space-between; + align-items: center; +} +.permissionKey i { + cursor: pointer; +} .checkbox { display: flex; align-items: center; @@ -39,7 +47,8 @@ export class PluginManagerSettings { openDialog () { const fromLocal = window.localStorage.getItem('plugins/permissions') this.permissions = JSON.parse(fromLocal || '{}') - modalDialog('Plugin Manager Settings', this.settings(), + this.currentSetting = this.settings() + modalDialog('Plugin Manager Settings', this.currentSetting, { fn: () => this.onValidation() }, ) } @@ -49,6 +58,23 @@ export class PluginManagerSettings { window.localStorage.setItem('plugins/permissions', permissions) } + /** Clear one permission from a plugin */ + clearPersmission (from, to) { + if (!this.permissions[from]) return + delete this.permissions[from][to] + if (Object.keys(this.permissions[from]).length === 0) { + delete this.permissions[from] + } + yo.update(this.currentSetting, this.settings()) + } + + /** Clear all persmissions from a plugin */ + clearAllPersmission (from) { + if (!this.permissions[from]) return + delete this.permissions[from] + yo.update(this.currentSetting, this.settings()) + } + settings () { const permissionByModule = (key, permission) => { const permissionByPlugin = (name, plugin) => { @@ -60,9 +86,12 @@ export class PluginManagerSettings { : yo`` return yo` -
- ${checkbox} - +
+
+ ${checkbox} + +
+
` } @@ -72,7 +101,10 @@ export class PluginManagerSettings { return yo`
-
${key} :
+
+
${key} :
+ +
${byModule}
` } diff --git a/src/persmission-handler.js b/src/persmission-handler.js index a141d744e2..54f4e03951 100644 --- a/src/persmission-handler.js +++ b/src/persmission-handler.js @@ -39,8 +39,12 @@ function notAllowWarning (from, to) { export class PermissionHandler { constructor () { + this.permissions = this._getFromLocal() + } + + _getFromLocal () { const permission = localStorage.getItem('plugins/permissions') - this.permissions = permission ? JSON.parse(permission) : {} + return permission ? JSON.parse(permission) : {} } persistPermissions () { @@ -101,6 +105,7 @@ export class PermissionHandler { * @returns {Promise} */ 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)