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
}).length) throw new Error(`Action ${item.name} already exists on ${item.id}`)
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()
}
@ -116,20 +116,13 @@ module.exports = class Filepanel extends ViewPlugin {
this.registeredMenuItems = this.registeredMenuItems.filter((item) => {
if (item.id !== plugin.name || item.sticky === true) return true
else {
this.removedMenuItems.push(item.id)
this.removedMenuItems.push(item)
return false
}
})
this.renderComponent()
}
removePluginActions (plugin) {
this.registeredMenuItems = this.registeredMenuItems.filter((item) => {
return item.id !== plugin.name || item.sticky === true
})
this.renderComponent()
}
async 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 () {

@ -208,7 +208,7 @@ export const FileExplorer = (props: FileExplorerProps) => {
if (removedContextMenuItems) {
removeMenuItems(removedContextMenuItems)
}
}, [removedContextMenuItems])
}, [contextMenuItems])
useEffect(() => {
if (displayInput) {
@ -285,7 +285,15 @@ export const FileExplorer = (props: FileExplorerProps) => {
multiselect: false
}])
} else {
removeMenuItems(['paste'])
removeMenuItems([{
id: 'paste',
name: 'Paste',
type: ['folder', 'file'],
path: [],
extension: [],
pattern: [],
multiselect: false
}])
}
}, [canPaste])
@ -298,10 +306,9 @@ export const FileExplorer = (props: FileExplorerProps) => {
})
}
const removeMenuItems = (ids: string[]) => {
const removeMenuItems = (items: MenuItems) => {
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 }
})
}

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

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

Loading…
Cancel
Save