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 Files extends Component { constructor(props) { super() this.state = { selected: null, } this.addFiles = this.addFiles.bind(this) } addFiles(newFiles) { if (! newFiles) return const files = this.state.files.concat(newFiles).sort( (a,b) => { return b.id - a.id } ) this.setState({ files }) } handleClick(file) { this.setState({ selected: file }) } render() { let file_list; if (this.props.folder && this.props.folder.files) { file_list = this.props.folder.files } else { file_list = [] } const files = file_list.map(toFilenamePair).sort(sortByFilename).map(fromPair).map( (file, i) => { if (! file) return return (
{file.name} {file.processed ? file.mime : 'working...'} {file.duration ? (file.duration.toFixed(1) + 's') : ''} content style
) }) return (
{this.props.folder.name}
{files}
) } } function toFilenamePair (file) { return [file.name.toLowerCase(), file] } function sortByFilename (a,b) { return a[0] < b[0] ? -1 : a[0] == b[0] ? 0 : 1 } function fromPair (pair) { return pair[1] } function filepath (file) { return '/data/' + file.folder_id + '/' + encodeURIComponent(file.name) } function mp3path (file) { if (file.mime !== 'audio/mp3') { return filepath(file) + '.mp3' } return filepath(file) } function pngpath (file) { return filepath(file) + '.png' }