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) => ()}
)}
);
}