Initial work on Shares

This commit is contained in:
Deluan
2023-01-19 22:52:55 -05:00
parent 5331de17c2
commit ab04e33da6
36 changed files with 841 additions and 84 deletions
+33
View File
@@ -0,0 +1,33 @@
import {
DateField,
DateInput,
Edit,
NumberField,
SimpleForm,
TextInput,
} from 'react-admin'
import { shareUrl } from '../utils'
import { Link } from '@material-ui/core'
export const ShareEdit = (props) => {
const { id } = props
const url = shareUrl(id)
return (
<Edit {...props}>
<SimpleForm>
<Link source="URL" href={url} target="_blank" rel="noopener noreferrer">
{url}
</Link>
<TextInput source="description" />
<TextInput source="contents" disabled />
<TextInput source="format" disabled />
<TextInput source="maxBitRate" disabled />
<DateInput source="expiresAt" disabled />
<TextInput source="username" disabled />
<NumberField source="visitCount" disabled />
<DateField source="lastVisitedAt" disabled />
<DateField source="createdAt" disabled />
</SimpleForm>
</Edit>
)
}
+53
View File
@@ -0,0 +1,53 @@
import {
Datagrid,
FunctionField,
List,
NumberField,
TextField,
} from 'react-admin'
import React from 'react'
import { DateField, QualityInfo } from '../common'
import { shareUrl } from '../utils'
import { Link } from '@material-ui/core'
export const FormatInfo = ({ record, size }) => {
const r = { suffix: record.format, bitRate: record.maxBitRate }
// TODO Get DefaultDownsamplingFormat
r.suffix = r.suffix || (r.bitRate ? 'opus' : 'Original')
return <QualityInfo record={r} size={size} />
}
const ShareList = (props) => {
return (
<List
{...props}
sort={{ field: 'createdAt', order: 'DESC' }}
exporter={false}
>
<Datagrid rowClick="edit">
<FunctionField
source={'id'}
render={(r) => (
<Link
href={shareUrl(r.id)}
label="URL"
target="_blank"
rel="noopener noreferrer"
>
{r.id}
</Link>
)}
/>
<TextField source="username" />
<TextField source="description" />
<DateField source="contents" />
<FormatInfo source="format" />
<NumberField source="visitCount" />
<DateField source="expiresAt" showTime />
<DateField source="lastVisitedAt" showTime sortByOrder={'DESC'} />
</Datagrid>
</List>
)
}
export default ShareList
+9
View File
@@ -0,0 +1,9 @@
import ShareList from './ShareList'
import { ShareEdit } from './ShareEdit'
import ShareIcon from '@material-ui/icons/Share'
export default {
list: ShareList,
edit: ShareEdit,
icon: <ShareIcon />,
}