UNPKG

rn-custom-style-sheet

Version:

React Native component to select a specific value from a range of values.

46 lines (40 loc) 1.31 kB
import { useCallback } from 'react'; import { type ThemeContextType, AppThemeModeEnum, ReducerEventEnum, useThemeContext, } from '../../../Core'; import type { UpdateThemeReturnType } from './UseUpdateThemeTypes'; export const StorageKeys = { AppThemeNameKey: 'appThemeNameKey', AppThemeModeKey: 'appThemeModeKey', SystemThemeModeKey: 'systemThemeModeKey', }; export default function useUpdateTheme(): UpdateThemeReturnType { const { dispatch, storage }: ThemeContextType = useThemeContext(); const handleAppTheme = useCallback< (appThemeName?: string, appThemeMode?: AppThemeModeEnum) => void >( (appThemeName?: string, appThemeMode?: AppThemeModeEnum) => { if (appThemeName !== undefined) { storage?.setStorage(StorageKeys.AppThemeNameKey, appThemeName); } if (appThemeMode !== undefined) { storage?.setStorage(StorageKeys.AppThemeModeKey, appThemeMode); } if (appThemeName !== undefined || appThemeMode !== undefined) { dispatch({ type: ReducerEventEnum.ChangeAppTheme, payload: { appThemeName: appThemeName, appThemeMode: appThemeMode, }, }); } }, // eslint-disable-next-line react-hooks/exhaustive-deps [] ); return handleAppTheme; }