From 76cd9fd309d9b0561d99e6cd8bd940995a1a3f0c Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sat, 3 May 2025 12:39:53 +0200 Subject: [PATCH] Remove "useContext" usages with hooks --- src/modules/device/contexts/DeviceContext.tsx | 4 +++- src/modules/device/screens/DeviceSetting.tsx | 6 +++--- src/modules/settings/screens/Appearance.tsx | 6 +++--- src/modules/theme/components/ThemePreview.tsx | 6 +++--- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/modules/device/contexts/DeviceContext.tsx b/src/modules/device/contexts/DeviceContext.tsx index 8e11e40b..42114e5b 100644 --- a/src/modules/device/contexts/DeviceContext.tsx +++ b/src/modules/device/contexts/DeviceContext.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import React, { ReactNode, useMemo } from 'react'; +import React, { ReactNode, useContext, useMemo } from 'react'; import { DEFAULT_DEVICE, setActiveDevice } from '@/modules/device/services/Device.ts'; import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; @@ -29,3 +29,5 @@ export const ActiveDeviceContextProvider = ({ children }: { children?: ReactNode return {children}; }; + +export const useDeviceContext = () => useContext(DeviceContext); diff --git a/src/modules/device/screens/DeviceSetting.tsx b/src/modules/device/screens/DeviceSetting.tsx index 113d737b..f01b8e9b 100644 --- a/src/modules/device/screens/DeviceSetting.tsx +++ b/src/modules/device/screens/DeviceSetting.tsx @@ -11,14 +11,14 @@ import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import MenuItem from '@mui/material/MenuItem'; import { useTranslation } from 'react-i18next'; -import { useContext, useLayoutEffect } from 'react'; +import { useLayoutEffect } from 'react'; import { updateMetadataServerSettings, useMetadataServerSettings, } from '@/modules/settings/services/ServerSettingsMetadata.ts'; import { makeToast } from '@/modules/core/utils/Toast.ts'; import { MutableListSetting } from '@/modules/core/components/settings/MutableListSetting.tsx'; -import { DeviceContext } from '@/modules/device/contexts/DeviceContext.tsx'; +import { useDeviceContext } from '@/modules/device/contexts/DeviceContext.tsx'; import { Select } from '@/modules/core/components/inputs/Select.tsx'; import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx'; import { EmptyViewAbsoluteCentered } from '@/modules/core/components/feedback/EmptyViewAbsoluteCentered.tsx'; @@ -49,7 +49,7 @@ export const DeviceSetting = () => { request: { error, refetch }, } = useMetadataServerSettings(); - const { activeDevice, setActiveDevice } = useContext(DeviceContext); + const { activeDevice, setActiveDevice } = useDeviceContext(); const updateMetadataSetting = ( setting: Setting, diff --git a/src/modules/settings/screens/Appearance.tsx b/src/modules/settings/screens/Appearance.tsx index eb7a2ccc..66dc095f 100644 --- a/src/modules/settings/screens/Appearance.tsx +++ b/src/modules/settings/screens/Appearance.tsx @@ -7,7 +7,7 @@ */ import { useTranslation } from 'react-i18next'; -import { useContext, useLayoutEffect } from 'react'; +import { useLayoutEffect } from 'react'; import List from '@mui/material/List'; import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; @@ -16,7 +16,7 @@ import ListSubheader from '@mui/material/ListSubheader'; import Switch from '@mui/material/Switch'; import Link from '@mui/material/Link'; import { useColorScheme } from '@mui/material/styles'; -import { ThemeMode, AppThemeContext } from '@/modules/theme/contexts/AppThemeContext.tsx'; +import { ThemeMode, useAppThemeContext } from '@/modules/theme/contexts/AppThemeContext.tsx'; import { Select } from '@/modules/core/components/inputs/Select.tsx'; import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx'; import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; @@ -39,7 +39,7 @@ import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContex export const Appearance = () => { const { t, i18n } = useTranslation(); - const { themeMode, setThemeMode, pureBlackMode, setPureBlackMode } = useContext(AppThemeContext); + const { themeMode, setThemeMode, pureBlackMode, setPureBlackMode } = useAppThemeContext(); const { mode, setMode } = useColorScheme(); const actualThemeMode = (mode ?? themeMode) as ThemeMode; diff --git a/src/modules/theme/components/ThemePreview.tsx b/src/modules/theme/components/ThemePreview.tsx index 642870e8..6b02319e 100644 --- a/src/modules/theme/components/ThemePreview.tsx +++ b/src/modules/theme/components/ThemePreview.tsx @@ -7,7 +7,7 @@ */ import { useTranslation } from 'react-i18next'; -import { useContext, useMemo } from 'react'; +import { useMemo } from 'react'; import Box from '@mui/material/Box'; import Stack from '@mui/material/Stack'; import { styled, ThemeProvider, useTheme } from '@mui/material/styles'; @@ -19,7 +19,7 @@ import IconButton from '@mui/material/IconButton'; import EditIcon from '@mui/icons-material/Edit'; import { bindDialog, usePopupState } from 'material-ui-popup-state/hooks'; import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; -import { AppThemeContext } from '@/modules/theme/contexts/AppThemeContext.tsx'; +import { useAppThemeContext } from '@/modules/theme/contexts/AppThemeContext.tsx'; import { AppTheme, hasMissingFonts, loadThemeFonts } from '@/modules/theme/services/AppThemes.ts'; import { createTheme } from '@/modules/theme/services/ThemeCreator.ts'; import { ThemeCreationDialog } from '@/modules/theme/components/CreateThemeDialog.tsx'; @@ -37,7 +37,7 @@ export const ThemePreview = ({ appTheme, onDelete }: { appTheme: AppTheme; onDel const { t } = useTranslation(); const theme = useTheme(); - const { themeMode, setAppTheme, appTheme: activeAppTheme, pureBlackMode } = useContext(AppThemeContext); + const { themeMode, setAppTheme, appTheme: activeAppTheme, pureBlackMode } = useAppThemeContext(); const popupState = usePopupState({ variant: 'popover', popupId: `theme-edit-dialog-${appTheme.id}` });