xref: /MusicFree/src/entry/index.tsx (revision bf6e62f27bf21a011995d7561e0093fae1a2d72e)
1import React from 'react';
2import {Image, StyleSheet} from 'react-native';
3
4import {NavigationContainer} from '@react-navigation/native';
5import {createNativeStackNavigator} from '@react-navigation/native-stack';
6import bootstrap from './bootstrap';
7import {routes} from './router';
8import {useAtomValue} from 'jotai';
9import {loadableThemeStateAtom} from '@/store/themeState';
10import {Provider as PaperProvider} from 'react-native-paper';
11import {GestureHandlerRootView} from 'react-native-gesture-handler';
12import Dialogs from '@/components/dialogs';
13import Toast from 'react-native-toast-message';
14import Panels from '@/components/panels';
15import {CustomTheme, DarkTheme, DefaultTheme} from './theme';
16import { useConfig } from '@/common/localConfigManager';
17
18// todo: load config
19/**
20 * 字体颜色
21 */
22
23bootstrap();
24const Stack = createNativeStackNavigator();
25
26export default function Pages() {
27  const config = useConfig();
28  console.log('updated');
29
30  return (
31    <GestureHandlerRootView style={{flex: 1}}>
32      <PaperProvider theme={CustomTheme}>
33        <NavigationContainer theme={CustomTheme}>
34          {config && (
35            <Image
36              style={style.blur}
37              blurRadius={15}
38              source={
39                config?.setting?.background
40                  ? {
41                      uri: config.setting.background,
42                    }
43                  : require('@/assets/imgs/background.jpg')
44              }></Image>
45          )}
46
47          <Stack.Navigator
48            initialRouteName={routes[0].path}
49            screenOptions={{
50              statusBarColor: 'transparent',
51              statusBarTranslucent: true,
52              headerShown: false,
53              animation: 'slide_from_right',
54              animationDuration: 200,
55            }}>
56            {routes.map(route => (
57              <Stack.Screen
58                key={route.path}
59                name={route.path}
60                component={route.component}></Stack.Screen>
61            ))}
62          </Stack.Navigator>
63
64          <Panels></Panels>
65          <Dialogs></Dialogs>
66          <Toast></Toast>
67        </NavigationContainer>
68      </PaperProvider>
69    </GestureHandlerRootView>
70  );
71}
72
73const style = StyleSheet.create({
74  blur: {
75    width: '100%',
76    height: '100%',
77    position: 'absolute',
78    top: 0,
79    left: 0,
80    right: 0,
81    bottom: 0,
82  },
83});
84