pull/1/head
Grandschtroumpf 6 years ago committed by yann300
parent fe4ba66b2f
commit 66931ebc8a
  1. 28
      src/app/components/local-plugin.js
  2. 3
      src/app/components/plugin-manager-component.js

@ -3,27 +3,25 @@ const modalDialog = require('../ui/modaldialog')
module.exports = class LocalPlugin { module.exports = class LocalPlugin {
constructor() {}
/** /**
* Open a modal to create a local plugin * Open a modal to create a local plugin
* @param {{profile: any, api: any}[]} plugins The list of the plugins in the store * @param {{profile: any, api: any}[]} plugins The list of the plugins in the store
* @returns {Promise<{api: any, profile: any}>} A promise with the new plugin profile * @returns {Promise<{api: any, profile: any}>} A promise with the new plugin profile
*/ */
open(plugins) { open (plugins) {
this.profile = JSON.parse(localStorage.getItem('plugins/local')) || { notifications: {} } this.profile = JSON.parse(localStorage.getItem('plugins/local')) || { notifications: {} }
return new Promise((res, rej) => { return new Promise((resolve, reject) => {
modalDialog('Local Plugin', this.form(plugins), modalDialog('Local Plugin', this.form(plugins),
{ fn:() => res(this.create()) }, { fn: () => resolve(this.create()) },
{ fn: () => rej() } { fn: () => resolve() }
) )
}) })
} }
/** /**
* Create the object to add to the plugin-list * Create the object to add to the plugin-list
*/ */
create() { create () {
const profile = { const profile = {
...this.profile, ...this.profile,
icon: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xMjYyIDEwNzVxLTM3IDEyMS0xMzggMTk1dC0yMjggNzQtMjI4LTc0LTEzOC0xOTVxLTgtMjUgNC00OC41dDM4LTMxLjVxMjUtOCA0OC41IDR0MzEuNSAzOHEyNSA4MCA5Mi41IDEyOS41dDE1MS41IDQ5LjUgMTUxLjUtNDkuNSA5Mi41LTEyOS41cTgtMjYgMzItMzh0NDktNCAzNyAzMS41IDQgNDguNXptLTQ5NC00MzVxMCA1My0zNy41IDkwLjV0LTkwLjUgMzcuNS05MC41LTM3LjUtMzcuNS05MC41IDM3LjUtOTAuNSA5MC41LTM3LjUgOTAuNSAzNy41IDM3LjUgOTAuNXptNTEyIDBxMCA1My0zNy41IDkwLjV0LTkwLjUgMzcuNS05MC41LTM3LjUtMzcuNS05MC41IDM3LjUtOTAuNSA5MC41LTM3LjUgOTAuNSAzNy41IDM3LjUgOTAuNXptMjU2IDI1NnEwLTEzMC01MS0yNDguNXQtMTM2LjUtMjA0LTIwNC0xMzYuNS0yNDguNS01MS0yNDguNSA1MS0yMDQgMTM2LjUtMTM2LjUgMjA0LTUxIDI0OC41IDUxIDI0OC41IDEzNi41IDIwNCAyMDQgMTM2LjUgMjQ4LjUgNTEgMjQ4LjUtNTEgMjA0LTEzNi41IDEzNi41LTIwNCA1MS0yNDguNXptMTI4IDBxMCAyMDktMTAzIDM4NS41dC0yNzkuNSAyNzkuNS0zODUuNSAxMDMtMzg1LjUtMTAzLTI3OS41LTI3OS41LTEwMy0zODUuNSAxMDMtMzg1LjUgMjc5LjUtMjc5LjUgMzg1LjUtMTAzIDM4NS41IDEwMyAyNzkuNSAyNzkuNSAxMDMgMzg1LjV6Ii8+PC9zdmc+', icon: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xMjYyIDEwNzVxLTM3IDEyMS0xMzggMTk1dC0yMjggNzQtMjI4LTc0LTEzOC0xOTVxLTgtMjUgNC00OC41dDM4LTMxLjVxMjUtOCA0OC41IDR0MzEuNSAzOHEyNSA4MCA5Mi41IDEyOS41dDE1MS41IDQ5LjUgMTUxLjUtNDkuNSA5Mi41LTEyOS41cTgtMjYgMzItMzh0NDktNCAzNyAzMS41IDQgNDguNXptLTQ5NC00MzVxMCA1My0zNy41IDkwLjV0LTkwLjUgMzcuNS05MC41LTM3LjUtMzcuNS05MC41IDM3LjUtOTAuNSA5MC41LTM3LjUgOTAuNSAzNy41IDM3LjUgOTAuNXptNTEyIDBxMCA1My0zNy41IDkwLjV0LTkwLjUgMzcuNS05MC41LTM3LjUtMzcuNS05MC41IDM3LjUtOTAuNSA5MC41LTM3LjUgOTAuNSAzNy41IDM3LjUgOTAuNXptMjU2IDI1NnEwLTEzMC01MS0yNDguNXQtMTM2LjUtMjA0LTIwNC0xMzYuNS0yNDguNS01MS0yNDguNSA1MS0yMDQgMTM2LjUtMTM2LjUgMjA0LTUxIDI0OC41IDUxIDI0OC41IDEzNi41IDIwNCAyMDQgMTM2LjUgMjQ4LjUgNTEgMjQ4LjUtNTEgMjA0LTEzNi41IDEzNi41LTIwNCA1MS0yNDguNXptMTI4IDBxMCAyMDktMTAzIDM4NS41dC0yNzkuNSAyNzkuNS0zODUuNSAxMDMtMzg1LjUtMTAzLTI3OS41LTI3OS41LTEwMy0zODUuNSAxMDMtMzg1LjUgMjc5LjUtMjc5LjUgMzg1LjUtMTAzIDM4NS41IDEwMyAyNzkuNSAyNzkuNSAxMDMgMzg1LjV6Ii8+PC9zdmc+',
@ -42,7 +40,7 @@ module.exports = class LocalPlugin {
* @param {string} pluginName The name of the plugin * @param {string} pluginName The name of the plugin
* @param {string} eventName The name of the event to listen on * @param {string} eventName The name of the event to listen on
*/ */
toggleNotification(e, pluginName, eventName) { toggleNotification (e, pluginName, eventName) {
const {checked} = e.target const {checked} = e.target
if (checked) { if (checked) {
if (!this.profile.notifications[pluginName]) this.profile.notifications[pluginName] = [] if (!this.profile.notifications[pluginName]) this.profile.notifications[pluginName] = []
@ -53,15 +51,15 @@ module.exports = class LocalPlugin {
} }
} }
updateName({target}) { updateName ({target}) {
this.profile.name = target.value this.profile.name = target.value
} }
updateUrl({target}) { updateUrl ({target}) {
this.profile.url = target.value this.profile.url = target.value
} }
updateDisplayName({target}) { updateDisplayName ({target}) {
this.profile.displayName = target.value this.profile.displayName = target.value
} }
@ -70,7 +68,7 @@ module.exports = class LocalPlugin {
* @param {string} plugin The name of the plugin * @param {string} plugin The name of the plugin
* @param {string} event The name of the event exposed by the plugin * @param {string} event The name of the event exposed by the plugin
*/ */
notificationCheckbox(plugin, event) { notificationCheckbox (plugin, event) {
const notifications = this.profile.notifications || {} const notifications = this.profile.notifications || {}
const checkbox = notifications[plugin] && notifications[plugin].includes(event) const checkbox = notifications[plugin] && notifications[plugin].includes(event)
? yo`<input type="checkbox" checked onchange="${e => this.toggleNotification(e, plugin, event)}">` ? yo`<input type="checkbox" checked onchange="${e => this.toggleNotification(e, plugin, event)}">`
@ -85,7 +83,7 @@ module.exports = class LocalPlugin {
* The form to create a local plugin * The form to create a local plugin
* @param {Profile[]} plugins Liste of profile of the plugins * @param {Profile[]} plugins Liste of profile of the plugins
*/ */
form(plugins = []) { form (plugins = []) {
const name = this.profile.name || '' const name = this.profile.name || ''
const url = this.profile.url || '' const url = this.profile.url || ''
const displayName = this.profile.displayName || '' const displayName = this.profile.displayName || ''
@ -114,4 +112,4 @@ module.exports = class LocalPlugin {
</div> </div>
</form>` </form>`
} }
} }

@ -103,8 +103,9 @@ class PluginManagerComponent {
/** /**
* Add a local plugin to the list of plugins * Add a local plugin to the list of plugins
*/ */
async openLocalPlugin() { async openLocalPlugin () {
const profile = await this.localPlugin.open(this.store.getAll()) const profile = await this.localPlugin.open(this.store.getAll())
if (!profile) return
const resolveLocaton = (iframe) => this.appManager.resolveLocation(profile, iframe) const resolveLocaton = (iframe) => this.appManager.resolveLocation(profile, iframe)
const api = new Plugin(profile, { resolveLocaton }) const api = new Plugin(profile, { resolveLocaton })
this.appManager.init([{profile, api}]) this.appManager.init([{profile, api}])

Loading…
Cancel
Save