aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBrian Kim <brian@tagg.id>2021-08-06 16:06:20 -0400
committerBrian Kim <brian@tagg.id>2021-08-06 16:06:20 -0400
commit59975109d3f6945ac5153e775e6f91f933acc67e (patch)
tree7dc820e1018bf4f1f3c37402d15f0444b34dbc6f /src
parente595e314f306c703fca779dff174690b33ebd612 (diff)
Correct changes
Diffstat (limited to 'src')
-rw-r--r--src/screens/moments/CameraScreen.tsx57
1 files changed, 22 insertions, 35 deletions
diff --git a/src/screens/moments/CameraScreen.tsx b/src/screens/moments/CameraScreen.tsx
index 483bfe38..c57755b4 100644
--- a/src/screens/moments/CameraScreen.tsx
+++ b/src/screens/moments/CameraScreen.tsx
@@ -36,6 +36,13 @@ const CameraScreen: React.FC<CameraScreenProps> = ({route, navigation}) => {
const [vidUri, setVidUri] = useState<string>();
const [videoRecordStart, setVideoRecordStart] = useState<boolean>(false);
+ const killUnnecessaryVideo = async () => {
+ setVideoRecordStart(false);
+ if (await cameraRef.current?.isRecording()) {
+ cameraRef.current?.stopRecording();
+ }
+ };
+
useFocusEffect(
useCallback(() => {
navigation.dangerouslyGetParent()?.setOptions({
@@ -75,6 +82,17 @@ const CameraScreen: React.FC<CameraScreenProps> = ({route, navigation}) => {
setMounted(true);
}, []);
+ /*
+ * Triggers when vidUri updates
+ */
+ useEffect(() => {
+ if (videoRecordStart && vidUri) {
+ navigateToEditMedia(vidUri);
+ }
+ setVideoRecordStart(false);
+ setIsRecording(false);
+ }, [vidUri]);
+
const navigateToEditMedia = (uri: string) => {
cameraRef?.current?.resumePreview();
navigation.navigate('EditMedia', {
@@ -126,25 +144,10 @@ const CameraScreen: React.FC<CameraScreenProps> = ({route, navigation}) => {
setCameraType(cameraType === 'front' ? 'back' : 'front');
}
}}
- onRecordingStart={(event: {
- nativeEvent: {
- uri: string;
- videoOrientation: number;
- deviceOrientation: number;
- };
- }) => {
- console.log('start', event.nativeEvent.uri);
+ onRecordingStart={() => {
setIsRecording(true);
- setVidUri(event.nativeEvent.uri);
setVideoRecordStart(true);
}}
- onRecordingEnd={() => {
- if (videoRecordStart && vidUri) {
- navigateToEditMedia(vidUri);
- }
- setVideoRecordStart(false);
- setIsRecording(false);
- }}
/>
{!pictureProcessing && (
<View style={[styles.bottomContainer, {bottom: tabBarHeight}]}>
@@ -157,13 +160,7 @@ const CameraScreen: React.FC<CameraScreenProps> = ({route, navigation}) => {
}
activeOpacity={1}
onLongPress={async () => {
- const resetAndStartCameraRecording = async () => {
- if (await cameraRef.current?.isRecording()) {
- cameraRef.current?.stopRecording();
- }
- };
-
- await resetAndStartCameraRecording();
+ await killUnnecessaryVideo();
takeVideo(cameraRef, (vid) => setVidUri(vid.uri));
}}
onPressOut={async () => {
@@ -177,23 +174,13 @@ const CameraScreen: React.FC<CameraScreenProps> = ({route, navigation}) => {
};
setPictureProcessing(true);
cancelRecording();
- // tmp fix for when the animation glitches during the beginning of
- // recording causing onPressOut to not be detected.
- // setTimeout(() => {
- // cancelRecording();
- // }, 500);
- // setTimeout(() => {
- // cancelRecording();
- // }, 1000);
- // setTimeout(() => {
- // cancelRecording();
- // }, 1500);
}}
- onPress={() => {
+ onPress={async () => {
if (!pictureProcessing) {
setPictureProcessing(true);
}
takePicture(cameraRef, (pic) => navigateToEditMedia(pic.uri));
+ await killUnnecessaryVideo();
}}>
<View style={styles.captureButton} />
</TouchableOpacity>