import React from 'react' import PropTypes from 'prop-types' import Link from '@material-ui/core/Link' import Dialog from '@material-ui/core/Dialog' import IconButton from '@material-ui/core/IconButton' import TableContainer from '@material-ui/core/TableContainer' import Table from '@material-ui/core/Table' import TableBody from '@material-ui/core/TableBody' import TableRow from '@material-ui/core/TableRow' import TableCell from '@material-ui/core/TableCell' import Paper from '@material-ui/core/Paper' import FavoriteBorderIcon from '@material-ui/icons/FavoriteBorder' import inflection from 'inflection' import { useGetOne, usePermissions, useTranslate } from 'react-admin' import config from '../config' import { DialogTitle } from './DialogTitle' import { DialogContent } from './DialogContent' import { INSIGHTS_DOC_URL } from '../consts.js' const links = { homepage: 'navidrome.org', reddit: 'reddit.com/r/Navidrome', twitter: 'twitter.com/navidrome', discord: 'discord.gg/xh7j7yF', source: 'github.com/navidrome/navidrome', bugReports: 'github.com/navidrome/navidrome/issues/new/choose', featureRequests: 'github.com/navidrome/navidrome/discussions/new', } const LinkToVersion = ({ version }) => { if (version === 'dev') { return {version} } const parts = version.split(' ') const commitID = parts[1].replace(/[()]/g, '') const isSnapshot = version.includes('SNAPSHOT') const url = isSnapshot ? `https://github.com/navidrome/navidrome/compare/v${ parts[0].split('-')[0] }...${commitID}` : `https://github.com/navidrome/navidrome/releases/tag/v${parts[0]}` return ( {parts[0]} {' (' + commitID + ')'} ) } const AboutDialog = ({ open, onClose }) => { const translate = useTranslate() const { permissions } = usePermissions() const { data, loading } = useGetOne('insights', 'insights_status') return ( Navidrome Music Server {translate('menu.version')}: {Object.keys(links).map((key) => { return ( {translate(`about.links.${key}`, { _: inflection.humanize(inflection.underscore(key)), })} : {links[key]} ) })} {permissions === 'admin' ? ( {translate(`about.links.lastInsightsCollection`)}: {(!loading && data?.lastRun) || 'N/A'}{' '} ) : null} ko-fi.com/deluan
) } AboutDialog.propTypes = { open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, } export { AboutDialog, LinkToVersion }