From 3329ed720fb336d9e5f893158754f630c7c2509d Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Fri, 6 Aug 2021 17:47:57 -0400 Subject: Cleanup code, Pause preview earlier --- src/utils/camera.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/utils') diff --git a/src/utils/camera.ts b/src/utils/camera.ts index ec2615de..c9dec292 100644 --- a/src/utils/camera.ts +++ b/src/utils/camera.ts @@ -23,12 +23,12 @@ export const takePicture = ( cameraRef: RefObject, callback: (pic: TakePictureResponse) => void, ) => { + cameraRef.current?.pausePreview(); if (cameraRef !== null) { const options: TakePictureOptions = { forceUpOrientation: true, orientation: 'portrait', writeExif: false, - pauseAfterCapture: true, }; cameraRef.current?.takePictureAsync(options).then((pic) => { callback(pic); -- cgit v1.2.3-70-g09d2 From 3de50e21aa5daf3106d93cf1ac024adc7918ee1f Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Fri, 6 Aug 2021 18:44:11 -0400 Subject: Fix preview bug --- src/utils/camera.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/utils') diff --git a/src/utils/camera.ts b/src/utils/camera.ts index c9dec292..ec2615de 100644 --- a/src/utils/camera.ts +++ b/src/utils/camera.ts @@ -23,12 +23,12 @@ export const takePicture = ( cameraRef: RefObject, callback: (pic: TakePictureResponse) => void, ) => { - cameraRef.current?.pausePreview(); if (cameraRef !== null) { const options: TakePictureOptions = { forceUpOrientation: true, orientation: 'portrait', writeExif: false, + pauseAfterCapture: true, }; cameraRef.current?.takePictureAsync(options).then((pic) => { callback(pic); -- cgit v1.2.3-70-g09d2 From 54ca15a4d68d107be767938a83612843db2d04c2 Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Fri, 6 Aug 2021 19:13:50 -0400 Subject: Add pause preview, Cleanup logics --- src/screens/moments/CameraScreen.tsx | 34 ++++++++++------------------------ src/utils/camera.ts | 2 +- 2 files changed, 11 insertions(+), 25 deletions(-) (limited to 'src/utils') diff --git a/src/screens/moments/CameraScreen.tsx b/src/screens/moments/CameraScreen.tsx index c86f2efe..bd94bf63 100644 --- a/src/screens/moments/CameraScreen.tsx +++ b/src/screens/moments/CameraScreen.tsx @@ -33,12 +33,13 @@ const CameraScreen: React.FC = ({route, navigation}) => { const [recordingStarted, setRecordingStarted] = useState(false); const [showCaptureButtons, setShowCaptureButtons] = useState(false); const [showCamera, setShowCamera] = useState(true); + const [videoUri, setVideoUri] = useState(); - const stopVideoRecording = async () => { - if (await cameraRef.current?.isRecording()) { - cameraRef.current?.stopRecording(); + useEffect(() => { + if (recordingStarted && videoUri) { + navigateToEditMedia(videoUri); } - }; + }, [videoUri]); useFocusEffect( useCallback(() => { @@ -138,28 +139,13 @@ const CameraScreen: React.FC = ({route, navigation}) => { : styles.captureButtonContainer } activeOpacity={1} - onLongPress={async () => { - await stopVideoRecording(); - takeVideo(cameraRef, (vid) => navigateToEditMedia(vid.uri)); - }} - onPressOut={async () => { + onLongPress={() => + takeVideo(cameraRef, (vid) => setVideoUri(vid.uri)) + } + onPressOut={() => cameraRef.current?.stopRecording()} + onPress={() => { setShowCaptureButtons(false); - if ( - recordingStarted && - (await cameraRef.current?.isRecording()) - ) { - cameraRef.current?.stopRecording(); - } else { - takePicture(cameraRef, (pic) => navigateToEditMedia(pic.uri)); - } - setRecordingStarted(false); - }} - onPress={async () => { - if (showCaptureButtons) { - setShowCaptureButtons(false); - } takePicture(cameraRef, (pic) => navigateToEditMedia(pic.uri)); - await stopVideoRecording(); }}> diff --git a/src/utils/camera.ts b/src/utils/camera.ts index ec2615de..5f02f653 100644 --- a/src/utils/camera.ts +++ b/src/utils/camera.ts @@ -24,11 +24,11 @@ export const takePicture = ( callback: (pic: TakePictureResponse) => void, ) => { if (cameraRef !== null) { + cameraRef.current?.pausePreview(); const options: TakePictureOptions = { forceUpOrientation: true, orientation: 'portrait', writeExif: false, - pauseAfterCapture: true, }; cameraRef.current?.takePictureAsync(options).then((pic) => { callback(pic); -- cgit v1.2.3-70-g09d2 From fbbeb7b7e602c9f5911298667f04c9e9302a562a Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Fri, 6 Aug 2021 19:15:36 -0400 Subject: Add error handling --- src/utils/camera.ts | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'src/utils') diff --git a/src/utils/camera.ts b/src/utils/camera.ts index 5f02f653..6edc2b4f 100644 --- a/src/utils/camera.ts +++ b/src/utils/camera.ts @@ -30,9 +30,14 @@ export const takePicture = ( orientation: 'portrait', writeExif: false, }; - cameraRef.current?.takePictureAsync(options).then((pic) => { - callback(pic); - }); + cameraRef.current + ?.takePictureAsync(options) + .then((pic) => { + callback(pic); + }) + .catch((error) => { + console.log(error); + }); } }; @@ -46,9 +51,14 @@ export const takeVideo = ( maxDuration: MAX_VIDEO_RECORDING_DURATION, quality: '1080p', }; - cameraRef.current?.recordAsync(options).then((vid) => { - callback(vid); - }); + cameraRef.current + ?.recordAsync(options) + .then((vid) => { + callback(vid); + }) + .catch((error) => { + console.log(error); + }); } }; -- cgit v1.2.3-70-g09d2