diff options
Diffstat (limited to 'src/routes')
-rw-r--r-- | src/routes/profile/MomentStack.tsx | 11 | ||||
-rw-r--r-- | src/routes/profile/MomentStackScreen.tsx | 46 | ||||
-rw-r--r-- | src/routes/profile/Profile.tsx | 45 | ||||
-rw-r--r-- | src/routes/profile/ProfileStack.tsx | 5 | ||||
-rw-r--r-- | src/routes/profile/index.ts | 4 | ||||
-rw-r--r-- | src/routes/tabs/NavigationBar.tsx | 13 | ||||
-rw-r--r-- | src/routes/viewProfile/ProfileProvider.tsx | 10 |
7 files changed, 60 insertions, 74 deletions
diff --git a/src/routes/profile/MomentStack.tsx b/src/routes/profile/MomentStack.tsx deleted file mode 100644 index 83853c99..00000000 --- a/src/routes/profile/MomentStack.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import {createStackNavigator} from '@react-navigation/stack'; -import {MomentType} from '../../types'; - -export type MomentStackParams = { - Profile: undefined; - IndividualMoment: { - moment: MomentType; - }; -}; - -export const MomentStack = createStackNavigator<MomentStackParams>(); diff --git a/src/routes/profile/MomentStackScreen.tsx b/src/routes/profile/MomentStackScreen.tsx deleted file mode 100644 index 8768199a..00000000 --- a/src/routes/profile/MomentStackScreen.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react'; -import {IndividualMoment} from '../../screens'; -import {MomentStack} from './MomentStack'; -import Profile from './Profile'; - -const MomentStackScreen: React.FC = () => { - return ( - <MomentStack.Navigator - screenOptions={{ - headerShown: false, - cardStyle: {backgroundColor: 'transparent'}, - 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: '#808080', - opacity: progress.interpolate({ - inputRange: [0, 1], - outputRange: [0, 0.9], - extrapolate: 'clamp', - }), - }, - }), - }} - initialRouteName="Profile" - mode="modal"> - <MomentStack.Screen - name="Profile" - component={Profile} - options={{headerShown: false}} - /> - <MomentStack.Screen - name="IndividualMoment" - component={IndividualMoment} - options={{headerShown: false}} - /> - </MomentStack.Navigator> - ); -}; - -export default MomentStackScreen; diff --git a/src/routes/profile/Profile.tsx b/src/routes/profile/Profile.tsx index b39b726e..363e9e21 100644 --- a/src/routes/profile/Profile.tsx +++ b/src/routes/profile/Profile.tsx @@ -1,29 +1,52 @@ import React from 'react'; import { - ProfileScreen, + IndividualMoment, CaptionScreen, SocialMediaTaggs, SearchScreen, + ProfileScreen, } from '../../screens'; -import {RouteProp} from '@react-navigation/native'; import {ProfileStack, ProfileStackParams} from './ProfileStack'; +import {RouteProp} from '@react-navigation/native'; import {AvatarTitle} from '../../components'; -type ProfileScreenRouteProps = RouteProp<ProfileStackParams, 'Profile'>; +type ProfileStackRouteProps = RouteProp<ProfileStackParams, 'Profile'>; -interface ProfileScreenProps { - route: ProfileScreenRouteProps; +interface ProfileStackProps { + route: ProfileStackRouteProps; } -const Profile: React.FC<ProfileScreenProps> = ({route}) => { +const Profile: React.FC<ProfileStackProps> = ({route}) => { const {isProfileView} = route.params; return ( <ProfileStack.Navigator - initialRouteName={!isProfileView ? `Profile` : `Search`} - screenOptions={{headerShown: false}}> + screenOptions={{ + headerShown: false, + cardStyle: {backgroundColor: 'transparent'}, + 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: '#808080', + opacity: progress.interpolate({ + inputRange: [0, 1], + outputRange: [0, 0.9], + extrapolate: 'clamp', + }), + }, + }), + }} + mode="modal" + initialRouteName={!isProfileView ? `Profile` : `Search`}> <ProfileStack.Screen name="Profile" component={ProfileScreen} + options={{headerShown: false}} initialParams={{isProfileView: isProfileView}} /> {isProfileView ? ( @@ -47,6 +70,12 @@ const Profile: React.FC<ProfileScreenProps> = ({route}) => { ) : ( <React.Fragment /> )} + <ProfileStack.Screen + name="IndividualMoment" + component={IndividualMoment} + options={{headerShown: false}} + initialParams={{isProfileView: isProfileView}} + /> </ProfileStack.Navigator> ); }; diff --git a/src/routes/profile/ProfileStack.tsx b/src/routes/profile/ProfileStack.tsx index df4d234f..1d7b907e 100644 --- a/src/routes/profile/ProfileStack.tsx +++ b/src/routes/profile/ProfileStack.tsx @@ -1,4 +1,5 @@ import {createStackNavigator} from '@react-navigation/stack'; +import {MomentType} from '../../types'; export type ProfileStackParams = { Search: undefined; @@ -14,6 +15,10 @@ export type ProfileStackParams = { title: string; image: object; }; + IndividualMoment: { + moment: MomentType; + isProfileView: boolean; + }; }; export const ProfileStack = createStackNavigator<ProfileStackParams>(); diff --git a/src/routes/profile/index.ts b/src/routes/profile/index.ts index 1ab9cb7e..eed5c6b4 100644 --- a/src/routes/profile/index.ts +++ b/src/routes/profile/index.ts @@ -1,4 +1,2 @@ export * from './ProfileStack'; -export * from './MomentStack'; -export * from './MomentStackScreen'; -export {default} from './Profile'; +export * from './Profile'; diff --git a/src/routes/tabs/NavigationBar.tsx b/src/routes/tabs/NavigationBar.tsx index f05a512b..9cfbe4bf 100644 --- a/src/routes/tabs/NavigationBar.tsx +++ b/src/routes/tabs/NavigationBar.tsx @@ -2,8 +2,7 @@ import {createBottomTabNavigator} from '@react-navigation/bottom-tabs'; import React from 'react'; import {NavigationIcon} from '../../components'; import {Home, Notifications, Upload} from '../../screens'; -import Profile from '../profile'; -import MomentStackScreen from '../profile/MomentStackScreen'; +import Profile from '../profile/Profile'; const Tabs = createBottomTabNavigator(); @@ -36,7 +35,7 @@ const NavigationBar: React.FC = () => { ) : ( <NavigationIcon tab="Notifications" disabled={true} /> ); - } else if (route.name === 'MomentStackScreen') { + } else if (route.name === 'Profile') { return focused ? ( <NavigationIcon tab="Profile" disabled={false} /> ) : ( @@ -45,7 +44,7 @@ const NavigationBar: React.FC = () => { } }, })} - initialRouteName="MomentStackScreen" + initialRouteName="Profile" tabBarOptions={{ showLabel: false, style: { @@ -65,7 +64,11 @@ const NavigationBar: React.FC = () => { /> <Tabs.Screen name="Upload" component={Upload} /> <Tabs.Screen name="Notifications" component={Notifications} /> - <Tabs.Screen name="MomentStackScreen" component={MomentStackScreen} /> + <Tabs.Screen + name="Profile" + component={Profile} + initialParams={{isProfileView: false}} + /> </Tabs.Navigator> ); }; diff --git a/src/routes/viewProfile/ProfileProvider.tsx b/src/routes/viewProfile/ProfileProvider.tsx index 1af7917d..8fb9a011 100644 --- a/src/routes/viewProfile/ProfileProvider.tsx +++ b/src/routes/viewProfile/ProfileProvider.tsx @@ -8,7 +8,6 @@ import { loadAvatar, loadCover, loadInstaPosts, - loadRecentlySearchedUsers, } from '../../services'; interface ProfileContextProps { @@ -18,6 +17,8 @@ interface ProfileContextProps { avatar: string | null; cover: string | null; instaPosts: Array<InstagramPostType>; + newMomentsAvailable: boolean; + updateMoments: (value: boolean) => void; } const NO_USER: UserType = { userId: '', @@ -35,6 +36,8 @@ export const ProfileContext = createContext<ProfileContextProps>({ avatar: null, cover: null, instaPosts: [], + newMomentsAvailable: true, + updateMoments: () => {}, }); /** @@ -46,6 +49,7 @@ const ProfileProvider: React.FC = ({children}) => { const [avatar, setAvatar] = useState<string | null>(null); const [cover, setCover] = useState<string | null>(null); const [instaPosts, setInstaPosts] = useState<Array<InstagramPostType>>([]); + const [newMomentsAvailable, setNewMomentsAvailable] = useState<boolean>(true); const {userId} = user; useEffect(() => { @@ -79,9 +83,13 @@ const ProfileProvider: React.FC = ({children}) => { avatar, cover, instaPosts, + newMomentsAvailable, loadProfile: (id, username) => { setUser({...user, userId: id, username}); }, + updateMoments: (value) => { + setNewMomentsAvailable(value); + }, }}> {children} </ProfileContext.Provider> |