import {RouteProp} from '@react-navigation/native'; import {StackNavigationOptions} from '@react-navigation/stack'; import React from 'react'; import { CaptionScreen, CategorySelection, CreateCustomCategory, EditProfile, FriendsListScreen, IndividualMoment, MomentCommentsScreen, MomentUploadPromptScreen, NotificationsScreen, ProfileScreen, SearchScreen, SocialMediaTaggs, } from '../../screens'; import {ScreenType} from '../../types'; import {AvatarHeaderHeight, SCREEN_WIDTH} from '../../utils'; import {MainStack, MainStackParams} from './MainStackNavigator'; /** * Profile : To display the logged in user's profile when the userXId passed in to it is (undefined | null | empty string) else displays profile of the user being visited. * Search : To display the search screen. Search for a user on this screen, click on a result tile and navigate to the same. * When you click on the search icon after looking at a user's profile, the stack gets reset and you come back to the top of the stack (First screen : Search in this case) * SocialMediaTaggs : To display user data for any social media account set up by the user. * IndividualMoment : To display individual images uploaded by the user (Navigate to comments from this screen, click on a commenter's profile pic / username, look at a user's profile. Click on the profile icon again to come back to your own profile). * MomentCommentsScreen : Displays comments posted by users on an image uploaded by the user. * EditProfile : To edit logged in user's information. */ type MainStackRouteProps = RouteProp; interface MainStackProps { route: MainStackRouteProps; } const MainStackScreen: React.FC = ({route}) => { const {screenType} = route.params; // const isProfileTab = screenType === ScreenType.Profile; const isSearchTab = screenType === ScreenType.Search; const isNotificationsTab = screenType === ScreenType.Notifications; const initialRouteName = (() => { switch (screenType) { case ScreenType.Profile: return 'Profile'; case ScreenType.Search: return 'Search'; case ScreenType.Notifications: return 'Notifications'; } })(); const modalStyle: StackNavigationOptions = { cardStyle: {backgroundColor: 'transparent'}, gestureDirection: 'vertical', cardOverlayEnabled: true, cardStyleInterpolator: ({current: {progress}}) => ({ cardStyle: { opacity: progress.interpolate({ inputRange: [0, 0.5, 0.9, 1], outputRange: [0, 0.25, 0.7, 1], }), }, overlayStyle: { backgroundColor: '#505050', opacity: progress.interpolate({ inputRange: [0, 1], outputRange: [0, 0.9], extrapolate: 'clamp', }), }, }), }; return ( {isSearchTab && ( )} {isNotificationsTab && ( )} ({ cardStyle: { opacity: progress.interpolate({ inputRange: [0, 0.5, 0.9, 1], outputRange: [0, 0.25, 0.7, 1], }), }, }), }} initialParams={{screenType}} /> ); }; export default MainStackScreen;