Merge branch 'master' into VIPFocus

pull/780/head
Liana Husikyan 4 years ago committed by GitHub
commit 4026baa7b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      apps/remix-ide/src/app/files/fileManager.js
  2. 26
      apps/remix-ide/src/app/panels/file-panel.js
  3. 3
      apps/remix-ide/src/app/tabs/staticanalysis/staticAnalysisView.js
  4. 11
      apps/remix-ide/src/app/ui/landing-page/landing-page.js
  5. 1
      libs/remix-ui/file-explorer/src/lib/file-explorer-menu.tsx
  6. 24
      libs/remix-ui/file-explorer/src/lib/file-explorer.tsx
  7. 4
      libs/remix-ui/file-explorer/src/lib/types/index.ts

@ -271,6 +271,7 @@ class FileManager extends Plugin {
this._deps.browserExplorer.event.register('fileRenamed', (oldName, newName, isFolder) => { this.fileRenamedEvent(oldName, newName, isFolder) })
this._deps.localhostExplorer.event.register('fileRenamed', (oldName, newName, isFolder) => { this.fileRenamedEvent(oldName, newName, isFolder) })
this._deps.browserExplorer.event.register('fileRemoved', (path) => { this.fileRemovedEvent(path) })
this._deps.browserExplorer.event.register('fileAdded', (path) => { this.fileAddedEvent(path) })
this._deps.localhostExplorer.event.register('fileRemoved', (path) => { this.fileRemovedEvent(path) })
this._deps.localhostExplorer.event.register('errored', (event) => { this.removeTabsOf(this._deps.localhostExplorer) })
this._deps.localhostExplorer.event.register('closed', (event) => { this.removeTabsOf(this._deps.localhostExplorer) })
@ -281,9 +282,12 @@ class FileManager extends Plugin {
this.switchFile = this.open
}
fileAddedEvent (path) {
this.emit('fileAdded', path)
}
fileChangedEvent (path) {
// @todo(#2386) use only for discard changes function.
// this.syncEditor(path)
this.emit('currentFileChanged', path)
}
fileRenamedEvent (oldName, newName, isFolder) {

@ -34,7 +34,7 @@ var canUpload = window.File || window.FileReader || window.FileList || window.Bl
const profile = {
name: 'fileExplorers',
displayName: 'File explorers',
methods: [],
methods: ['createNewFile', 'uploadFile'],
events: [],
icon: 'assets/img/fileManager.webp',
description: ' - ',
@ -67,6 +67,8 @@ module.exports = class Filepanel extends ViewPlugin {
}
this.reset = false
this.registeredMenuItems = []
this.displayNewFile = false
this.uploadFileEvent = null
this.el = yo`
<div id="fileExplorerView">
</div>
@ -99,6 +101,26 @@ module.exports = class Filepanel extends ViewPlugin {
this.renderComponent()
}
createNewFile () {
this.displayNewFile = true
this.renderComponent()
}
resetNewFile () {
this.displayNewFile = false
this.renderComponent()
}
uploadFile (target) {
this.uploadFileEvent = target
this.renderComponent()
}
resetUploadFile () {
this.uploadFileEvent = null
this.renderComponent()
}
render () {
return this.el
}
@ -132,6 +154,8 @@ module.exports = class Filepanel extends ViewPlugin {
plugin={this}
focusRoot={this.reset}
contextMenuItems={this.registeredMenuItems}
displayInput={this.displayNewFile}
externalUploads={this.uploadFileEvent}
/>
</div>
<div className='pl-2 filesystemexplorer remixui_treeview'>

@ -211,6 +211,9 @@ staticAnalysisView.prototype.checkModule = function (event) {
}
}
staticAnalysisView.prototype.correctRunBtnDisabled = function () {
if (!this.view) {
return
}
const selected = this.view.querySelectorAll('[name="staticanalysismodule"]:checked')
if (this.lastCompilationResult && selected.length !== 0) {
this.runBtn.removeAttribute('disabled')

@ -281,9 +281,13 @@ export class LandingPage extends ViewPlugin {
}
const createNewFile = () => {
const fileExplorer = globalRegistry.get('fileexplorer/browser').api
fileExplorer.createNewFile()
this.call('fileExplorers', 'createNewFile')
}
const uploadFile = (target) => {
this.call('fileExplorers', 'uploadFile', target)
}
const connectToLocalhost = () => {
this.appManager.activatePlugin('remixd')
}
@ -382,8 +386,7 @@ export class LandingPage extends ViewPlugin {
<input title="open file" type="file" onchange="${
(event) => {
event.stopPropagation()
const fileExplorer = globalRegistry.get('fileexplorer/browser').api
fileExplorer.uploadFile(event)
uploadFile(event.target)
}
}" multiple />
</label>

@ -60,6 +60,7 @@ export const FileExplorerMenu = (props: FileExplorerMenuProps) => {
<input id="fileUpload" data-id="fileExplorerFileUpload" type="file" onChange={(e) => {
e.stopPropagation()
props.uploadFile(e.target)
e.target.value = null
}}
multiple />
</label>

@ -16,7 +16,7 @@ import './css/file-explorer.css'
const queryParams = new QueryParams()
export const FileExplorer = (props: FileExplorerProps) => {
const { filesProvider, name, registry, plugin, focusRoot, contextMenuItems } = props
const { filesProvider, name, registry, plugin, focusRoot, contextMenuItems, displayInput, externalUploads } = props
const [state, setState] = useState({
focusElement: [{
key: name,
@ -182,6 +182,20 @@ export const FileExplorer = (props: FileExplorerProps) => {
}
}, [contextMenuItems])
useEffect(() => {
if (displayInput) {
handleNewFileInput()
plugin.resetNewFile()
}
}, [displayInput])
useEffect(() => {
if (externalUploads) {
uploadFile(externalUploads)
plugin.resetUploadFile()
}
}, [externalUploads])
const resolveDirectory = async (folderPath, dir: File[], isChild = false): Promise<File[]> => {
if (!isChild && (state.focusEdit.element === 'browser/blank') && state.focusEdit.isNew && (dir.findIndex(({ path }) => path === 'browser/blank') === -1)) {
dir = state.focusEdit.type === 'file' ? [...dir, {
@ -454,8 +468,6 @@ export const FileExplorer = (props: FileExplorerProps) => {
// pick that up via the 'fileAdded' event from the files module.
[...target.files].forEach((file) => {
const files = filesProvider
const loadFile = (name: string): void => {
const fileReader = new FileReader()
@ -467,7 +479,7 @@ export const FileExplorer = (props: FileExplorerProps) => {
}, null)
return
}
const success = await files.set(name, event.target.result)
const success = await filesProvider.set(name, event.target.result)
if (!success) {
modal('File Upload Failed', 'Failed to create file ' + name, {
@ -478,9 +490,9 @@ export const FileExplorer = (props: FileExplorerProps) => {
}
fileReader.readAsText(file)
}
const name = files.type + '/' + file.name
const name = filesProvider.type + '/' + file.name
files.exists(name, (error, exist) => {
filesProvider.exists(name, (error, exist) => {
if (error) console.log(error)
if (!exist) {
loadFile(name)

@ -6,7 +6,9 @@ export interface FileExplorerProps {
menuItems?: string[],
plugin: any,
focusRoot: boolean,
contextMenuItems: { name: string, type: string[], path: string[], extension: string[], pattern: string[] }[]
contextMenuItems: { name: string, type: string[], path: string[], extension: string[], pattern: string[] }[],
displayInput?: boolean,
externalUploads?: EventTarget & HTMLInputElement
}
export interface File {

Loading…
Cancel
Save