fix: Honor the view configured display mode (#1815)

- Closes #1812
This commit is contained in:
Dermot Duffy
2025-01-07 22:28:40 -08:00
committed by GitHub
parent 95cda9a8cb
commit c3dc4803ad
3 changed files with 80 additions and 33 deletions
+71 -28
View File
@@ -320,36 +320,79 @@ describe('getViewByParameters', () => {
expect(modifyCallback).toHaveBeenCalledWith(modifiedView);
});
describe('should get correct default display mode', () => {
describe.each([
['single' as const, { mode: 'single' as const }],
['grid' as const, { mode: 'grid' as const }],
['single' as const, undefined],
])('%s', (expectedDisplayMode: ViewDisplayMode, displayConfig?: unknown) => {
it.each([
['media' as const],
['clip' as const],
['recording' as const],
['snapshot' as const],
['live' as const],
])('%s', (viewName: FrigateCardView) => {
const api = createPopulatedAPI({
media_viewer: {
display: displayConfig,
},
live: {
display: displayConfig,
},
});
describe('should get correct display mode', () => {
it('should use config display mode when changing views', () => {
const api = createPopulatedAPI({
media_viewer: {
display: { mode: 'single' },
},
});
const factory = new ViewFactory(api);
expect(
factory.getViewByParameters({
params: {
view: viewName,
const factory = new ViewFactory(api);
expect(
factory.getViewByParameters({
params: {
view: 'clip',
displayMode: 'grid',
},
})?.displayMode,
).toBe('single');
});
it('should ignore config display mode with a view', () => {
const api = createPopulatedAPI({
media_viewer: {
display: { mode: 'single' },
},
});
const baseView = createView({
view: 'live',
});
const factory = new ViewFactory(api);
expect(
factory.getViewByParameters({
baseView: baseView,
params: {
view: 'live',
displayMode: 'grid',
},
})?.displayMode,
).toBe('grid');
});
describe('should get correct default display mode', () => {
describe.each([
['single' as const, { mode: 'single' as const }],
['grid' as const, { mode: 'grid' as const }],
['single' as const, undefined],
])('%s', (expectedDisplayMode: ViewDisplayMode, displayConfig?: unknown) => {
it.each([
['media' as const],
['clip' as const],
['recording' as const],
['snapshot' as const],
['live' as const],
])('%s', (viewName: FrigateCardView) => {
const api = createPopulatedAPI({
media_viewer: {
display: displayConfig,
},
})?.displayMode,
).toBe(expectedDisplayMode);
live: {
display: displayConfig,
},
});
const factory = new ViewFactory(api);
expect(
factory.getViewByParameters({
params: {
view: viewName,
},
})?.displayMode,
).toBe(expectedDisplayMode);
});
});
});
});