diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/screens/moments/CameraScreen.tsx | 57 |
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> |