diff options
-rw-r--r-- | src/routes/main/MainStackNavigator.tsx | 4 | ||||
-rw-r--r-- | src/routes/main/MainStackScreen.tsx | 103 | ||||
-rw-r--r-- | src/routes/tabs/NavigationBar.tsx | 54 | ||||
-rw-r--r-- | src/screens/profile/CaptionScreen.tsx | 4 | ||||
-rw-r--r-- | src/types/types.ts | 29 |
5 files changed, 108 insertions, 86 deletions
diff --git a/src/routes/main/MainStackNavigator.tsx b/src/routes/main/MainStackNavigator.tsx index a5d73988..f12072e6 100644 --- a/src/routes/main/MainStackNavigator.tsx +++ b/src/routes/main/MainStackNavigator.tsx @@ -14,8 +14,12 @@ export type MainStackParams = { SuggestedPeople: { screenType: ScreenType; }; + /* Search: { screenType: ScreenType; + }; */ + Upload: { + screenType: ScreenType; }; RequestContactsAccess: { screenType: ScreenType; diff --git a/src/routes/main/MainStackScreen.tsx b/src/routes/main/MainStackScreen.tsx index 43760b60..2e1f5251 100644 --- a/src/routes/main/MainStackScreen.tsx +++ b/src/routes/main/MainStackScreen.tsx @@ -1,8 +1,8 @@ -import {RouteProp} from '@react-navigation/native'; -import {StackNavigationOptions} from '@react-navigation/stack'; +import { RouteProp } from '@react-navigation/native'; +import { StackNavigationOptions } from '@react-navigation/stack'; import React from 'react'; -import {StyleSheet, Text} from 'react-native'; -import {normalize} from 'react-native-elements'; +import { StyleSheet, Text } from 'react-native'; +import { normalize } from 'react-native-elements'; import BackIcon from '../../assets/icons/back-arrow.svg'; import { AccountType, @@ -26,7 +26,7 @@ import { PrivacyScreen, ProfileScreen, RequestContactsAccess, - SearchScreen, + // SearchScreen, SettingsScreen, SocialMediaTaggs, SuggestedPeopleScreen, @@ -37,10 +37,10 @@ import { CameraScreen, } from '../../screens'; import MutualBadgeHolders from '../../screens/suggestedPeople/MutualBadgeHolders'; -import {ScreenType} from '../../types'; -import {AvatarHeaderHeight, ChatHeaderHeight, SCREEN_WIDTH} from '../../utils'; -import {MainStack, MainStackParams} from './MainStackNavigator'; -import {ZoomInCropper} from '../../components/comments/ZoomInCropper'; +import { ScreenType } from '../../types'; +import { AvatarHeaderHeight, ChatHeaderHeight, SCREEN_WIDTH } from '../../utils'; +import { MainStack, MainStackParams } from './MainStackNavigator'; +import { ZoomInCropper } from '../../components/comments/ZoomInCropper'; /** * 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. @@ -57,33 +57,37 @@ type MainStackRouteProps = RouteProp<MainStackParams, 'Profile'>; interface MainStackProps { route: MainStackRouteProps; } -const MainStackScreen: React.FC<MainStackProps> = ({route}) => { - const {screenType} = route.params; +const MainStackScreen: React.FC<MainStackProps> = ({ route }) => { + const { screenType } = route.params; - const isSearchTab = screenType === ScreenType.Search; + // const isSearchTab = screenType === ScreenType.Search; const isNotificationsTab = screenType === ScreenType.Notifications; const isSuggestedPeopleTab = screenType === ScreenType.SuggestedPeople; + const isUploadTab = screenType === ScreenType.Upload; const initialRouteName = (() => { switch (screenType) { case ScreenType.Profile: return 'Profile'; + /* case ScreenType.Search: - return 'Search'; + return 'Search'; */ case ScreenType.Notifications: return 'Notifications'; case ScreenType.SuggestedPeople: return 'SuggestedPeople'; case ScreenType.Chat: return 'ChatList'; + case ScreenType.Upload: + return 'Upload'; } })(); const tutorialModalStyle: StackNavigationOptions = { - cardStyle: {backgroundColor: 'rgba(0, 0, 0, 0.5)'}, + cardStyle: { backgroundColor: 'rgba(0, 0, 0, 0.5)' }, gestureDirection: 'vertical', cardOverlayEnabled: true, - cardStyleInterpolator: ({current: {progress}}) => ({ + cardStyleInterpolator: ({ current: { progress } }) => ({ cardStyle: { opacity: progress.interpolate({ inputRange: [0, 0.5, 0.9, 1], @@ -94,24 +98,37 @@ const MainStackScreen: React.FC<MainStackProps> = ({route}) => { }; const newChatModalStyle: StackNavigationOptions = { - cardStyle: {backgroundColor: 'rgba(0, 0, 0, 0.5)'}, + cardStyle: { backgroundColor: 'rgba(0, 0, 0, 0.5)' }, cardOverlayEnabled: true, animationEnabled: false, }; + /* + Following was removed to eliminate search screen naviagtion + + {isSearchTab && ( + <MainStack.Screen + name="Search" + component={SearchScreen} + initialParams={{ screenType }} + /> + )} + + */ + const mainStackScreen = () => { return ( <MainStack.Navigator screenOptions={{ headerShown: false, - gestureResponseDistance: {horizontal: SCREEN_WIDTH * 0.6}, + gestureResponseDistance: { horizontal: SCREEN_WIDTH * 0.6 }, }} mode="card" initialRouteName={initialRouteName}> <MainStack.Screen name="Profile" component={ProfileScreen} - initialParams={{screenType}} + initialParams={{ screenType }} options={{ ...headerBarOptions('white', ''), }} @@ -120,21 +137,21 @@ const MainStackScreen: React.FC<MainStackProps> = ({route}) => { <MainStack.Screen name="SuggestedPeople" component={SuggestedPeopleScreen} - initialParams={{screenType}} + initialParams={{ screenType }} /> )} {isNotificationsTab && ( <MainStack.Screen name="Notifications" component={NotificationsScreen} - initialParams={{screenType}} + initialParams={{ screenType }} /> )} - {isSearchTab && ( + {isUploadTab && ( <MainStack.Screen - name="Search" - component={SearchScreen} - initialParams={{screenType}} + name="Upload" + component={CameraScreen} + initialParams={{ screenType }} /> )} <MainStack.Screen @@ -171,7 +188,7 @@ const MainStackScreen: React.FC<MainStackProps> = ({route}) => { options={{ ...tutorialModalStyle, }} - initialParams={{screenType}} + initialParams={{ screenType }} /> <MainStack.Screen name="CaptionScreen" @@ -184,10 +201,10 @@ const MainStackScreen: React.FC<MainStackProps> = ({route}) => { <MainStack.Screen name="SocialMediaTaggs" component={SocialMediaTaggs} - initialParams={{screenType}} + initialParams={{ screenType }} options={{ ...headerBarOptions('white', ''), - headerStyle: {height: AvatarHeaderHeight}, + headerStyle: { height: AvatarHeaderHeight }, }} /> <MainStack.Screen @@ -207,7 +224,7 @@ const MainStackScreen: React.FC<MainStackProps> = ({route}) => { <MainStack.Screen name="IndividualMoment" component={IndividualMoment} - initialParams={{screenType}} + initialParams={{ screenType }} options={{ ...modalStyle, gestureEnabled: false, @@ -217,7 +234,7 @@ const MainStackScreen: React.FC<MainStackProps> = ({route}) => { <MainStack.Screen name="MomentCommentsScreen" component={MomentCommentsScreen} - initialParams={{screenType}} + initialParams={{ screenType }} options={{ ...headerBarOptions('black', 'Comments'), }} @@ -232,7 +249,7 @@ const MainStackScreen: React.FC<MainStackProps> = ({route}) => { <MainStack.Screen name="MomentUploadPrompt" component={MomentUploadPromptScreen} - initialParams={{screenType}} + initialParams={{ screenType }} options={{ ...modalStyle, }} @@ -240,7 +257,7 @@ const MainStackScreen: React.FC<MainStackProps> = ({route}) => { <MainStack.Screen name="FriendsListScreen" component={FriendsListScreen} - initialParams={{screenType}} + initialParams={{ screenType }} options={{ ...headerBarOptions('black', 'Friends'), }} @@ -255,7 +272,7 @@ const MainStackScreen: React.FC<MainStackProps> = ({route}) => { <MainStack.Screen name="RequestContactsAccess" component={RequestContactsAccess} - initialParams={{screenType}} + initialParams={{ screenType }} options={{ ...modalStyle, gestureEnabled: false, @@ -271,7 +288,7 @@ const MainStackScreen: React.FC<MainStackProps> = ({route}) => { <MainStack.Screen name="UpdateSPPicture" component={SuggestedPeopleUploadPictureScreen} - initialParams={{editing: true}} + initialParams={{ editing: true }} options={{ ...headerBarOptions('white', ''), }} @@ -279,7 +296,7 @@ const MainStackScreen: React.FC<MainStackProps> = ({route}) => { <MainStack.Screen name="BadgeSelection" component={BadgeSelection} - initialParams={{editing: true}} + initialParams={{ editing: true }} options={{ ...headerBarOptions('white', ''), }} @@ -287,7 +304,7 @@ const MainStackScreen: React.FC<MainStackProps> = ({route}) => { <MainStack.Screen name="MutualBadgeHolders" component={MutualBadgeHolders} - options={{...modalStyle}} + options={{ ...modalStyle }} /> <MainStack.Screen name="SPWelcomeScreen" @@ -299,20 +316,20 @@ const MainStackScreen: React.FC<MainStackProps> = ({route}) => { <MainStack.Screen name="ChatList" component={ChatListScreen} - options={{headerTitle: 'Chats'}} + options={{ headerTitle: 'Chats' }} /> <MainStack.Screen name="Chat" component={ChatScreen} options={{ ...headerBarOptions('black', ''), - headerStyle: {height: ChatHeaderHeight}, + headerStyle: { height: ChatHeaderHeight }, }} /> <MainStack.Screen name="NewChatModal" component={NewChatModal} - options={{headerShown: false, ...newChatModalStyle}} + options={{ headerShown: false, ...newChatModalStyle }} /> <MainStack.Screen name="TagSelectionScreen" @@ -380,8 +397,8 @@ export const headerBarOptions: ( <Text style={[ styles.headerTitle, - {color: color}, - {fontSize: title.length > 18 ? normalize(14) : normalize(16)}, + { color: color }, + { fontSize: title.length > 18 ? normalize(14) : normalize(16) }, ]}> {title} </Text> @@ -389,10 +406,10 @@ export const headerBarOptions: ( }); export const modalStyle: StackNavigationOptions = { - cardStyle: {backgroundColor: 'rgba(80,80,80,0.6)'}, + cardStyle: { backgroundColor: 'rgba(80,80,80,0.6)' }, gestureDirection: 'vertical', cardOverlayEnabled: true, - cardStyleInterpolator: ({current: {progress}}) => ({ + cardStyleInterpolator: ({ current: { progress } }) => ({ cardStyle: { opacity: progress.interpolate({ inputRange: [0, 0.5, 0.9, 1], @@ -410,7 +427,7 @@ const styles = StyleSheet.create({ shadowColor: 'black', shadowRadius: 3, shadowOpacity: 0.7, - shadowOffset: {width: 0, height: 0}, + shadowOffset: { width: 0, height: 0 }, }, headerTitle: { letterSpacing: normalize(1.3), diff --git a/src/routes/tabs/NavigationBar.tsx b/src/routes/tabs/NavigationBar.tsx index c3a42739..f8b94470 100644 --- a/src/routes/tabs/NavigationBar.tsx +++ b/src/routes/tabs/NavigationBar.tsx @@ -1,23 +1,23 @@ -import {createBottomTabNavigator} from '@react-navigation/bottom-tabs'; -import React, {Fragment, useEffect, useState} from 'react'; -import {useSelector} from 'react-redux'; -import {NavigationIcon} from '../../components'; -import {NO_NOTIFICATIONS} from '../../store/initialStates'; -import {RootState} from '../../store/rootReducer'; -import {setNotificationsReadDate} from '../../services'; -import {ScreenType} from '../../types'; -import {haveUnreadNotifications} from '../../utils'; +import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; +import React, { Fragment, useEffect, useState } from 'react'; +import { useSelector } from 'react-redux'; +import { NavigationIcon } from '../../components'; +import { NO_NOTIFICATIONS } from '../../store/initialStates'; +import { RootState } from '../../store/rootReducer'; +import { setNotificationsReadDate } from '../../services'; +import { ScreenType } from '../../types'; +import { haveUnreadNotifications } from '../../utils'; import MainStackScreen from '../main/MainStackScreen'; -import {NotificationPill} from '../../components/notifications'; +import { NotificationPill } from '../../components/notifications'; const Tabs = createBottomTabNavigator(); const NavigationBar: React.FC = () => { - const {isOnboardedUser, newNotificationReceived} = useSelector( + const { isOnboardedUser, newNotificationReceived } = useSelector( (state: RootState) => state.user, ); - const {notifications: {notifications} = NO_NOTIFICATIONS} = useSelector( + const { notifications: { notifications } = NO_NOTIFICATIONS } = useSelector( (state: RootState) => state, ); // Triggered if user clicks on Notifications page to close the pill @@ -41,13 +41,13 @@ const NavigationBar: React.FC = () => { <> <NotificationPill showIcon={showIcon} /> <Tabs.Navigator - screenOptions={({route}) => ({ - tabBarIcon: ({focused}) => { + screenOptions={({ route }) => ({ + tabBarIcon: ({ focused }) => { switch (route.name) { case 'Home': return <NavigationIcon tab="Home" disabled={!focused} />; - case 'Search': - return <NavigationIcon tab="Search" disabled={!focused} />; + case 'Chat': + return <NavigationIcon tab="Chat" disabled={!focused} />; case 'Upload': return <NavigationIcon tab="Upload" disabled={!focused} />; case 'Notifications': @@ -60,8 +60,6 @@ const NavigationBar: React.FC = () => { disabled={!focused} /> ); - case 'Chat': - return <NavigationIcon tab="Chat" disabled={!focused} />; case 'Profile': return <NavigationIcon tab="Profile" disabled={!focused} />; case 'SuggestedPeople': @@ -88,17 +86,22 @@ const NavigationBar: React.FC = () => { <Tabs.Screen name="SuggestedPeople" component={MainStackScreen} - initialParams={{screenType: ScreenType.SuggestedPeople}} + initialParams={{ screenType: ScreenType.SuggestedPeople }} + /> + <Tabs.Screen + name="Chat" + component={MainStackScreen} + initialParams={{ screenType: ScreenType.Chat }} /> <Tabs.Screen - name="Search" + name="Upload" component={MainStackScreen} - initialParams={{screenType: ScreenType.Search}} + initialParams={{ screenType: ScreenType.Upload }} /> <Tabs.Screen name="Notifications" component={MainStackScreen} - initialParams={{screenType: ScreenType.Notifications}} + initialParams={{ screenType: ScreenType.Notifications }} listeners={{ tabPress: (_) => { // Closes the pill once this screen has been opened @@ -109,14 +112,9 @@ const NavigationBar: React.FC = () => { }} /> <Tabs.Screen - name="Chat" - component={MainStackScreen} - initialParams={{screenType: ScreenType.Chat}} - /> - <Tabs.Screen name="Profile" component={MainStackScreen} - initialParams={{screenType: ScreenType.Profile}} + initialParams={{ screenType: ScreenType.Profile }} /> </Tabs.Navigator> </> diff --git a/src/screens/profile/CaptionScreen.tsx b/src/screens/profile/CaptionScreen.tsx index 05db8ed7..28e8808f 100644 --- a/src/screens/profile/CaptionScreen.tsx +++ b/src/screens/profile/CaptionScreen.tsx @@ -210,7 +210,9 @@ const CaptionScreen: React.FC<CaptionScreenProps> = ({route, navigation}) => { title="Cancel" buttonStyle={styles.button} onPress={() => - moment ? navigation.goBack() : navigateToProfile() + // There is issue here with navigations on the commented code below + // moment ? navigation.goBack() : navigateToProfile() + navigation.goBack() } /> <Button diff --git a/src/types/types.ts b/src/types/types.ts index 416d9146..eb5c2fa4 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -1,6 +1,6 @@ -import {ImageSourcePropType} from 'react-native'; +import { ImageSourcePropType } from 'react-native'; import Animated from 'react-native-reanimated'; -import {Channel as ChannelType, StreamChat} from 'stream-chat'; +import { Channel as ChannelType, StreamChat } from 'stream-chat'; export interface UserType { userId: string; @@ -171,6 +171,7 @@ export enum ScreenType { Notifications, SuggestedPeople, Chat, + Upload } /** @@ -236,10 +237,10 @@ export type NotificationType = { verbage: string; notification_type: TypeOfNotification; notification_object: - | CommentNotificationType - | ThreadNotificationType - | MomentType - | undefined; + | CommentNotificationType + | ThreadNotificationType + | MomentType + | undefined; timestamp: string; unread: boolean; }; @@ -343,14 +344,14 @@ export type ChatContextType = { setChannel: React.Dispatch< React.SetStateAction< | ChannelType< - LocalAttachmentType, - LocalChannelType, - LocalCommandType, - LocalEventType, - LocalMessageType, - LocalResponseType, - LocalUserType - > + LocalAttachmentType, + LocalChannelType, + LocalCommandType, + LocalEventType, + LocalMessageType, + LocalResponseType, + LocalUserType + > | undefined > >; |