blob: a7731f1a3e623d2f92f256a25c12efe90964f9f5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
import { h, Component } from 'preact'
import Folders from './Folders/Folders.jsx'
import Files from './Folder/Files.jsx'
import client from '../../client'
class Browser extends Component {
constructor(props) {
super()
let openFolders = JSON.parse( localStorage['openFolders'] || 'null' )
this.state = {
folders: [],
openFolders: openFolders || [],
}
client.folder.index().then( folders => this.setState({ folders }) )
}
openFolder(folder) {
if (this.state.openFolders.indexOf(folder.id) === -1) {
const newOpenFolders = this.state.openFolders.concat(folder.id)
localStorage['openFolders'] = JSON.stringify(newOpenFolders)
this.setState({ openFolders: newOpenFolders })
}
}
closeFolder(folder) {
const openFolders = this.state.openFolders.filter( folder_id => folder_id !== folder.id )
localStorage['openFolders'] = JSON.stringify(openFolders)
this.setState({ openFolders })
}
addFolder(folder) {
this.setState({ folders: this.state.folders.concat([folder]) })
}
render() {
const openFolders = this.state.openFolders.map((folder_id) => {
const folder_list = this.state.folders.filter(folder => folder.id === folder_id)
if (! folder_list.length) return
const folder = folder_list[0]
return (
<Files
folder={folder}
onClose={() => this.closeFolder(folder)}
/>
)
})
return (
<div class='column'>
<Folders folders={this.state.folders}
openFolder={(folder) => this.openFolder(folder)}
addFolder={(folder) => this.addFolder(folder)}
/>
{openFolders}
</div>
)
}
}
export default Browser
|