From 16f649033125ae7b51aa7af4115ea9190a115d6f Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Fri, 16 Jul 2021 19:09:02 -0400 Subject: Rename media --- src/screens/upload/EditMedia.tsx | 75 +++++++++++++++++++++++++++++----------- 1 file changed, 54 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/screens/upload/EditMedia.tsx b/src/screens/upload/EditMedia.tsx index e53e2e43..6b2d6008 100644 --- a/src/screens/upload/EditMedia.tsx +++ b/src/screens/upload/EditMedia.tsx @@ -31,10 +31,15 @@ interface EditMediaProps { } export const EditMedia: React.FC = ({route, navigation}) => { - const {screenType, media, selectedCategory} = route.params; + const { + screenType, + selectedCategory, + media: {isVideo}, + } = route.params; const [aspectRatio, setAspectRatio] = useState(1); // width and height of video, if video const [origDimensions, setOrigDimensions] = useState([0, 0]); + const [mediaUri, setMediaUri] = useState(route.params.media.uri); const vidRef = useRef(null); const [cropLoading, setCropLoading] = useState(false); const [hideTrimmer, setHideTrimmer] = useState(true); @@ -64,15 +69,15 @@ export const EditMedia: React.FC = ({route, navigation}) => { // Setting original aspect ratio of image useEffect(() => { - if (media.uri && !media.isVideo) { + if (mediaUri && !isVideo) { Image.getSize( - media.uri, + mediaUri, (w, h) => { setAspectRatio(w / h); }, (err) => console.log(err), ); - } else if (media.uri && media.isVideo) { + } else if (mediaUri && isVideo) { setVideoCrop((prevState) => ({ ...prevState, cropWidth: origDimensions[0], @@ -83,7 +88,7 @@ export const EditMedia: React.FC = ({route, navigation}) => { // Possible need to delay setting aspect ratio of video until loaded useEffect(() => { - if (media.uri && media.isVideo) { + if (mediaUri && isVideo) { setVideoCrop((prevState) => ({ ...prevState, cropWidth: origDimensions[0], @@ -94,14 +99,14 @@ export const EditMedia: React.FC = ({route, navigation}) => { // Crops original image based of (x0, y0) and (x1, y1) coordinates const processVideo = (callback: (finalUri: string) => void) => { - if (!media.isVideo) { + if (!isVideo) { if ( x0 !== undefined && x1 !== undefined && y0 !== undefined && y1 !== undefined ) { - PhotoManipulator.crop(media.uri, { + PhotoManipulator.crop(mediaUri, { x: x0, y: y1, width: Math.abs(x0 - x1), @@ -119,7 +124,7 @@ export const EditMedia: React.FC = ({route, navigation}) => { y1 === undefined ) { // If no crop coordinates are set, then we will just pass the original image - callback(media.uri); + callback(mediaUri); } } else { if (!videoCrop.cropHeight || !videoCrop.cropWidth) { @@ -131,7 +136,7 @@ export const EditMedia: React.FC = ({route, navigation}) => { } setCropLoading(true); trimVideo( - media.uri, + mediaUri, (trimmedURL: string) => cropVideo( trimmedURL, @@ -214,7 +219,7 @@ export const EditMedia: React.FC = ({route, navigation}) => { */ const onMove = (position: IOnMove) => { Image.getSize( - media.uri, + mediaUri, (w, h) => { const x = position.positionX; const y = position.positionY; @@ -250,12 +255,24 @@ export const EditMedia: React.FC = ({route, navigation}) => { return ( {cropLoading && } - navigation.goBack()}> - - - {!media.isVideo ? ( + {hideTrimmer && ( + navigation.goBack()}> + + + )} + {!hideTrimmer && ( + + setHideTrimmer(true)}> + Cancel + + setHideTrimmer(true)}> + Save + + + )} + {!isVideo ? ( = ({route, navigation}) => { @@ -277,6 +294,7 @@ export const EditMedia: React.FC = ({route, navigation}) => { zoomStep={0.5} initialZoom={1} bindToBorders={true} + zoomEnabled={hideTrimmer} onDoubleTapAfter={( _1: any, _2: any, @@ -300,7 +318,7 @@ export const EditMedia: React.FC = ({route, navigation}) => { = ({route, navigation}) => { )} - {media.isVideo && ( + {isVideo && hideTrimmer && ( = ({route, navigation}) => { style={styles.saveButton} onPress={() => processVideo((uri) => - saveImageToGallery(uri, media.isVideo ? 'video' : 'photo'), + saveImageToGallery(uri, isVideo ? 'video' : 'photo'), ) } /> @@ -357,7 +375,7 @@ export const EditMedia: React.FC = ({route, navigation}) => { screenType, media: { uri: uri, - isVideo: media.isVideo, + isVideo: isVideo, }, selectedCategory, }), @@ -397,6 +415,21 @@ const styles = StyleSheet.create({ alignSelf: 'center', flexDirection: 'row', }, + topContainer: { + position: 'absolute', + top: SCREEN_HEIGHT * 0.1, + width: SCREEN_WIDTH * 0.9, + justifyContent: 'space-between', + alignItems: 'center', + alignSelf: 'center', + flexDirection: 'row', + zIndex: 1, + }, + bigText: { + fontSize: normalize(15), + color: 'white', + fontWeight: 'bold', + }, saveButton: { width: 50, }, -- cgit v1.2.3-70-g09d2