import { Datagrid, FunctionField, BooleanField, List, NumberField, SimpleList, TextField, useNotify, useTranslate, } from 'react-admin' import React from 'react' import { IconButton, Link, useMediaQuery } from '@material-ui/core' import ShareIcon from '@material-ui/icons/Share' import { DateField, QualityInfo } from '../common' import { shareUrl } from '../utils' import config from '../config' export const FormatInfo = ({ record, size }) => { const r = { suffix: record.format, bitRate: record.maxBitRate } r.suffix = r.suffix || (r.bitRate ? config.defaultDownsamplingFormat : 'Original') return } const ShareList = (props) => { const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs')) const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('lg')) const translate = useTranslate() const notify = useNotify() const handleShare = (r) => (e) => { const url = shareUrl(r?.id) if (navigator.clipboard && window.isSecureContext) { navigator.clipboard .writeText(url) .then(() => { notify(translate('message.shareSuccess', { url }), { type: 'info', multiLine: true, duration: 0, }) }) .catch((err) => { notify( translate('message.shareFailure', { url }) + ': ' + err.message, { type: 'warning', multiLine: true, duration: 0, } ) }) } else prompt(translate('message.shareCopyToClipboard'), url) e.preventDefault() e.stopPropagation() } return ( {isXsmall ? ( ( )} primaryText={(r) => r.description || r.contents || r.id} secondaryText={(r) => ( <> {translate('resources.share.fields.expiresAt')}:{' '} )} tertiaryText={(r) => `${translate('resources.share.fields.visitCount')}: ${ r.visitCount || '0' }` } /> ) : ( ( { e.stopPropagation() }} > {r.id} )} /> {isDesktop && } {isDesktop && } {config.enableDownloads && } {isDesktop && ( )} )} ) } export default ShareList