import React, { useState } from 'react' import { useDispatch, useSelector } from 'react-redux' import { ReferenceManyField, useTranslate } from 'react-admin' import { Box, Button, Dialog, DialogActions, DialogContent, DialogTitle, FormControlLabel, FormGroup, MenuItem, Switch, TextField, } from '@material-ui/core' import subsonic from '../subsonic' import { closeDownloadMenu } from '../actions' import { formatBytes } from '../utils' const DownloadTranscodings = (props) => { const translate = useTranslate() return ( <> props.onChange(e.target.value)} value={props.value} > {Object.values(props.data).map((transcoding) => ( {transcoding.name} ))} ) } const DownloadMenuDialog = () => { const { open, record, recordType } = useSelector( (state) => state.downloadMenuDialog ) const dispatch = useDispatch() const translate = useTranslate() const [originalFormat, setUseOriginalFormat] = useState(true) const [targetFormat, setTargetFormat] = useState('') const [targetRate, setTargetRate] = useState(0) const handleClose = (e) => { dispatch(closeDownloadMenu()) e.stopPropagation() } const handleDownload = (e) => { if (record) { subsonic.download( record.id, originalFormat ? 'raw' : targetFormat, targetRate ) dispatch(closeDownloadMenu()) } e.stopPropagation() } const handleOriginal = (e) => { const original = e.target.checked setUseOriginalFormat(original) if (original) { setTargetFormat('') setTargetRate(0) } } const type = recordType ? translate(`resources.${recordType}.name`, { smart_count: 1, }).toLocaleLowerCase() : '' return ( <> {record && `${translate('resources.album.actions.download')} ${type} ${ record.name || record.title } (${formatBytes(record.size)})`}
} label={translate('message.originalFormat')} onChange={handleOriginal} /> {!originalFormat && ( <> setTargetRate(e.target.value)} > - {[32, 48, 64, 80, 96, 112, 128, 160, 192, 256, 320].map( (bits) => ( {bits} ) )} )}
) } export default DownloadMenuDialog