Commit d467f4b3 authored by ioedeveloper's avatar ioedeveloper Committed by yann300

Move getWorkspaces api to file-panel

parent 99196493
...@@ -60,8 +60,7 @@ module.exports = class Filepanel extends ViewPlugin { ...@@ -60,8 +60,7 @@ module.exports = class Filepanel extends ViewPlugin {
this.gitHandle = new GitHandle() this.gitHandle = new GitHandle()
this.registeredMenuItems = [] this.registeredMenuItems = []
this.request = {} this.request = {}
this.getWorkspaces()
this.renderComponent()
} }
render () { render () {
...@@ -85,6 +84,7 @@ module.exports = class Filepanel extends ViewPlugin { ...@@ -85,6 +84,7 @@ module.exports = class Filepanel extends ViewPlugin {
registry={this._components.registry} registry={this._components.registry}
plugin={this} plugin={this}
request={this.request} request={this.request}
workspaces={this.workspaces}
registeredMenuItems={this.registeredMenuItems} registeredMenuItems={this.registeredMenuItems}
/> />
, this.el) , this.el)
...@@ -108,7 +108,18 @@ module.exports = class Filepanel extends ViewPlugin { ...@@ -108,7 +108,18 @@ module.exports = class Filepanel extends ViewPlugin {
} }
async getWorkspaces () { async getWorkspaces () {
return await this.request.getWorkspaces() const result = new Promise((resolve, reject) => {
const workspacesPath = this._deps.fileProviders.workspace.workspacesPath
this._deps.fileProviders.browser.resolveDirectory('/' + workspacesPath, (error, items) => {
if (error) return reject(error)
resolve(Object.keys(items)
.filter((item) => items[item].isDirectory)
.map((folder) => folder.replace(workspacesPath + '/', '')))
})
})
this.workspaces = await result
this.renderComponent()
return this.workspaces
} }
async createNewFile () { async createNewFile () {
......
...@@ -23,6 +23,7 @@ export interface WorkspaceProps { ...@@ -23,6 +23,7 @@ export interface WorkspaceProps {
registry: any // registry registry: any // registry
plugin: any // plugin call and resetFocus plugin: any // plugin call and resetFocus
request: any // api request, request: any // api request,
workspaces: any,
registeredMenuItems: [] // menu items registeredMenuItems: [] // menu items
} }
...@@ -43,16 +44,15 @@ export const Workspace = (props: WorkspaceProps) => { ...@@ -43,16 +44,15 @@ export const Workspace = (props: WorkspaceProps) => {
return { ...prevState, displayNewFile: !state.displayNewFile } return { ...prevState, displayNewFile: !state.displayNewFile }
}) })
} }
/**** ****/
/* implement an external API, consumed by the parent */ /* implement an external API, consumed by the parent */
props.request.createWorkspace = () => { props.request.createWorkspace = () => {
return createWorkspace() return createWorkspace()
} }
props.request.getWorkspaces = () => { // props.request.getWorkspaces = () => {
return getWorkspaces() // return getWorkspaces()
} // }
props.request.createNewFile = () => { props.request.createNewFile = () => {
props.plugin.resetNewFile() props.plugin.resetNewFile()
...@@ -67,10 +67,21 @@ export const Workspace = (props: WorkspaceProps) => { ...@@ -67,10 +67,21 @@ export const Workspace = (props: WorkspaceProps) => {
props.request.getCurrentWorkspace = () => { props.request.getCurrentWorkspace = () => {
return state.currentWorkspace return state.currentWorkspace
} }
/**** ****/
useEffect(() => { initWorkspace() }, []) useEffect(() => { initWorkspace() }, [])
useEffect(() => {
const getWorkspaces = async () => {
if (props.workspaces && Array.isArray(props.workspaces)) {
setState(prevState => {
return { ...prevState, workspaces: props.workspaces }
})
}
}
getWorkspaces()
}, [props.workspaces])
const [state, setState] = useState({ const [state, setState] = useState({
workspaces: [], workspaces: [],
reset: false, reset: false,
...@@ -143,27 +154,26 @@ export const Workspace = (props: WorkspaceProps) => { ...@@ -143,27 +154,26 @@ export const Workspace = (props: WorkspaceProps) => {
/* workspace creation, renaming and deletion */ /* workspace creation, renaming and deletion */
const modal = (title: string, message: string, ok: { label: string, fn: () => void }, cancel: { label: string, fn: () => void }) => { // const modal = (title: string, message: string, ok: { label: string, fn: () => void }, cancel: { label: string, fn: () => void }) => {
setState(prevState => { // setState(prevState => {
return { // return {
...prevState, // ...prevState,
modals: [...prevState.modals, // modals: [...prevState.modals,
{ // {
message, // message,
title, // title,
ok, // ok,
cancel, // cancel,
handleHide: handleHideModal // handleHide: handleHideModal
}] // }]
} // }
}) // })
} // }
const workspaceRenameInput = useRef() const workspaceRenameInput = useRef()
const workspaceCreateInput = useRef() const workspaceCreateInput = useRef()
const createWorkspace = () => { const createWorkspace = () => {
modal()
setState(prevState => { setState(prevState => {
state.createModal.hide = false state.createModal.hide = false
return { ...prevState, ...state.createModal } return { ...prevState, ...state.createModal }
...@@ -223,7 +233,7 @@ export const Workspace = (props: WorkspaceProps) => { ...@@ -223,7 +233,7 @@ export const Workspace = (props: WorkspaceProps) => {
}) })
} }
const setWorkspace = async (name) => { const setWorkspace = async (name) => {
if (name === LOCALHOST) { if (name === LOCALHOST) {
props.workspace.clearWorkspace() props.workspace.clearWorkspace()
} else if (name === NO_WORKSPACE) { } else if (name === NO_WORKSPACE) {
...@@ -231,9 +241,9 @@ export const Workspace = (props: WorkspaceProps) => { ...@@ -231,9 +241,9 @@ export const Workspace = (props: WorkspaceProps) => {
} else { } else {
props.workspace.setWorkspace(name) props.workspace.setWorkspace(name)
} }
const workspaces = await getWorkspaces() props.plugin.getWorkspaces()
setState(prevState => { setState(prevState => {
return { ...prevState, workspaces, currentWorkspace: name } return { ...prevState, currentWorkspace: name }
}) })
props.setWorkspace({ name, isLocalhost: name === LOCALHOST }) props.setWorkspace({ name, isLocalhost: name === LOCALHOST })
} }
...@@ -272,26 +282,11 @@ export const Workspace = (props: WorkspaceProps) => { ...@@ -272,26 +282,11 @@ export const Workspace = (props: WorkspaceProps) => {
setWorkspace('default_workspace') setWorkspace('default_workspace')
} else { } else {
// we've already got some workspaces // we've already got some workspaces
const workspaces = await getWorkspaces() setWorkspace(NO_WORKSPACE)
if (workspaces.length) setWorkspace(workspaces[0])
else setWorkspace(NO_WORKSPACE)
} }
}) })
} }
const getWorkspaces = (): any => {
return new Promise((resolve, reject) => {
const workspacesPath = props.workspace.workspacesPath
props.browser.resolveDirectory('/' + workspacesPath, (error, items) => {
if (error) return reject(error)
resolve(Object.keys(items)
.filter((item) => items[item].isDirectory)
.map((folder) => folder.replace(workspacesPath + '/', '')))
})
})
}
const remixdExplorer = { const remixdExplorer = {
hide: () => { hide: () => {
if (state.currentWorkspace === LOCALHOST) setWorkspace(NO_WORKSPACE) if (state.currentWorkspace === LOCALHOST) setWorkspace(NO_WORKSPACE)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment