App.tsx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import { StatusBar } from 'expo-status-bar';
  2. import React from 'react';
  3. import * as SplashScreen from 'expo-splash-screen';
  4. import { Text, Div, Button } from 'react-native-magnus';
  5. import { SafeAreaProvider } from 'react-native-safe-area-context';
  6. import { ThemeProvider } from 'react-native-magnus';
  7. import { UseRequestProvider, useRequest } from 'ahooks';
  8. import './i18n';
  9. import useCachedResources from './hooks/useCachedResources';
  10. import useColorScheme from './hooks/useColorScheme';
  11. import Navigation from './navigation';
  12. import useModel from 'flooks';
  13. import theme from './constants/Theme';
  14. import request from './utils/RequestUtils';
  15. import User from './stores/User';
  16. export default function App() {
  17. const isLoadingComplete = useCachedResources();
  18. const colorScheme = useColorScheme();
  19. const { id, getInit, initialRouteName } = useModel(User, [
  20. 'id',
  21. 'initialRouteName',
  22. ]);
  23. const { loading, run } = useRequest(getInit, {
  24. refreshDeps: [id],
  25. debounceInterval: 2000,
  26. });
  27. if (!isLoadingComplete || !initialRouteName) {
  28. return null;
  29. } else {
  30. SplashScreen.hideAsync();
  31. return (
  32. <UseRequestProvider
  33. value={{
  34. refreshOnWindowFocus: true,
  35. requestMethod: request,
  36. }}
  37. >
  38. <ThemeProvider theme={theme}>
  39. <SafeAreaProvider>
  40. <Div flex={1}>
  41. <Button
  42. fontSize="xl"
  43. position="absolute"
  44. zIndex="999"
  45. bg="transparent"
  46. color="black"
  47. >
  48. 骑手端测试版 (0807)
  49. </Button>
  50. <Navigation colorScheme={colorScheme} />
  51. </Div>
  52. <StatusBar />
  53. </SafeAreaProvider>
  54. </ThemeProvider>
  55. </UseRequestProvider>
  56. );
  57. }
  58. }