aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIvan Chen <ivan@tagg.id>2021-07-16 18:17:05 -0400
committerIvan Chen <ivan@tagg.id>2021-07-16 18:17:05 -0400
commitf404ad6b192b1e2f0466061c951ef3d131737a4c (patch)
tree18cbfe551aa51d4841334fe4ac3fe9c8a43175d5 /src
parenta5affe6d815e9a86ce4100e9a4c0709ae42a4f2b (diff)
Add logic to show/hide trimmer
Diffstat (limited to 'src')
-rw-r--r--src/components/moments/TrimmerPlayer.tsx56
-rw-r--r--src/screens/upload/EditMedia.tsx39
2 files changed, 61 insertions, 34 deletions
diff --git a/src/components/moments/TrimmerPlayer.tsx b/src/components/moments/TrimmerPlayer.tsx
index 4d6a8985..ef829637 100644
--- a/src/components/moments/TrimmerPlayer.tsx
+++ b/src/components/moments/TrimmerPlayer.tsx
@@ -1,7 +1,8 @@
import React, {useEffect, useRef, useState} from 'react';
+import {StyleSheet, View} from 'react-native';
import Video from 'react-native-video';
import {Trimmer} from 'react-native-video-processing';
-import {SCREEN_WIDTH} from '../../utils';
+import {SCREEN_HEIGHT, SCREEN_WIDTH} from '../../utils';
interface TrimmerPlayerProps {
source: string;
@@ -79,29 +80,40 @@ const TrimmerPlayer: React.FC<TrimmerPlayerProps> = ({
setPaused((state) => !state);
}}
/>
- <Trimmer
- // link to descr and use of props for trimmer ->
- // https://github.com/shahen94/react-native-video-processing
- source={source}
- height={hideTrimmer ? 0 : 75}
- width={hideTrimmer ? 0 : SCREEN_WIDTH}
- borderWidth={hideTrimmer ? 0 : 100}
- onTrackerMove={(e: {currentTime: number}) => {
- setPaused(true);
- setSeekTime(e.currentTime);
- }}
- currentTime={trackerTime}
- themeColor={'white'}
- thumbWidth={10}
- trackerColor={'white'}
- onChange={(e: {endTime: number; startTime: number}) => {
- setPaused(true);
- setEnd(e.endTime);
- setStart(e.startTime);
- }}
- />
+ <View style={styles.trimmerContainer}>
+ <Trimmer
+ // link to descr and use of props for trimmer ->
+ // https://github.com/shahen94/react-native-video-processing
+ source={source}
+ height={hideTrimmer ? 0 : 75}
+ width={hideTrimmer ? 0 : SCREEN_WIDTH}
+ onTrackerMove={(e: {currentTime: number}) => {
+ setPaused(true);
+ setSeekTime(e.currentTime);
+ }}
+ currentTime={trackerTime}
+ themeColor={'white'}
+ thumbWidth={10}
+ trackerColor={'white'}
+ onChange={(e: {endTime: number; startTime: number}) => {
+ setPaused(true);
+ setEnd(e.endTime);
+ setStart(e.startTime);
+ }}
+ />
+ </View>
</>
);
};
+const styles = StyleSheet.create({
+ trimmerContainer: {
+ position: 'absolute',
+ bottom: SCREEN_HEIGHT * 0.1,
+ alignItems: 'center',
+ borderWidth: 1,
+ borderColor: 'red',
+ },
+});
+
export default TrimmerPlayer;
diff --git a/src/screens/upload/EditMedia.tsx b/src/screens/upload/EditMedia.tsx
index d25a0fb9..0494375c 100644
--- a/src/screens/upload/EditMedia.tsx
+++ b/src/screens/upload/EditMedia.tsx
@@ -3,7 +3,6 @@ import {RouteProp} from '@react-navigation/core';
import {StackNavigationProp} from '@react-navigation/stack';
import React, {useEffect, useRef, useState} from 'react';
import {Image, StyleSheet, Text, TouchableOpacity, View} from 'react-native';
-import {normalize} from 'react-native-elements';
import ImageZoom, {IOnMove} from 'react-native-image-pan-zoom';
import PhotoManipulator from 'react-native-photo-manipulator';
import TrimIcon from '../../assets/icons/trim.svg';
@@ -14,6 +13,7 @@ import {MainStackParams} from '../../routes';
import {
cropVideo,
HeaderHeight,
+ normalize,
SCREEN_HEIGHT,
SCREEN_WIDTH,
trimVideo,
@@ -36,6 +36,7 @@ export const EditMedia: React.FC<EditMediaProps> = ({route, navigation}) => {
const [origDimensions, setOrigDimensions] = useState<number[]>([0, 0]);
const vidRef = useRef<View>(null);
const [cropLoading, setCropLoading] = useState<boolean>(false);
+ const [hideTrimmer, setHideTrimmer] = useState<boolean>(true);
// Stores the coordinates of the cropped image
const [x0, setX0] = useState<number>();
@@ -299,7 +300,6 @@ export const EditMedia: React.FC<EditMediaProps> = ({route, navigation}) => {
zoomStep={0.5}
initialZoom={1}
bindToBorders={true}
- // onZoomAfter={this.logOutZoomState}
onDoubleTapAfter={(
_1: any,
_2: any,
@@ -322,7 +322,7 @@ export const EditMedia: React.FC<EditMediaProps> = ({route, navigation}) => {
style={styles.zoomView}>
<View style={styles.videoParent} ref={vidRef}>
<TrimmerPlayer
- hideTrimmer={false}
+ hideTrimmer={hideTrimmer}
source={media.uri}
videoStyles={[
styles.media,
@@ -344,13 +344,22 @@ export const EditMedia: React.FC<EditMediaProps> = ({route, navigation}) => {
)}
{!checkIfUriImage(media.uri) && (
<View style={styles.iconCarrier}>
- <TrimIcon />
- <Text style={styles.iconText}>Trim</Text>
- <Image
- style={styles.volumnIcon}
- source={require('../../assets/images/volume-on.png')}
- />
- <Text style={styles.iconText}>Volume</Text>
+ <TouchableOpacity
+ style={styles.iconContainer}
+ onPress={() => setHideTrimmer((state) => !state)}>
+ <TrimIcon />
+ <Text style={styles.iconText}>Trim</Text>
+ </TouchableOpacity>
+ <TouchableOpacity
+ style={styles.iconContainer}
+ // TODO: finish me
+ onPress={() => null}>
+ <Image
+ style={styles.volumnIcon}
+ source={require('../../assets/images/volume-on.png')}
+ />
+ <Text style={styles.iconText}>Volume</Text>
+ </TouchableOpacity>
</View>
)}
<TaggSquareButton
@@ -402,14 +411,20 @@ const styles = StyleSheet.create({
backgroundColor: 'rgba(0, 0, 0, 0.3)',
position: 'absolute',
right: SCREEN_WIDTH * 0.025,
- top: SCREEN_HEIGHT * 0.2,
+ top: SCREEN_HEIGHT * 0.1,
flexDirection: 'column',
justifyContent: 'space-evenly',
alignItems: 'center',
},
+ iconContainer: {
+ height: 50,
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ },
iconText: {
color: 'white',
- fontSize: 10,
+ fontSize: normalize(11),
+ fontWeight: 'bold',
},
media: {
zIndex: 0,