import { View, TouchableOpacity, Text } from 'react-native'; import { useState } from 'react'; import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context'; import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; import { createDrawerNavigator } from '@react-navigation/drawer'; import { createStackNavigator } from '@react-navigation/stack'; import { NavigationContainer } from '@react-navigation/native'; import Ionicons from '@expo/vector-icons/AntDesign'; import { useSession } from './useSession.hook'; import { styles } from './Session.styled'; import Colors from 'constants/Colors'; import { Profile } from './profile/Profile'; import { Channels } from './channels/Channels'; import { Cards } from './cards/Cards'; import { Registry } from './registry/Registry'; import { Contact } from './contact/Contact'; import { Details } from './details/Details'; import { Conversation } from './conversation/Conversation'; import { Welcome } from './welcome/Welcome'; const ConversationStack = createStackNavigator(); const ProfileStack = createStackNavigator(); const ContactStack = createStackNavigator(); const ProfileDrawer = createDrawerNavigator(); const ContactDrawer = createDrawerNavigator(); const DetailDrawer = createDrawerNavigator(); const CardDrawer = createDrawerNavigator(); const RegistryDrawer = createDrawerNavigator(); const Tab = createBottomTabNavigator(); export function Session() { const { state, actions } = useSession(); const openCards = (nav) => { nav.openDrawer(); } const closeCards = (nav) => {} const openProfile = (nav) => { nav.openDrawer(); } const closeProfile = (nav) => {} const openContact = (nav, cardId) => {} const closeContact = (nav) => {} const openConversation = (nav, cardId, channelId) => {} const closeConversation = (nav) => {} const openDetails = (nav, cardId, channeId) => {} const closeDetails = (nav) => {} // tabbed containers const ConversationStackScreen = () => { return ( ({ headerShown: false })}> ); } const ChannelsTabScreen = ({ navigation }) => { return ( openConversation(navigation, cardId, channelId)} /> ) } const ConversationTabScreen = ({ navigation }) => { return closeConversation(navigation)} openDetails={() => openDetails(navigation)} /> } const DetailsTabScreen = ({ navigation }) => { return
closeDetails(navigation)} /> } const ProfileStackScreen = () => { return ( ({ headerShown: false })}> ); } const ContactStackScreen = () => { const [selected, setSelected] = useState(null); const setCardStack = (navigation, contact) => { setSelected(contact); navigation.navigate('contact') } const clearCardStack = (navigation) => { navigation.goBack(); } const setRegistryStack = (navigation) => { navigation.navigate('registry'); } const clearRegistryStack = (navigation) => { navigation.goBack(); } return ( ({ headerShown: false })}> {(props) => setRegistryStack(props.navigation)} openContact={(contact) => setCardStack(props.navigation, contact)} />} {(props) => clearCardStack(props.navigation)} />} {(props) => clearRegistryStack(props.navigation)} openContact={(contact) => setCardStack(props.navigation, contact)} />} ); } // drawered containers const CardDrawerContent = ({ navigation, setContact, openRegistry }) => { return ( ) } const RegistryDrawerContent = ({ navigation, setContact }) => { return ( ); } const ProfileDrawerContent = ({ navigation }) => { return ( closeProfile(navigation)} /> ) } const DetailDrawerContent = ({ navigation }) => { return (
closeDetails(navigation)} /> ) } const ContactDrawerContent = ({ contact, navigation }) => { const clearContact = () => { navigation.closeDrawer(); } return ( ) } const HomeScreen = ({ cardNav, registryNav, detailNav, contactNav, profileNav }) => { return ( openProfile(profileNav)}> Profile openCards(cardNav)}> Contacts openConversation(null, cardId, channelId)} /> { state.conversationId && ( closeConversation(null)} openDetails={() => openDetails(detailNav)} /> )} { !state.conversationId && ( )} ) } const CardDrawerScreen = ({ registryNav, detailNav, contactNav, profileNav, setContact }) => { const openRegistry = () => { registryNav.openDrawer(); } return ( }> {(props) => } ); }; const RegistryDrawerScreen = ({ detailNav, contactNav, profileNav, setContact }) => { return ( }> {(props) => } ); }; const ContactDrawerScreen = ({ detailNav, profileNav }) => { const [selected, setSelected] = useState(null); const setContact = (navigation, contact) => { setSelected(contact); navigation.openDrawer(); } return ( }> {(props) => setContact(props.navigation, contact)} />} ); } const ProfileDrawerScreen = ({ detailNav }) => { return ( }> {(props) => } ); } return ( { state.tabbed === false && ( }> {(props) => } )} { state.tabbed === true && ( ({ tabBarStyle: styles.tabBar, headerShown: false, tabBarIcon: ({ focused, color, size }) => { if (route.name === 'Profile') { return ; } if (route.name === 'Conversation') { return ; } if (route.name === 'Contacts') { return ; } }, tabBarShowLabel: false, tabBarActiveTintColor: Colors.white, tabBarInactiveTintColor: Colors.disabled, })}> {(props) => ()} {(props) => ()} {(props) => ()} )} ); }