Skip to content

Commit c73e2e6

Browse files
pd-redisvalkirilov
authored andcommitted
RI-7754 detect system color change (#5268)
* add useSystemThemeListener.ts, it should detect system change References: #RI-7754
1 parent 1ee1f89 commit c73e2e6

2 files changed

Lines changed: 27 additions & 0 deletions

File tree

redisinsight/ui/src/App.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { removePagePlaceholder } from 'uiSrc/utils'
88
import MonacoLanguages from 'uiSrc/components/monaco-laguages'
99
import AppInit from 'uiSrc/components/init/AppInit'
1010
import { Page, PageBody } from 'uiSrc/components/base/layout/page'
11+
import { useSystemThemeListener } from 'uiSrc/services/hooks/useSystemThemeListener'
1112
import { Pages, Theme } from './constants'
1213
import { themeService } from './services'
1314
import {
@@ -48,6 +49,7 @@ const App = ({ children }: { children?: ReactElement[] }) => {
4849
removePagePlaceholder()
4950
}
5051
}, [serverLoading])
52+
useSystemThemeListener()
5153
return (
5254
<div className="main-container">
5355
<MonacoEnvironmentInitializer />
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { useEffect } from 'react'
2+
import { Theme, THEME_MATCH_MEDIA_DARK } from 'uiSrc/constants'
3+
import { useThemeContext } from 'uiSrc/contexts/themeContext'
4+
5+
/**
6+
* Hook that listens to OS system theme changes
7+
* and updates the theme context when user has System theme selected.
8+
*/
9+
export const useSystemThemeListener = () => {
10+
const { usingSystemTheme, changeTheme } = useThemeContext()
11+
12+
useEffect(() => {
13+
const handleSystemThemeChange = () => {
14+
changeTheme(Theme.System)
15+
}
16+
const mediaQuery = window.matchMedia?.(THEME_MATCH_MEDIA_DARK)
17+
if (usingSystemTheme && mediaQuery) {
18+
mediaQuery.addEventListener('change', handleSystemThemeChange)
19+
}
20+
21+
return () => {
22+
mediaQuery?.removeEventListener('change', handleSystemThemeChange)
23+
}
24+
}, [usingSystemTheme, changeTheme])
25+
}

0 commit comments

Comments
 (0)