aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBrian Kim <brian@tagg.id>2021-08-06 15:30:09 -0400
committerBrian Kim <brian@tagg.id>2021-08-06 15:30:09 -0400
commite595e314f306c703fca779dff174690b33ebd612 (patch)
treec2b3e640c24dccfab6566edb0d7afc4130d3e432 /src
parent1cdd092bb4729ccc7b414330492b1af17f48692e (diff)
Basic additions
Diffstat (limited to 'src')
-rw-r--r--src/screens/moments/CameraScreen.tsx61
1 files changed, 47 insertions, 14 deletions
diff --git a/src/screens/moments/CameraScreen.tsx b/src/screens/moments/CameraScreen.tsx
index c3ecdb14..483bfe38 100644
--- a/src/screens/moments/CameraScreen.tsx
+++ b/src/screens/moments/CameraScreen.tsx
@@ -33,6 +33,8 @@ const CameraScreen: React.FC<CameraScreenProps> = ({route, navigation}) => {
const [isRecording, setIsRecording] = useState<boolean>(false);
const [pictureProcessing, setPictureProcessing] = useState<boolean>(false);
const [mounted, setMounted] = useState<boolean>(false);
+ const [vidUri, setVidUri] = useState<string>();
+ const [videoRecordStart, setVideoRecordStart] = useState<boolean>(false);
useFocusEffect(
useCallback(() => {
@@ -43,6 +45,9 @@ const CameraScreen: React.FC<CameraScreenProps> = ({route, navigation}) => {
// reset in case we have returned to this screen
setPictureProcessing(false);
+ // reset in case this wasn't properly called
+ setIsRecording(false);
+
// in case the preview image gets stuck
if (mounted) {
cameraRef?.current?.resumePreview();
@@ -121,6 +126,25 @@ 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);
+ 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}]}>
@@ -132,29 +156,38 @@ const CameraScreen: React.FC<CameraScreenProps> = ({route, navigation}) => {
: styles.captureButtonContainer
}
activeOpacity={1}
- onLongPress={() => {
- takeVideo(cameraRef, (vid) => navigateToEditMedia(vid.uri));
- setIsRecording(true);
+ onLongPress={async () => {
+ const resetAndStartCameraRecording = async () => {
+ if (await cameraRef.current?.isRecording()) {
+ cameraRef.current?.stopRecording();
+ }
+ };
+
+ await resetAndStartCameraRecording();
+ takeVideo(cameraRef, (vid) => setVidUri(vid.uri));
}}
onPressOut={async () => {
const cancelRecording = async () => {
- if (await cameraRef.current?.isRecording()) {
+ if (isRecording && (await cameraRef.current?.isRecording())) {
cameraRef.current?.stopRecording();
- setIsRecording(false);
+ } else {
+ takePicture(cameraRef, (pic) => navigateToEditMedia(pic.uri));
}
+ setIsRecording(false);
};
+ 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);
+ // setTimeout(() => {
+ // cancelRecording();
+ // }, 500);
+ // setTimeout(() => {
+ // cancelRecording();
+ // }, 1000);
+ // setTimeout(() => {
+ // cancelRecording();
+ // }, 1500);
}}
onPress={() => {
if (!pictureProcessing) {