add loading state
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import { Component } from 'react'
|
import React, { Component } from 'react'
|
||||||
import { Button, Cross, PopupContainer, PopupTitle } from '../styled'
|
import { Button, Cross, PopupContainer, PopupTitle } from '../styled'
|
||||||
import API from '../utils/API'
|
import API from '../utils/API'
|
||||||
import FileBrowser from './fileBrowser'
|
import FileBrowser from './fileBrowser'
|
||||||
@@ -19,6 +19,7 @@ class FileBrowserMenu extends Component {
|
|||||||
],
|
],
|
||||||
currentPath: ["", ""],
|
currentPath: ["", ""],
|
||||||
browserFs: ["", ""],
|
browserFs: ["", ""],
|
||||||
|
loading: [false, false],
|
||||||
errMessage: "",
|
errMessage: "",
|
||||||
dualBrowser: false
|
dualBrowser: false
|
||||||
}
|
}
|
||||||
@@ -48,6 +49,10 @@ class FileBrowserMenu extends Component {
|
|||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
assert(brIndex === 0 || brIndex === 1, {brIndex})
|
assert(brIndex === 0 || brIndex === 1, {brIndex})
|
||||||
|
|
||||||
|
let { loading } = this.state
|
||||||
|
loading[brIndex] = true
|
||||||
|
this.setState({ loading })
|
||||||
|
|
||||||
if (newPath === "") newPath = "/"
|
if (newPath === "") newPath = "/"
|
||||||
|
|
||||||
let { browserFs } = this.state
|
let { browserFs } = this.state
|
||||||
@@ -64,13 +69,21 @@ class FileBrowserMenu extends Component {
|
|||||||
.then(response => {
|
.then(response => {
|
||||||
if (typeof response.data.list !== "object") return reject(new Error("Invalid response"))
|
if (typeof response.data.list !== "object") return reject(new Error("Invalid response"))
|
||||||
|
|
||||||
|
if (response.data.list.length > 100) response.data.list.length = 100
|
||||||
let { files } = this.state
|
let { files } = this.state
|
||||||
files[brIndex] = response.data.list
|
files[brIndex] = response.data.list
|
||||||
this.setState({ files, currentPath, errMessage: "" })
|
loading[brIndex] = false
|
||||||
|
this.setState({ files, currentPath, errMessage: "", loading })
|
||||||
|
|
||||||
return resolve()
|
return resolve()
|
||||||
})
|
})
|
||||||
.catch(reject)
|
.catch(() => {
|
||||||
|
let { loading } = this.state
|
||||||
|
loading[brIndex] = false
|
||||||
|
this.setState({ loading })
|
||||||
|
|
||||||
|
return reject()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,12 +123,12 @@ class FileBrowserMenu extends Component {
|
|||||||
renderRemoteButtons = brIndex => {
|
renderRemoteButtons = brIndex => {
|
||||||
assert( brIndex === 0 || brIndex === 1, {brIndex})
|
assert( brIndex === 0 || brIndex === 1, {brIndex})
|
||||||
return this.props.remotes.map(v => (
|
return this.props.remotes.map(v => (
|
||||||
<Button onClick={() => this.setRemote(brIndex, v.name)}> { v.name } </Button>
|
<Button key={v.name} onClick={() => this.setRemote(brIndex, v.name)}> { v.name } </Button>
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
render = () => {
|
render = () => {
|
||||||
const { files, currentPath } = this.state
|
const { files, currentPath, loading } = this.state
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<PopupContainer>
|
<PopupContainer>
|
||||||
@@ -133,6 +146,7 @@ class FileBrowserMenu extends Component {
|
|||||||
files={files[0]}
|
files={files[0]}
|
||||||
updateFiles={path => this.getFiles(0, path)}
|
updateFiles={path => this.getFiles(0, path)}
|
||||||
currentPath={currentPath[0]}
|
currentPath={currentPath[0]}
|
||||||
|
loading={loading[0]}
|
||||||
/>
|
/>
|
||||||
</FileBrowserWrapper>
|
</FileBrowserWrapper>
|
||||||
</FileBrowsersContainer>
|
</FileBrowsersContainer>
|
||||||
@@ -141,4 +155,8 @@ class FileBrowserMenu extends Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default FileBrowserMenu
|
const compareProps = (prevProps, nextProps) => {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
export default React.memo(FileBrowserMenu, compareProps)
|
||||||
Reference in New Issue
Block a user