summaryrefslogtreecommitdiff
path: root/client/components/App.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'client/components/App.jsx')
-rw-r--r--client/components/App.jsx23
1 files changed, 18 insertions, 5 deletions
diff --git a/client/components/App.jsx b/client/components/App.jsx
index 0ed9288..85766e5 100644
--- a/client/components/App.jsx
+++ b/client/components/App.jsx
@@ -14,23 +14,36 @@ class App extends Component {
super()
let openFolders = JSON.parse( localStorage['openFolders'] || 'null' )
this.state = {
- folders: null,
+ folders: [],
openFolders: openFolders || [],
}
client.folder.index().then( folders => this.setState({ folders }) )
}
openFolder(folder) {
- if (this.state.openFolders.indexOf(folder) === -1) {
- this.setState({ openFolders: this.state.openFolders.concat([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) => {
+ 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 (
- <Folder folder={folder} />
+ <Folder
+ folder={folder}
+ onClose={() => this.closeFolder(folder)}
+ />
)
})
return (