From 82cf40b516b5ab11c34b3642a01603ec1b590c9f Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Thu, 29 Jun 2017 13:05:21 +0200 Subject: store open folders in localstorage --- client/components/App.jsx | 23 ++++++++++++++++++----- client/components/Folder/Folder.jsx | 17 ++++++++++++++--- client/components/Folders/FolderForm.jsx | 1 + client/components/Folders/Folders.jsx | 15 +++++++++++---- client/components/Header.jsx | 2 +- 5 files changed, 45 insertions(+), 13 deletions(-) (limited to 'client') 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 ( - + this.closeFolder(folder)} + /> ) }) return ( diff --git a/client/components/Folder/Folder.jsx b/client/components/Folder/Folder.jsx index e39b40d..20d3014 100644 --- a/client/components/Folder/Folder.jsx +++ b/client/components/Folder/Folder.jsx @@ -14,6 +14,9 @@ export default class Folder extends Component { files: props.folder.files || [], } this.addFiles = this.addFiles.bind(this) + if (! props.folder.files) { + client.file.index({ folder_id: props.folder.id }).then( files => this.setState({ files }) ) + } } addFiles(newFiles) { console.log(newFiles) @@ -27,14 +30,22 @@ export default class Folder extends Component { if (! file) return return (
- {file.name} + {file.name}
) }) return (
- {this.props.folder.name} - {files} +
+ {this.props.folder.name} +
+ + +
+
+
+ {files} +
) } diff --git a/client/components/Folders/FolderForm.jsx b/client/components/Folders/FolderForm.jsx index b89e2a0..1ed263e 100644 --- a/client/components/Folders/FolderForm.jsx +++ b/client/components/Folders/FolderForm.jsx @@ -25,6 +25,7 @@ export default class FolderForm extends Component { event.preventDefault() let rec = Object.assign({}, this.state) delete rec.error + this.props.onClose() client.folder.create( rec ).then( (data) => { this.props.addFolder( data ) }) diff --git a/client/components/Folders/Folders.jsx b/client/components/Folders/Folders.jsx index 0d34f58..f63dae2 100644 --- a/client/components/Folders/Folders.jsx +++ b/client/components/Folders/Folders.jsx @@ -34,16 +34,23 @@ export default class Folders extends Component { const folders = (this.props.folders || []).map( (folder,i) => { return (
this.toggle(folder)}> - {folder.name} + {folder.name}
) }) return (
- folders - {folders} +
+ folders +
+ +
+
+
+ {folders} +
this.closeModal()}> - + this.closeModal()} />
) diff --git a/client/components/Header.jsx b/client/components/Header.jsx index b8c5fd4..31439db 100644 --- a/client/components/Header.jsx +++ b/client/components/Header.jsx @@ -10,7 +10,7 @@ export default class Header extends Component { render() { return (
- ding dong + spawn cortex
) } -- cgit v1.2.3-70-g09d2