allowing stored plugin to be shown in modal

pull/1344/head
filip mertens 4 years ago
parent 5381bc99e8
commit a69639893a
  1. 2
      apps/remix-ide/src/app/components/plugin-manager-component.js
  2. 21
      libs/remix-ui/plugin-manager/src/lib/components/LocalPluginForm.tsx

@ -67,7 +67,7 @@ class PluginManagerComponent extends ViewPlugin {
this.engine.register(localPlugin) this.engine.register(localPlugin)
this.appManager.activatePlugin(localPlugin.profile.name) this.appManager.activatePlugin(localPlugin.profile.name)
this.getAndFilterPlugins() this.getAndFilterPlugins()
localStorage.setItem('plugins/local', JSON.stringify(localPlugin)) localStorage.setItem('plugins/local', JSON.stringify(localPlugin.profile))
} }
} }

@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable @typescript-eslint/no-unused-vars */
import React, { useReducer, useState } from 'react' import React, { useEffect, useReducer, useState } from 'react'
import { ModalDialog } from '@remix-ui/modal-dialog' import { ModalDialog } from '@remix-ui/modal-dialog'
import { Toaster } from '@remix-ui/toaster' import { Toaster } from '@remix-ui/toaster'
import { IframePlugin, WebsocketPlugin } from '@remixproject/engine-web' import { IframePlugin, WebsocketPlugin } from '@remixproject/engine-web'
@ -35,7 +35,6 @@ const defaultProfile = {
function LocalPluginForm ({ closeModal, visible, pluginManager }: LocalPluginFormProps) { function LocalPluginForm ({ closeModal, visible, pluginManager }: LocalPluginFormProps) {
const [errorMsg, dispatchToastMsg] = useReducer(localPluginToastReducer, '') const [errorMsg, dispatchToastMsg] = useReducer(localPluginToastReducer, '')
const [defaultPlugin] = useState<FormStateProps>(JSON.parse(localStorage.getItem('plugins/local')) || defaultProfile)
const [name, setName] = useState<string>('') const [name, setName] = useState<string>('')
const [displayName, setDisplayName] = useState<string>('') const [displayName, setDisplayName] = useState<string>('')
const [url, setUrl] = useState<string>('') const [url, setUrl] = useState<string>('')
@ -43,6 +42,16 @@ function LocalPluginForm ({ closeModal, visible, pluginManager }: LocalPluginFor
const [location, setLocation] = useState<'sidePanel' | 'mainPanel' | 'none'>('sidePanel') const [location, setLocation] = useState<'sidePanel' | 'mainPanel' | 'none'>('sidePanel')
const [methods, setMethods] = useState<string>('') const [methods, setMethods] = useState<string>('')
useEffect(() => {
const storagePlugin:FormStateProps = localStorage.getItem('plugins/local') ? JSON.parse(localStorage.getItem('plugins/local')) : defaultProfile
setName(storagePlugin.name)
setUrl(storagePlugin.url)
setLocation(storagePlugin.location as 'sidePanel' | 'mainPanel' | 'none')
setMethods(storagePlugin.methods)
setType(storagePlugin.type)
setDisplayName(storagePlugin.displayName)
}, [])
const handleModalOkClick = async () => { const handleModalOkClick = async () => {
try { try {
if (!name) throw new Error('Plugin should have a name') if (!name) throw new Error('Plugin should have a name')
@ -97,7 +106,7 @@ function LocalPluginForm ({ closeModal, visible, pluginManager }: LocalPluginFor
<input <input
className="form-control" className="form-control"
onChange={e => setName(e.target.value)} onChange={e => setName(e.target.value)}
value={ name || defaultPlugin.name } value={ name}
id="plugin-name" id="plugin-name"
data-id="localPluginName" data-id="localPluginName"
placeholder="Should be camelCase" /> placeholder="Should be camelCase" />
@ -107,7 +116,7 @@ function LocalPluginForm ({ closeModal, visible, pluginManager }: LocalPluginFor
<input <input
className="form-control" className="form-control"
onChange={e => setDisplayName(e.target.value)} onChange={e => setDisplayName(e.target.value)}
value={ displayName || defaultPlugin.displayName } value={ displayName }
id="plugin-displayname" id="plugin-displayname"
data-id="localPluginDisplayName" data-id="localPluginDisplayName"
placeholder="Name in the header" /> placeholder="Name in the header" />
@ -117,7 +126,7 @@ function LocalPluginForm ({ closeModal, visible, pluginManager }: LocalPluginFor
<input <input
className="form-control" className="form-control"
onChange={e => setMethods(e.target.value)} onChange={e => setMethods(e.target.value)}
value={ methods || defaultPlugin.methods } value={ methods }
id="plugin-methods" id="plugin-methods"
data-id="localPluginMethods" data-id="localPluginMethods"
placeholder="Name in the header" /> placeholder="Name in the header" />
@ -128,7 +137,7 @@ function LocalPluginForm ({ closeModal, visible, pluginManager }: LocalPluginFor
<input <input
className="form-control" className="form-control"
onChange={e => setUrl(e.target.value)} onChange={e => setUrl(e.target.value)}
value={ url || defaultPlugin.url } value={ url }
id="plugin-url" id="plugin-url"
data-id="localPluginUrl" data-id="localPluginUrl"
placeholder="ex: https://localhost:8000" /> placeholder="ex: https://localhost:8000" />

Loading…
Cancel
Save