build(ui): migrate from CRA/Jest to Vite/Vitest (#3311)

* feat: create vite project

* feat: it's alive!

* feat: `make dev` working!

* feat: replace custom serviceWorker with vite plugin

* test: replace Jest with Vitest

* fix: run prettier

* fix: skip eslint for now.

* chore: remove ui.old folder

* refactor: replace lodash.pick with simple destructuring

* fix: eslint errors (wip)

* fix: eslint errors (wip)

* fix: display-name eslint errors (wip)

* fix: no-console eslint errors (wip)

* fix: react-refresh/only-export-components eslint errors (wip)

* fix: react-refresh/only-export-components eslint errors (wip)

* fix: react-refresh/only-export-components eslint errors (wip)

* fix: react-refresh/only-export-components eslint errors (wip)

* fix: build

* fix: pwa manifest

* refactor: pwa manifest

* refactor: simplify PORT configuration

* refactor: rename simple JS files

* test: cover playlistUtils

* fix: react-image-lightbox

* feat(ui): add sourcemaps to help debug issues
This commit is contained in:
Deluan Quintão
2024-09-28 11:54:36 -04:00
committed by GitHub
parent dd48a23f92
commit fcdd30ba8f
212 changed files with 6231 additions and 31060 deletions
+81
View File
@@ -0,0 +1,81 @@
import { SimpleForm, useTranslate } from 'react-admin'
import { useDispatch, useSelector } from 'react-redux'
import {
Button,
Dialog,
DialogActions,
DialogContent,
DialogTitle,
} from '@material-ui/core'
import subsonic from '../subsonic'
import { closeDownloadMenu } from '../actions'
import { formatBytes } from '../utils'
import { useTranscodingOptions } from './useTranscodingOptions'
const DownloadMenuDialog = () => {
const { open, record, recordType } = useSelector(
(state) => state.downloadMenuDialog,
)
const dispatch = useDispatch()
const translate = useTranslate()
const { TranscodingOptionsInput, format, maxBitRate, originalFormat } =
useTranscodingOptions()
const handleClose = (e) => {
dispatch(closeDownloadMenu())
e.stopPropagation()
}
const handleDownload = (e) => {
if (record) {
const id = record.mediaFileId || record.id
if (originalFormat) {
subsonic.download(id, 'raw')
} else {
subsonic.download(id, format, maxBitRate?.toString())
}
dispatch(closeDownloadMenu())
}
e.stopPropagation()
}
return (
<Dialog
open={open}
onClose={handleClose}
aria-labelledby="download-dialog"
fullWidth={true}
maxWidth={'sm'}
>
<DialogTitle id="download-dialog">
{recordType &&
translate('message.downloadDialogTitle', {
resource: translate(`resources.${recordType}.name`, {
smart_count: 1,
}).toLocaleLowerCase(),
name: record?.name || record?.title,
size: formatBytes(record?.size),
})}
</DialogTitle>
<DialogContent>
<SimpleForm toolbar={null} variant={'outlined'}>
<TranscodingOptionsInput
fullWidth
label={translate('message.downloadOriginalFormat')}
/>
</SimpleForm>
</DialogContent>
<DialogActions>
<Button onClick={handleClose} color="secondary">
{translate('ra.action.close')}
</Button>
<Button onClick={handleDownload} color="primary">
{translate('ra.action.download')}
</Button>
</DialogActions>
</Dialog>
)
}
export default DownloadMenuDialog