diff --git a/redisinsight/ui/src/App.tsx b/redisinsight/ui/src/App.tsx
index 8f4a787b2a..5ec12ef2b7 100644
--- a/redisinsight/ui/src/App.tsx
+++ b/redisinsight/ui/src/App.tsx
@@ -19,7 +19,6 @@ import {
} from './components'
import { ThemeProvider } from './contexts/themeContext'
import MainComponent from './components/main/MainComponent'
-import ThemeComponent from './components/theme/ThemeComponent'
import MonacoEnvironmentInitializer from './components/MonacoEnvironmentInitializer/MonacoEnvironmentInitializer'
import GlobalDialogs from './components/global-dialogs'
import NotFoundErrorPage from './pages/not-found-error/NotFoundErrorPage'
@@ -51,7 +50,6 @@ const App = ({ children }: { children?: ReactElement[] }) => {
}, [serverLoading])
return (
-
diff --git a/redisinsight/ui/src/components/theme/ThemeComponent.spec.tsx b/redisinsight/ui/src/components/theme/ThemeComponent.spec.tsx
deleted file mode 100644
index b7e960f953..0000000000
--- a/redisinsight/ui/src/components/theme/ThemeComponent.spec.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from 'react'
-import { render } from 'uiSrc/utils/test-utils'
-
-import ThemeComponent from './ThemeComponent'
-
-describe('ThemeComponent', () => {
- it('should render', () => {
- expect(render()).toBeTruthy()
- })
-})
diff --git a/redisinsight/ui/src/components/theme/ThemeComponent.tsx b/redisinsight/ui/src/components/theme/ThemeComponent.tsx
deleted file mode 100644
index f6ce856848..0000000000
--- a/redisinsight/ui/src/components/theme/ThemeComponent.tsx
+++ /dev/null
@@ -1,34 +0,0 @@
-import React, { useContext, useEffect } from 'react'
-import {
- BrowserStorageItem,
- Theme,
- THEME_MATCH_MEDIA_DARK,
-} from 'uiSrc/constants'
-import { localStorageService } from 'uiSrc/services'
-import { ThemeContext } from 'uiSrc/contexts/themeContext'
-
-const ThemeComponent = () => {
- const themeContext = useContext(ThemeContext)
- useEffect(() => {
- const handler = (event) => {
- let theme = localStorageService.get(BrowserStorageItem.theme)
- if (theme === Theme.System) {
- themeContext.changeTheme(theme)
- }
- }
-
- window
- .matchMedia(THEME_MATCH_MEDIA_DARK)
- .addEventListener('change', handler)
-
- return () => {
- window
- .matchMedia(THEME_MATCH_MEDIA_DARK)
- .removeEventListener('change', handler)
- }
- }, [])
-
- return <>>
-}
-
-export default ThemeComponent
diff --git a/redisinsight/ui/src/contexts/themeContext.tsx b/redisinsight/ui/src/contexts/themeContext.tsx
index 5f9237bea7..60d814dabf 100644
--- a/redisinsight/ui/src/contexts/themeContext.tsx
+++ b/redisinsight/ui/src/contexts/themeContext.tsx
@@ -1,4 +1,4 @@
-import React from 'react'
+import React, { useContext } from 'react'
import { ThemeProvider as StyledThemeProvider } from 'styled-components'
import {
theme as redisUiOldTheme,
@@ -44,6 +44,10 @@ export const defaultState = {
},
}
+export const isValidTheme = (theme: unknown): theme is Theme => {
+ return typeof theme === 'string' && THEME_NAMES.includes(theme as Theme)
+}
+
export const ThemeContext = React.createContext(defaultState)
export class ThemeProvider extends React.Component {
@@ -57,7 +61,7 @@ export class ThemeProvider extends React.Component {
if (queryTheme) {
theme = queryTheme
- } else if (storedThemeValue && THEME_NAMES.includes(storedThemeValue)) {
+ } else if (storedThemeValue && isValidTheme(storedThemeValue)) {
theme = storedThemeValue
}
@@ -120,5 +124,9 @@ export class ThemeProvider extends React.Component {
)
}
}
+
+export const useThemeContext = () => {
+ return useContext(ThemeContext)
+}
export default ThemeProvider