1
0

fix: hide navidrome link when webUrl is null (cleared subsonic url)

This commit is contained in:
2026-09-04 14:04:24 +02:00
parent 642ca52c71
commit d3c8754a5d
3 changed files with 13 additions and 2 deletions

View File

@@ -108,7 +108,7 @@ export default function ItemPage() {
</p> </p>
)} )}
{item.matchedAlbum && ( {item.matchedAlbum?.webUrl && (
<a <a
href={item.matchedAlbum.webUrl} href={item.matchedAlbum.webUrl}
target="_blank" target="_blank"

View File

@@ -72,7 +72,7 @@ export interface MatchedAlbum {
id: number id: number
subsonicId: string subsonicId: string
lastPlayedAt: string | null lastPlayedAt: string | null
webUrl: string webUrl: string | null
} }
export interface Stats { export interface Stats {
totals: { items: number; ripped: number; notRipped: number; onLoan: number } totals: { items: number; ripped: number; notRipped: number; onLoan: number }

View File

@@ -200,6 +200,17 @@ describe('ItemPage', () => {
expect(screen.queryByRole('link', { name: /listen in navidrome/i })).toBeNull() expect(screen.queryByRole('link', { name: /listen in navidrome/i })).toBeNull()
}) })
it('link hidden when the subsonic url was cleared (webUrl null)', async () => {
vi.mocked(api.getItem).mockResolvedValue({
...item,
ripStatus: 'ripped',
matchedAlbum: { id: 77, subsonicId: 'alb-1', lastPlayedAt: null, webUrl: null },
} as never)
renderItem()
await waitFor(() => expect(screen.getByRole('heading', { name: 'Motion' })).toBeTruthy())
expect(screen.queryByRole('link', { name: /listen in navidrome/i })).toBeNull()
})
it('shows last played under the rip banner', async () => { it('shows last played under the rip banner', async () => {
vi.mocked(api.getItem).mockResolvedValue(rippedItem as never) vi.mocked(api.getItem).mockResolvedValue(rippedItem as never)
renderItem() renderItem()