mirror of
https://github.com/navidrome/navidrome.git
synced 2026-10-13 04:47:17 +02:00
* fix(ui): allow DefaultTheme "Auto" from config When DefaultTheme is set to "Auto" in the server config, the defaultTheme() function in themeReducer now returns AUTO_THEME_ID instead of falling through to the DarkTheme fallback. This allows useCurrentTheme to correctly read prefers-color-scheme and select Light or Dark theme automatically for new/incognito users. Adds themeReducer unit tests covering Auto, named-theme, and unrecognized-value fallback paths. * chore: format Signed-off-by: Deluan <deluan@navidrome.org> --------- Signed-off-by: Deluan <deluan@navidrome.org> Co-authored-by: Deluan <deluan@navidrome.org>
32 lines
922 B
JavaScript
32 lines
922 B
JavaScript
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
|
import { AUTO_THEME_ID, AUTO_THEME_CONFIG_VALUE } from '../consts'
|
|
|
|
describe('themeReducer', () => {
|
|
beforeEach(() => {
|
|
vi.resetModules()
|
|
})
|
|
|
|
it.each([
|
|
{
|
|
configTheme: AUTO_THEME_CONFIG_VALUE,
|
|
expected: AUTO_THEME_ID,
|
|
description: 'is "Auto"',
|
|
},
|
|
{ configTheme: 'Dark', expected: 'DarkTheme', description: 'is "Dark"' },
|
|
{
|
|
configTheme: 'NonExistent',
|
|
expected: 'DarkTheme',
|
|
description: 'is unrecognized',
|
|
},
|
|
])(
|
|
'returns $expected when defaultTheme config $description',
|
|
async ({ configTheme, expected }) => {
|
|
vi.doMock('../config', () => ({
|
|
default: { defaultTheme: configTheme },
|
|
}))
|
|
const { themeReducer } = await import('./themeReducer')
|
|
const result = themeReducer(undefined, { type: 'UNKNOWN' })
|
|
expect(result).toBe(expected)
|
|
},
|
|
)
|
|
})
|