import { h, Component } from 'preact' import { bindActionCreators } from 'redux' import { connect } from 'react-redux' import { Route, Link } from 'react-router-dom' import { Loading, FileList, FileViewer } from '../common' import actions from '../actions' class Browser extends Component { state = { dir: '/', files: [], file: null, loading: true } componentDidMount() { this.fetch(this.state.dir) } handlePick(file) { console.log(file) if (file.dir) { this.fetch([this.state.dir, file.name].join('/').replace('//','/')) } else { this.setState({ file: { ...file, path: this.state.dir } }) } } fetch(dir) { console.log('fetch', dir) const { tool: module } = this.props.app this.setState({ dir, file: null, loading: true }) actions.socket.list_directory({ module, dir }).then(files => { console.log(files) this.setState({ dir, files, loading: false }) }) } render() { const { app } = this.props const { loading, dir, files, loadingFile, file, } = this.state console.log(this.props, this.state) return (

{dir}{dir[dir.length-1] !== '/' && '/'}

{app.tool}
{loading && } { e.preventDefault() e.stopPropagation() console.log('picked a result', file) this.handlePick(file) }} onClickParent={e => { console.log('navigate up') this.fetch(dir.split('/').slice(0, -1).join('/') || '/') }} /> {loadingFile && } {file && }
) } } const mapStateToProps = state => ({ app: state.system.app, }) const mapDispatchToProps = (dispatch, ownProps) => ({ actions: bindActionCreators({}, dispatch), }) export default connect(mapStateToProps, mapDispatchToProps)(Browser)