move workspace creation to file panel

pull/932/head
yann300 4 years ago
parent ba28a85f72
commit 00cef813e3
  1. 14
      apps/remix-ide/src/app/files/fileManager.js
  2. 4
      apps/remix-ide/src/app/files/fileProvider.js
  3. 23
      apps/remix-ide/src/app/panels/file-panel.js

@ -600,20 +600,6 @@ class FileManager extends Plugin {
if (callback) callback(error) if (callback) callback(error)
}) })
} }
async createWorkspace (name) {
const workspaceProvider = this._deps.filesProviders.workspace
const workspacePath = 'browser/' + workspaceProvider.workspacesPath + '/' + name
const workspaceRootPath = 'browser/' + workspaceProvider.workspacesPath
if (!this.exists(workspaceRootPath)) await this.mkdir(workspaceRootPath)
if (!this.exists(workspacePath)) await this.mkdir(workspacePath)
}
async workspaceExists (name) {
const workspaceProvider = this._deps.filesProviders.workspace
const workspacePath = 'browser/' + workspaceProvider.workspacesPath + '/' + name
return this.exists(workspacePath)
}
} }
module.exports = FileManager module.exports = FileManager

@ -66,7 +66,9 @@ class FileProvider {
exists (path, cb) { exists (path, cb) {
// todo check the type (directory/file) as well #2386 // todo check the type (directory/file) as well #2386
// currently it is not possible to have a file and folder with same path // currently it is not possible to have a file and folder with same path
return cb(null, this._exists(path)) const ret = this._exists(path)
if (cb) cb(null, ret)
return ret
} }
_exists (path) { _exists (path) {

@ -170,13 +170,30 @@ module.exports = class Filepanel extends ViewPlugin {
return await this.request.uploadFile() return await this.request.uploadFile()
} }
async processCreateWorkspace (name) {
const workspaceProvider = this._deps.fileProviders.workspace
const browserProvider = this._deps.fileProviders.browser
const workspacePath = 'browser/' + workspaceProvider.workspacesPath + '/' + name
const workspaceRootPath = 'browser/' + workspaceProvider.workspacesPath
if (!browserProvider.exists(workspaceRootPath)) browserProvider.createDir(workspaceRootPath)
if (!browserProvider.exists(workspacePath)) browserProvider.createDir(workspacePath)
}
async workspaceExists (name) {
const workspaceProvider = this._deps.fileProviders.workspace
const browserProvider = this._deps.fileProviders.browser
const workspacePath = 'browser/' + workspaceProvider.workspacesPath + '/' + name
return browserProvider.exists(workspacePath)
}
async createWorkspace (workspaceName) { async createWorkspace (workspaceName) {
if (await this._deps.fileManager.workspaceExists(workspaceName)) throw new Error('workspace already exists') if (await this.workspaceExists(workspaceName)) throw new Error('workspace already exists')
const browserProvider = this._deps.fileProviders.browser
const workspacesPath = this._deps.fileProviders.workspace.workspacesPath const workspacesPath = this._deps.fileProviders.workspace.workspacesPath
await this._deps.fileManager.createWorkspace(workspaceName) await this.processCreateWorkspace(workspaceName)
for (const file in examples) { for (const file in examples) {
try { try {
await this._deps.fileManager.writeFile('browser/' + workspacesPath + '/' + workspaceName + '/' + examples[file].name, examples[file].content) await browserProvider.set('browser/' + workspacesPath + '/' + workspaceName + '/' + examples[file].name, examples[file].content)
} catch (error) { } catch (error) {
console.error(error) console.error(error)
} }

Loading…
Cancel
Save