rm double func, check for name & id on remove, fix effect

pull/5370/head
filip mertens 4 years ago
parent 972c80892f
commit 8d7ed1d7c2
  1. 14
      apps/remix-ide/src/app/panels/file-panel.js
  2. 17
      libs/remix-ui/file-explorer/src/lib/file-explorer.tsx
  3. 2
      libs/remix-ui/file-explorer/src/lib/types/index.ts
  4. 3
      libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx

@ -108,7 +108,7 @@ module.exports = class Filepanel extends ViewPlugin {
return o.id === item.id & o.name === item.name return o.id === item.id & o.name === item.name
}).length) throw new Error(`Action ${item.name} already exists on ${item.id}`) }).length) throw new Error(`Action ${item.name} already exists on ${item.id}`)
this.registeredMenuItems = [...this.registeredMenuItems, item] this.registeredMenuItems = [...this.registeredMenuItems, item]
this.removedMenuItems = this.removedMenuItems.filter(id => item.id !== id) this.removedMenuItems = this.removedMenuItems.filter(menuItem => item.id !== menuItem.id)
this.renderComponent() this.renderComponent()
} }
@ -116,20 +116,13 @@ module.exports = class Filepanel extends ViewPlugin {
this.registeredMenuItems = this.registeredMenuItems.filter((item) => { this.registeredMenuItems = this.registeredMenuItems.filter((item) => {
if (item.id !== plugin.name || item.sticky === true) return true if (item.id !== plugin.name || item.sticky === true) return true
else { else {
this.removedMenuItems.push(item.id) this.removedMenuItems.push(item)
return false return false
} }
}) })
this.renderComponent() this.renderComponent()
} }
removePluginActions (plugin) {
this.registeredMenuItems = this.registeredMenuItems.filter((item) => {
return item.id !== plugin.name || item.sticky === true
})
this.renderComponent()
}
async getCurrentWorkspace () { async getCurrentWorkspace () {
return await this.request.getCurrentWorkspace() return await this.request.getCurrentWorkspace()
} }
@ -212,9 +205,6 @@ module.exports = class Filepanel extends ViewPlugin {
} }
}) })
}) })
const self = this
this.appManager.on('manager', 'pluginDeactivated', self.removePluginActions.bind(this))
} }
async createNewFile () { async createNewFile () {

@ -208,7 +208,7 @@ export const FileExplorer = (props: FileExplorerProps) => {
if (removedContextMenuItems) { if (removedContextMenuItems) {
removeMenuItems(removedContextMenuItems) removeMenuItems(removedContextMenuItems)
} }
}, [removedContextMenuItems]) }, [contextMenuItems])
useEffect(() => { useEffect(() => {
if (displayInput) { if (displayInput) {
@ -285,7 +285,15 @@ export const FileExplorer = (props: FileExplorerProps) => {
multiselect: false multiselect: false
}]) }])
} else { } else {
removeMenuItems(['paste']) removeMenuItems([{
id: 'paste',
name: 'Paste',
type: ['folder', 'file'],
path: [],
extension: [],
pattern: [],
multiselect: false
}])
} }
}, [canPaste]) }, [canPaste])
@ -298,10 +306,9 @@ export const FileExplorer = (props: FileExplorerProps) => {
}) })
} }
const removeMenuItems = (ids: string[]) => { const removeMenuItems = (items: MenuItems) => {
setState(prevState => { setState(prevState => {
const actions = prevState.actions.filter(({ id }) => ids.findIndex(value => value === id) === -1) const actions = prevState.actions.filter(({ id, name }) => items.findIndex(item => id === item.id && name === item.name) === -1)
return { ...prevState, actions } return { ...prevState, actions }
}) })
} }

@ -9,7 +9,7 @@ export interface FileExplorerProps {
plugin: any, plugin: any,
focusRoot: boolean, focusRoot: boolean,
contextMenuItems: MenuItems, contextMenuItems: MenuItems,
removedContextMenuItems: string[], removedContextMenuItems: MenuItems,
displayInput?: boolean, displayInput?: boolean,
externalUploads?: EventTarget & HTMLInputElement, externalUploads?: EventTarget & HTMLInputElement,
} }

@ -21,6 +21,7 @@ export interface WorkspaceProps {
request: any // api request, request: any // api request,
workspaces: any, workspaces: any,
registeredMenuItems: [] // menu items registeredMenuItems: [] // menu items
removedMenuItems: []
initialWorkspace: string initialWorkspace: string
} }
@ -409,6 +410,7 @@ export const Workspace = (props: WorkspaceProps) => {
plugin={props.plugin} plugin={props.plugin}
focusRoot={state.reset} focusRoot={state.reset}
contextMenuItems={props.registeredMenuItems} contextMenuItems={props.registeredMenuItems}
removedContextMenuItems={props.removedMenuItems}
displayInput={state.displayNewFile} displayInput={state.displayNewFile}
externalUploads={state.uploadFileEvent} externalUploads={state.uploadFileEvent}
/> />
@ -426,6 +428,7 @@ export const Workspace = (props: WorkspaceProps) => {
plugin={props.plugin} plugin={props.plugin}
focusRoot={state.reset} focusRoot={state.reset}
contextMenuItems={props.registeredMenuItems} contextMenuItems={props.registeredMenuItems}
removedContextMenuItems={props.removedMenuItems}
/> />
} }
</div> </div>

Loading…
Cancel
Save