From 05c79b11815e6544e9066aeed09199c6074f480b Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 15 Jul 2021 16:42:10 -0400 Subject: Incorporate trimming into the old moment flow with the cropping functionality. --- src/components/comments/ZoomInCropper.tsx | 43 +++++++++++++++++++++---------- src/components/moments/trimmer.tsx | 17 +++++++----- src/utils/camera.ts | 15 +++++++++++ 3 files changed, 56 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/components/comments/ZoomInCropper.tsx b/src/components/comments/ZoomInCropper.tsx index 20edafd0..a4e86c35 100644 --- a/src/components/comments/ZoomInCropper.tsx +++ b/src/components/comments/ZoomInCropper.tsx @@ -9,6 +9,7 @@ import CloseIcon from '../../assets/ionicons/close-outline.svg'; import {MainStackParams} from '../../routes'; import { cropVideo, + trimVideo, HeaderHeight, numberWithCommas, SCREEN_HEIGHT, @@ -16,7 +17,6 @@ import { } from '../../utils'; import {TaggSquareButton} from '../common'; import ReactNativeZoomableView from '@dudigital/react-native-zoomable-view/src/ReactNativeZoomableView'; -import Video from 'react-native-video'; import {TrimmerPlayer} from '../moments/trimmer'; type ZoomInCropperRouteProps = RouteProp; @@ -53,6 +53,15 @@ export const ZoomInCropper: React.FC = ({ cropOffsetY?: number; }>({}); + // Stores the current trim endpoints + const [trimEnds, setTrimEnds] = useState<{ + end: number; + start: number; + }>({ + end: 60, + start: 0, + }); + const checkIfUriImage = (uri: string) => { return ( uri.endsWith('jpg') || @@ -138,19 +147,24 @@ export const ZoomInCropper: React.FC = ({ cropHeight: origDimensions[1], })); } - cropVideo( + trimVideo( media.uri, - (croppedURL: string) => { - navigation.navigate('CaptionScreen', { - screenType, - media: { - uri: croppedURL, - isVideo: true, + (trimmedURL: string) => + cropVideo( + trimmedURL, + (croppedURL: string) => { + navigation.navigate('CaptionScreen', { + screenType, + media: { + uri: croppedURL, + isVideo: true, + }, + selectedCategory, + }); }, - selectedCategory, - }); - }, - videoCrop, + videoCrop, + ), + trimEnds, ); } }; @@ -315,11 +329,14 @@ export const ZoomInCropper: React.FC = ({ height: SCREEN_WIDTH / aspectRatio, }, ]} - handleLoad={(response: Object) => { + handleLoad={(response: {width: number; height: number}) => { const {width, height} = response; setOrigDimensions([width, height]); setAspectRatio(width / height); }} + onChangedEndpoints={(response: {start: number; end: number}) => + setTrimEnds(response) + } /> diff --git a/src/components/moments/trimmer.tsx b/src/components/moments/trimmer.tsx index 3c5c4980..2dae23f7 100644 --- a/src/components/moments/trimmer.tsx +++ b/src/components/moments/trimmer.tsx @@ -2,13 +2,15 @@ import React, {useEffect, useState} from 'react'; import Video from 'react-native-video'; import {Trimmer} from 'react-native-video-processing'; import {useRef} from 'react'; +import {SCREEN_WIDTH} from '../../utils'; export const TrimmerPlayer: React.FC<{ source: string; videoStyles: Object; hideTrimmer: boolean; handleLoad: Function; -}> = ({source, videoStyles, hideTrimmer, handleLoad}) => { + onChangedEndpoints: Function; +}> = ({source, videoStyles, hideTrimmer, handleLoad, onChangedEndpoints}) => { const playerRef = useRef