diff options
Diffstat (limited to 'client/components/Browser/Folder')
| -rw-r--r-- | client/components/Browser/Folder/Files.jsx (renamed from client/components/Browser/Folder/Folder.jsx) | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/client/components/Browser/Folder/Folder.jsx b/client/components/Browser/Folder/Files.jsx index a3588f1..7d439c5 100644 --- a/client/components/Browser/Folder/Folder.jsx +++ b/client/components/Browser/Folder/Files.jsx @@ -1,22 +1,25 @@ import { h, Component } from 'preact' +import { audioPlayFile } fromĀ '../../../actions' + import client from '../../../client.js' import FileUploadButton from './FileUploadButton.jsx' +import FileLink from '../../../containers/fileLink.js' import TaskContentLink from '../../../containers/taskContentLink.js' import TaskStyleLink from '../../../containers/taskStyleLink.js' -export default class Folder extends Component { +export default class Files extends Component { constructor(props) { super() this.state = { files: props.folder.files || [], + selected: null, } this.addFiles = this.addFiles.bind(this) if (! props.folder.files) { client.file.index({ folder_id: props.folder.id }).then( files => this.setState({ files }) ) } - this.audio = document.createElement('audio') } addFiles(newFiles) { if (! newFiles) return @@ -25,21 +28,22 @@ export default class Folder extends Component { } handleClick(file) { if (file.type === 'audio') { - this.audio.setAttribute('src', mp3path(file)) - this.audio.play() + audioPlayFile(file) document.body.style.backgroundImage = 'url(' + pngpath(file) + ')' } + this.setState({ selected: file }) } render() { const files = (this.state.files).map(toFilenamePair).sort(sortByFilename).map(fromPair).map( (file, i) => { if (! file) return return ( - <div key={i}> - <span class='name' onClick={() => this.handleClick(file)}>{file.name}</span> + <div key={i} class={this.state.selected === file ? 'selected' : ''}> + <span class='name'><FileLink file={file}>{file.name}</FileLink></span> <span class='mime'>{file.mime}</span> + <span class='duration'>{file.duration.toFixed(1) + 's'}</span> <span class='actions'> - <TaskContentLink file={file}> content </TaskContentLink> - <TaskStyleLink file={file}> style </TaskStyleLink> + <TaskContentLink file={file}>content</TaskContentLink> + <TaskStyleLink file={file}>style</TaskStyleLink> </span> </div> ) |
