@livelike/react-native
Version:
LiveLike React Native package
31 lines • 1.04 kB
JavaScript
import { useMemo } from 'react';
import { useColorScheme } from 'react-native';
import { themeStore, themeStoreActions } from '../store';
import { getThemeAssets } from '../utils';
import { useStore } from './useStore';
export function useTheme() {
let {
themeType: themeTypeArg
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
const colorScheme = useColorScheme();
const {
themes,
currentThemeType,
isNonDefaultThemeType
} = useStore(themeStore);
const _themeType = useMemo(() => {
if (isNonDefaultThemeType) {
return currentThemeType;
}
return colorScheme;
}, [colorScheme, currentThemeType, isNonDefaultThemeType]);
return useMemo(() => ({
themeType: _themeType,
themes,
themeAssets: getThemeAssets(_themeType),
theme: themes[themeTypeArg || _themeType],
setThemeType: themeStoreActions.setThemeTypeAction,
setThemes: themeStoreActions.setThemesAction
}), [_themeType, themeTypeArg, themes]);
}
//# sourceMappingURL=useTheme.js.map