Refactor regex handling and improve null checks across various components
Updated regex patterns in episode parsing and metadata handling to use String.raw for better readability and maintainability. Enhanced null checks in BlockBuilder, MediaPanel, and ShowMetadataCard components to prevent potential runtime errors. Consolidated imports in UsersPanel for cleaner code structure.
This commit is contained in:
1 parent
088af2318e
commit
b80163b6b4
11 files changed
+45
-49
No files matched your search
@@ -14,7 +14,7 @@ function applyTheme(theme: Theme) {
|
||||
}
|
||||
|
||||
export function ThemeProvider({ children }: Readonly<{ children: ReactNode }>) {
|
||||
const [theme, setThemeState] = useState<Theme>(
|
||||
const [theme, setTheme] = useState<Theme>(
|
||||
() => (localStorage.getItem(THEME_STORAGE_KEY) as Theme | null) ?? 'dark',
|
||||
)
|
||||
|
||||
@@ -27,13 +27,14 @@ export function ThemeProvider({ children }: Readonly<{ children: ReactNode }>) {
|
||||
return () => media.removeEventListener('change', onChange)
|
||||
}, [theme])
|
||||
|
||||
const setTheme = useCallback((next: Theme) => {
|
||||
// Выбор темы переживает перезагрузку, поэтому наружу отдаём не голый сеттер, а обёртку с записью.
|
||||
const changeTheme = useCallback((next: Theme) => {
|
||||
localStorage.setItem(THEME_STORAGE_KEY, next)
|
||||
setThemeState(next)
|
||||
setTheme(next)
|
||||
}, [])
|
||||
|
||||
// Литерал в value пересоздавался бы на каждый рендер и перерисовывал всех потребителей темы.
|
||||
const value = useMemo(() => ({ theme, setTheme }), [theme, setTheme])
|
||||
const value = useMemo(() => ({ theme, setTheme: changeTheme }), [theme, changeTheme])
|
||||
|
||||
return <ThemeContext value={value}>{children}</ThemeContext>
|
||||
}
|
||||
Reference in new issue
Block a user