import { ThemeProvider } from '@react-navigation/native'; import { ThemePreference, ThemeProvider as DCCThemeProvider } from 'expo-dev-client-components'; import React from 'react'; import { AppRegistry, useColorScheme } from 'react-native'; import { GestureHandlerRootView } from 'react-native-gesture-handler'; import { ColorTheme } from '../constants/Colors'; import Themes from '../constants/Themes'; import LocalStorage from '../storage/LocalStorage'; import DevMenuBottomSheet from './DevMenuBottomSheet'; import { DevMenuView } from './DevMenuView'; function useUserSettings(renderId: string): { preferredAppearance?: string } { const [settings, setSettings] = React.useState({}); React.useEffect(() => { async function getUserSettings() { const settings = await LocalStorage.getSettingsAsync(); setSettings(settings); } getUserSettings(); }, [renderId]); return settings; } function useAppColorScheme(uuid: string): ColorTheme { const colorScheme = useColorScheme(); const { preferredAppearance = undefined } = useUserSettings(uuid); let theme = preferredAppearance === undefined ? colorScheme : preferredAppearance; if (theme === undefined) { theme = 'light'; } return theme === 'light' ? ColorTheme.LIGHT : ColorTheme.DARK; } class DevMenuRoot extends React.PureComponent<{ task: { [key: string]: any }; uuid: string }, any> { render() { return ; } } function DevMenuApp(props: { task: { [key: string]: any }; uuid: string }) { const theme = useAppColorScheme(props.uuid); return ( ); } AppRegistry.registerComponent('HomeMenu', () => DevMenuRoot);