148 lines
3.8 KiB
TypeScript
148 lines
3.8 KiB
TypeScript
import React, {useState, useEffect} from 'react';
|
|
|
|
import {StyleSheet, Appearance} from 'react-native';
|
|
import {SafeAreaProvider, SafeAreaView} from 'react-native-safe-area-context';
|
|
|
|
import {useSelector, useDispatch} from 'react-redux';
|
|
import {RootState} from '@caj/redux/store';
|
|
import {appVarActions} from '@caj/configs/appVarReducer';
|
|
|
|
import imgSrc from '@caj/img/maimg.png';
|
|
import {placeholder} from '@caj/lang/default';
|
|
import {getBackgroundColor} from '@caj/configs/colors';
|
|
import {saveVarChanges} from '@caj/helper/appData';
|
|
|
|
import {Box, Input, VStack, Center, Avatar, Text, Button} from 'native-base';
|
|
import {View} from 'react-native';
|
|
|
|
import {
|
|
LinkingOptions,
|
|
NavigationContainer,
|
|
useNavigation,
|
|
} from '@react-navigation/native';
|
|
import {
|
|
createNativeStackNavigator,
|
|
NativeStackNavigationProp,
|
|
} from '@react-navigation/native-stack';
|
|
import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';
|
|
|
|
const styles = StyleSheet.create({
|
|
container: {
|
|
height: '100%',
|
|
flex: 1,
|
|
},
|
|
});
|
|
|
|
export const linking: LinkingOptions<{
|
|
Maps: string;
|
|
Home: string;
|
|
Chat: string;
|
|
Settings: string;
|
|
}> = {
|
|
prefixes: ['http://'],
|
|
config: {
|
|
screens: {
|
|
Maps: 'mapss',
|
|
Home: 'account',
|
|
Chat: 'chats',
|
|
Settings: 'settingss',
|
|
},
|
|
},
|
|
};
|
|
|
|
export type HomeStackNavigatorParamList = {
|
|
Account: undefined;
|
|
Maps: undefined;
|
|
Chat: undefined;
|
|
Test: undefined;
|
|
Settings: undefined;
|
|
};
|
|
|
|
export type HomeScreenNavigationProp =
|
|
NativeStackNavigationProp<HomeStackNavigatorParamList>;
|
|
|
|
export default function Navigation() {
|
|
const theme = useSelector(
|
|
(state: RootState) => state.appVariables.preferences.theme,
|
|
);
|
|
|
|
const dispatch = useDispatch();
|
|
|
|
return (
|
|
<Tab.Navigator screenOptions={{headerShown: false}}>
|
|
<Tab.Screen name="Home" component={HomeStackScreen} />
|
|
<Tab.Screen name="Settings" component={SettingsScreen} />
|
|
<Tab.Screen
|
|
name="Chat"
|
|
options={{headerShown: true, tabBarStyle: {display: 'none'}}}
|
|
component={ChatScreen}
|
|
/>
|
|
</Tab.Navigator>
|
|
);
|
|
}
|
|
|
|
function ChatScreen() {
|
|
return (
|
|
<View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}>
|
|
<Text>Chat!</Text>
|
|
</View>
|
|
);
|
|
}
|
|
|
|
function HomeScreen() {
|
|
const navigation = useNavigation<HomeScreenNavigationProp>();
|
|
return (
|
|
<View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}>
|
|
<Text>Home screen</Text>
|
|
<Button onPress={() => navigation.navigate('Test')}>Go to Test</Button>
|
|
</View>
|
|
);
|
|
}
|
|
|
|
export type SettingsStackNavigatorParamList = {
|
|
Chat: undefined;
|
|
Settings: undefined;
|
|
};
|
|
|
|
export type SettingsScreenNavigationProp =
|
|
NativeStackNavigationProp<SettingsStackNavigatorParamList>;
|
|
|
|
function SettingsScreen() {
|
|
const navigation = useNavigation<SettingsScreenNavigationProp>();
|
|
const navigation2 = useNavigation<HomeScreenNavigationProp>();
|
|
return (
|
|
<View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}>
|
|
<Text>Settings screen</Text>
|
|
<Button onPress={() => navigation2.navigate('Maps')}>Go to Chat</Button>
|
|
</View>
|
|
);
|
|
}
|
|
|
|
const HomeStack = createNativeStackNavigator<HomeStackNavigatorParamList>();
|
|
|
|
function HomeStackScreen() {
|
|
return (
|
|
<HomeStack.Navigator>
|
|
<HomeStack.Screen
|
|
name="Maps"
|
|
options={{headerShown: false}}
|
|
component={HomeScreen}
|
|
/>
|
|
<HomeStack.Screen name="Test" component={ChatScreen} />
|
|
</HomeStack.Navigator>
|
|
);
|
|
}
|
|
|
|
const SettingsStack = createNativeStackNavigator<HomeStackNavigatorParamList>();
|
|
|
|
function SettingsStackScreen() {
|
|
return (
|
|
<SettingsStack.Navigator>
|
|
<SettingsStack.Screen name="Settings" component={SettingsScreen} />
|
|
<SettingsStack.Screen name="Chat" component={ChatScreen} />
|
|
</SettingsStack.Navigator>
|
|
);
|
|
}
|
|
|
|
const Tab = createBottomTabNavigator();
|