aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Chen <ivan@tagg.id>2021-07-09 18:40:30 -0400
committerIvan Chen <ivan@tagg.id>2021-07-09 18:40:30 -0400
commitdff83dc855e9500bc228a1491601e660527afa10 (patch)
treef9f0eef6ef001a27af2f98790e08e77e3c955dd4
parent9bbba285b989cd6bf1a9543b4fa0e97e2379616c (diff)
Allow preselect category from profile screen
-rw-r--r--src/components/comments/ZoomInCropper.tsx4
-rw-r--r--src/components/moments/Moment.tsx11
-rw-r--r--src/routes/main/MainStackNavigator.tsx2
-rw-r--r--src/screens/moments/CameraScreen.tsx6
-rw-r--r--src/screens/profile/CaptionScreen.tsx6
5 files changed, 25 insertions, 4 deletions
diff --git a/src/components/comments/ZoomInCropper.tsx b/src/components/comments/ZoomInCropper.tsx
index 8b87d137..e624c81c 100644
--- a/src/components/comments/ZoomInCropper.tsx
+++ b/src/components/comments/ZoomInCropper.tsx
@@ -24,7 +24,7 @@ export const ZoomInCropper: React.FC<ZoomInCropperProps> = ({
route,
navigation,
}) => {
- const {screenType, media} = route.params;
+ const {screenType, media, selectedCategory} = route.params;
const [aspectRatio, setAspectRatio] = useState<number>(1);
// Stores the coordinates of the cropped image
@@ -67,6 +67,7 @@ export const ZoomInCropper: React.FC<ZoomInCropperProps> = ({
uri: croppedURL,
isVideo: false,
},
+ selectedCategory,
});
})
.catch((err) => console.log('err: ', err));
@@ -79,6 +80,7 @@ export const ZoomInCropper: React.FC<ZoomInCropperProps> = ({
navigation.navigate('CaptionScreen', {
screenType,
media,
+ selectedCategory,
});
}
};
diff --git a/src/components/moments/Moment.tsx b/src/components/moments/Moment.tsx
index 12c1fda4..087b343f 100644
--- a/src/components/moments/Moment.tsx
+++ b/src/components/moments/Moment.tsx
@@ -1,3 +1,4 @@
+import {useNavigation} from '@react-navigation/native';
import React from 'react';
import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native';
import {Text} from 'react-native-animatable';
@@ -8,7 +9,6 @@ import DownIcon from '../../assets/icons/down_icon.svg';
import BigPlusIcon from '../../assets/icons/plus-icon-white.svg';
import UpIcon from '../../assets/icons/up_icon.svg';
import {TAGG_LIGHT_BLUE} from '../../constants';
-import * as RootNavigation from '../../RootNavigation';
import {MomentType, ScreenType} from '../../types';
import {normalize, SCREEN_WIDTH} from '../../utils';
import MomentTile from './MomentTile';
@@ -38,6 +38,7 @@ const Moment: React.FC<MomentProps> = ({
move,
externalStyles,
}) => {
+ const navigation = useNavigation();
return (
<View style={[styles.container, externalStyles?.container]}>
<View style={[styles.header, externalStyles?.header]}>
@@ -97,7 +98,13 @@ const Moment: React.FC<MomentProps> = ({
/>
))}
{(images === undefined || images.length === 0) && !userXId && (
- <TouchableOpacity onPress={() => RootNavigation.navigate('Upload')}>
+ <TouchableOpacity
+ onPress={() =>
+ navigation.navigate('CameraScreen', {
+ screenType: ScreenType.Profile,
+ selectedCategory: title,
+ })
+ }>
<LinearGradient
colors={['rgba(105, 141, 211, 1)', 'rgba(105, 141, 211, 0.3)']}>
<View style={styles.defaultImage}>
diff --git a/src/routes/main/MainStackNavigator.tsx b/src/routes/main/MainStackNavigator.tsx
index 2dac1777..c569d2d6 100644
--- a/src/routes/main/MainStackNavigator.tsx
+++ b/src/routes/main/MainStackNavigator.tsx
@@ -37,10 +37,12 @@ export type MainStackParams = {
};
CameraScreen: {
screenType: ScreenType;
+ selectedCategory?: string;
};
ZoomInCropper: {
media: {uri: string; isVideo: boolean};
screenType: ScreenType;
+ selectedCategory?: string;
};
CaptionScreen: {
screenType: ScreenType;
diff --git a/src/screens/moments/CameraScreen.tsx b/src/screens/moments/CameraScreen.tsx
index 07c9b059..5f9412fb 100644
--- a/src/screens/moments/CameraScreen.tsx
+++ b/src/screens/moments/CameraScreen.tsx
@@ -30,7 +30,7 @@ interface CameraScreenProps {
navigation: CameraScreenNavigationProps;
}
const CameraScreen: React.FC<CameraScreenProps> = ({route, navigation}) => {
- const {screenType} = route.params;
+ const {screenType, selectedCategory} = route.params;
const cameraRef = createRef<RNCamera>();
const tabBarHeight = useBottomTabBarHeight();
const [cameraType, setCameraType] = useState<keyof CameraType>('front');
@@ -71,6 +71,7 @@ const CameraScreen: React.FC<CameraScreenProps> = ({route, navigation}) => {
uri,
isVideo: false,
},
+ selectedCategory,
});
};
@@ -94,6 +95,9 @@ const CameraScreen: React.FC<CameraScreenProps> = ({route, navigation}) => {
setShowSaveButton(false);
setMediaFromGallery('');
} else {
+ navigation.dangerouslyGetParent()?.setOptions({
+ tabBarVisible: true,
+ });
navigation.goBack();
}
};
diff --git a/src/screens/profile/CaptionScreen.tsx b/src/screens/profile/CaptionScreen.tsx
index 484070d2..1232eb66 100644
--- a/src/screens/profile/CaptionScreen.tsx
+++ b/src/screens/profile/CaptionScreen.tsx
@@ -115,6 +115,9 @@ const CaptionScreen: React.FC<CaptionScreenProps> = ({route, navigation}) => {
const handleFailed = (noCategory = false) => {
setLoading(false);
+ navigation.dangerouslyGetParent()?.setOptions({
+ tabBarVisible: true,
+ });
setTimeout(() => {
if (noCategory) {
Alert.alert(ERROR_NO_MOMENT_CATEGORY);
@@ -125,6 +128,9 @@ const CaptionScreen: React.FC<CaptionScreenProps> = ({route, navigation}) => {
};
const handleSuccess = () => {
setLoading(false);
+ navigation.dangerouslyGetParent()?.setOptions({
+ tabBarVisible: true,
+ });
if (!moment) {
// if posting, pop all screens until at camera screen (default upload screen)
// then switch to the profile tab