aboutsummaryrefslogtreecommitdiff
path: root/src/routes
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/profile/MomentStack.tsx11
-rw-r--r--src/routes/profile/MomentStackScreen.tsx46
-rw-r--r--src/routes/profile/Profile.tsx45
-rw-r--r--src/routes/profile/ProfileStack.tsx5
-rw-r--r--src/routes/profile/index.ts4
-rw-r--r--src/routes/tabs/NavigationBar.tsx13
-rw-r--r--src/routes/viewProfile/ProfileProvider.tsx10
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>