From 4fc4a1c4a89471b811f23ade3126cd8770be8af7 Mon Sep 17 00:00:00 2001 From: Josh Hunt Date: Tue, 12 Mar 2024 11:48:18 +0000 Subject: [PATCH] Playlists: Fix kiosk mode not activating when starting a playlist (#84262) * Playlists: Fix Kiosk mode not activating when starting a playlist * oops remove debugger --- public/app/core/components/AppChrome/AppChrome.tsx | 8 +++++++- .../app/core/components/AppChrome/AppChromeService.tsx | 10 ++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/public/app/core/components/AppChrome/AppChrome.tsx b/public/app/core/components/AppChrome/AppChrome.tsx index e4bd8b80903..dc7492db630 100644 --- a/public/app/core/components/AppChrome/AppChrome.tsx +++ b/public/app/core/components/AppChrome/AppChrome.tsx @@ -3,7 +3,7 @@ import classNames from 'classnames'; import React, { PropsWithChildren, useEffect } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; -import { locationService } from '@grafana/runtime'; +import { locationSearchToObject, locationService } from '@grafana/runtime'; import { useStyles2, LinkButton, useTheme2 } from '@grafana/ui'; import config from 'app/core/config'; import { useGrafana } from 'app/core/context/GrafanaContext'; @@ -67,6 +67,12 @@ export function AppChrome({ children }: Props) { // eslint-disable-next-line react-hooks/exhaustive-deps }, [chrome, url]); + // Sync updates from kiosk mode query string back into app chrome + useEffect(() => { + const queryParams = locationSearchToObject(search); + chrome.setKioskModeFromUrl(queryParams.kiosk); + }, [chrome, search]); + // Chromeless routes are without topNav, mega menu, search & command palette // We check chromeless twice here instead of having a separate path so {children} // doesn't get re-mounted when chromeless goes from true to false. diff --git a/public/app/core/components/AppChrome/AppChromeService.tsx b/public/app/core/components/AppChrome/AppChromeService.tsx index c6bd540245c..647e21bb638 100644 --- a/public/app/core/components/AppChrome/AppChromeService.tsx +++ b/public/app/core/components/AppChrome/AppChromeService.tsx @@ -191,13 +191,19 @@ export class AppChromeService { } public setKioskModeFromUrl(kiosk: UrlQueryValue) { + let newKioskMode: KioskMode | undefined; + switch (kiosk) { case 'tv': - this.update({ kioskMode: KioskMode.TV }); + newKioskMode = KioskMode.TV; break; case '1': case true: - this.update({ kioskMode: KioskMode.Full }); + newKioskMode = KioskMode.Full; + } + + if (newKioskMode && newKioskMode !== this.state.getValue().kioskMode) { + this.update({ kioskMode: newKioskMode }); } }