mirror of
https://github.com/navidrome/navidrome.git
synced 2025-04-18 21:07:44 +03:00
Make the version number clickable for the SNAPSHOT version in development docker build (#843)
* Make the version number clickable for the SNAPSHOT version while using development docker build * Update the snapshot version link in to view list of commits since the release * Create a new component for the link to the version * Add tests and refactored a bit Co-authored-by: Deluan <deluan@navidrome.org>
This commit is contained in:
parent
190bcd836e
commit
b552eb15b3
@ -25,6 +25,29 @@ const links = {
|
|||||||
featureRequests: 'github.com/navidrome/navidrome/issues',
|
featureRequests: 'github.com/navidrome/navidrome/issues',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const LinkToVersion = ({ version }) => {
|
||||||
|
if (version === 'dev') {
|
||||||
|
return <TableCell align="left">{version}</TableCell>
|
||||||
|
}
|
||||||
|
|
||||||
|
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 (
|
||||||
|
<TableCell align="left">
|
||||||
|
<Link href={url} target="_blank" rel="noopener noreferrer">
|
||||||
|
{parts[0]}
|
||||||
|
</Link>
|
||||||
|
{' (' + commitID + ')'}
|
||||||
|
</TableCell>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
const AboutDialog = ({ open, onClose }) => {
|
const AboutDialog = ({ open, onClose }) => {
|
||||||
const translate = useTranslate()
|
const translate = useTranslate()
|
||||||
return (
|
return (
|
||||||
@ -45,22 +68,7 @@ const AboutDialog = ({ open, onClose }) => {
|
|||||||
<TableCell align="right" component="th" scope="row">
|
<TableCell align="right" component="th" scope="row">
|
||||||
{translate('menu.version')}:
|
{translate('menu.version')}:
|
||||||
</TableCell>
|
</TableCell>
|
||||||
{config.version === 'dev' ? (
|
<LinkToVersion version={config.version} />
|
||||||
<TableCell align="left"> {config.version} </TableCell>
|
|
||||||
) : (
|
|
||||||
<TableCell align="left">
|
|
||||||
<Link
|
|
||||||
href={`https://github.com/navidrome/navidrome/releases/tag/v${
|
|
||||||
config.version.split(' ')[0]
|
|
||||||
}`}
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>
|
|
||||||
{config.version.split(' ')[0]}
|
|
||||||
</Link>
|
|
||||||
{' ' + config.version.split(' ')[1]}
|
|
||||||
</TableCell>
|
|
||||||
)}
|
|
||||||
</TableRow>
|
</TableRow>
|
||||||
{Object.keys(links).map((key) => {
|
{Object.keys(links).map((key) => {
|
||||||
return (
|
return (
|
||||||
@ -118,4 +126,4 @@ AboutDialog.propTypes = {
|
|||||||
onClose: PropTypes.func.isRequired,
|
onClose: PropTypes.func.isRequired,
|
||||||
}
|
}
|
||||||
|
|
||||||
export { AboutDialog }
|
export { AboutDialog, LinkToVersion }
|
||||||
|
54
ui/src/dialogs/AboutDialog.test.js
Normal file
54
ui/src/dialogs/AboutDialog.test.js
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
import * as React from 'react'
|
||||||
|
import { cleanup, render } from '@testing-library/react'
|
||||||
|
import { LinkToVersion } from './AboutDialog'
|
||||||
|
import TableBody from '@material-ui/core/TableBody'
|
||||||
|
import TableRow from '@material-ui/core/TableRow'
|
||||||
|
import Table from '@material-ui/core/Table'
|
||||||
|
|
||||||
|
const Wrapper = ({ version }) => (
|
||||||
|
<Table>
|
||||||
|
<TableBody>
|
||||||
|
<TableRow>
|
||||||
|
<LinkToVersion version={version} />
|
||||||
|
</TableRow>
|
||||||
|
</TableBody>
|
||||||
|
</Table>
|
||||||
|
)
|
||||||
|
|
||||||
|
describe('<LinkToVersion />', () => {
|
||||||
|
afterEach(cleanup)
|
||||||
|
|
||||||
|
it('should not render any link for "dev" version', () => {
|
||||||
|
const version = 'dev'
|
||||||
|
const { queryByRole } = render(<Wrapper version={version} />)
|
||||||
|
expect(queryByRole('link')).toBeNull()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should render link to GH tag page for full releases', () => {
|
||||||
|
const version = '0.40.0 (300a0292)'
|
||||||
|
const { queryByRole } = render(<Wrapper version={version} />)
|
||||||
|
|
||||||
|
const link = queryByRole('link')
|
||||||
|
expect(link.href).toBe(
|
||||||
|
'https://github.com/navidrome/navidrome/releases/tag/v0.40.0'
|
||||||
|
)
|
||||||
|
expect(link.textContent).toBe('0.40.0')
|
||||||
|
|
||||||
|
const cell = queryByRole('cell')
|
||||||
|
expect(cell.textContent).toBe('0.40.0 (300a0292)')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should render link to GH comparison page for snapshot releases', () => {
|
||||||
|
const version = '0.40.0-SNAPSHOT (300a0292)'
|
||||||
|
const { queryByRole } = render(<Wrapper version={version} />)
|
||||||
|
|
||||||
|
const link = queryByRole('link')
|
||||||
|
expect(link.href).toBe(
|
||||||
|
'https://github.com/navidrome/navidrome/compare/v0.40.0...300a0292'
|
||||||
|
)
|
||||||
|
expect(link.textContent).toBe('0.40.0-SNAPSHOT')
|
||||||
|
|
||||||
|
const cell = queryByRole('cell')
|
||||||
|
expect(cell.textContent).toBe('0.40.0-SNAPSHOT (300a0292)')
|
||||||
|
})
|
||||||
|
})
|
Loading…
x
Reference in New Issue
Block a user