From 2f3244dfa11cc23b804930ad448222bbff4f022a Mon Sep 17 00:00:00 2001
From: Ivan Chen <ivan@tagg.id>
Date: Wed, 30 Jun 2021 13:55:28 -0400
Subject: Squashed commit of the following:

commit 66c974161b59f1e3570e2a4a42334fabc16c2129
Merge: 53bdc94c d4b21051
Author: Ivan Chen <ivan@tagg.id>
Date:   Tue Jun 29 17:06:19 2021 -0400

    Merge pull request #476 from shravyaramesh/tma937-tagg-camera

    [TMA-937] Tagg Camera

commit d4b210518eaffd3bf1320ca7ce7fa4a6d611528f
Author: Ivan Chen <ivan@tagg.id>
Date:   Tue Jun 29 17:04:10 2021 -0400

    Cleanup code, Update camera options

commit 3f826ec0741d3f0d0c85a17e5d0a09eef402dbf2
Author: Ivan Chen <ivan@tagg.id>
Date:   Tue Jun 29 16:45:45 2021 -0400

    Set to only allow photos

commit 9d30c0c211e6b0b1b87e5de93a043e6e9f06beb3
Author: Ivan Chen <ivan@tagg.id>
Date:   Tue Jun 29 16:44:41 2021 -0400

    Cleanup code, Fix gallery icon bug

commit f6fdd5d913c29855644f226d09d6cba60faf6e21
Author: Ivan Chen <ivan@tagg.id>
Date:   Tue Jun 29 16:32:19 2021 -0400

    Add error handling

commit 5fcffd40746b2074d523f53dc82c824d147444e5
Author: Ivan Chen <ivan@tagg.id>
Date:   Tue Jun 29 16:29:06 2021 -0400

    Refactor buttons

commit f273a7aa1c2e27692c2a03ae1e2fc9b81360558d
Author: Shravya Ramesh <shravs1208@gmail.com>
Date:   Fri Jun 25 17:18:47 2021 -0700

    Fix lint errors

commit 448e91ed0b6c7519c02bbe1ac32a9d51989679db
Author: Shravya Ramesh <shravs1208@gmail.com>
Date:   Fri Jun 25 16:58:05 2021 -0700

    Fix lint errors

commit 6f94f0bb6dbe12e23f4222a0d0e3ffb09af965d7
Author: Shravya Ramesh <shravs1208@gmail.com>
Date:   Fri Jun 25 16:50:13 2021 -0700

    Add missing description for permissions

commit 727c6384a2a07c42cd132d02da8c7dbb5757ea4f
Author: Shravya Ramesh <shravs1208@gmail.com>
Date:   Fri Jun 25 16:50:00 2021 -0700

    Refactor code, Fix orientation bug

commit f596a0246a9b9453df3a93c8c3fc5c9137bb50fc
Author: Shravya Ramesh <shravs1208@gmail.com>
Date:   Fri Jun 25 03:26:00 2021 -0700

    Create camera screen, Add to Navigator

commit 0646d38547319200f7f725cdd76b1ed9b531a188
Author: Shravya Ramesh <shravs1208@gmail.com>
Date:   Fri Jun 25 03:24:54 2021 -0700

    Navigate to camera screen, Move image picker funct

commit f0762b7a3171f99833eb3c3f5e723c472dbc4879
Author: Shravya Ramesh <shravs1208@gmail.com>
Date:   Fri Jun 25 03:23:56 2021 -0700

    Add assets for camera screen

commit 3c4676b7646fbddc43bf5d9796b7cbac185b6664
Author: Shravya Ramesh <shravs1208@gmail.com>
Date:   Fri Jun 25 03:23:33 2021 -0700

    Add package, install for camera lib
---
 src/components/camera/SaveButton.tsx | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
 create mode 100644 src/components/camera/SaveButton.tsx

(limited to 'src/components/camera/SaveButton.tsx')

diff --git a/src/components/camera/SaveButton.tsx b/src/components/camera/SaveButton.tsx
new file mode 100644
index 00000000..840cc804
--- /dev/null
+++ b/src/components/camera/SaveButton.tsx
@@ -0,0 +1,26 @@
+import React from 'react';
+import {Text, TouchableOpacity} from 'react-native';
+import SaveIcon from '../../assets/icons/camera/save.svg';
+import {downloadImage} from '../../utils/camera';
+import {styles} from './styles';
+
+interface SaveButtonProps {
+  capturedImageURI: string;
+}
+
+/*
+ * Appears when a picture has been taken,
+ * On click, saves the captured image to "Recents" album on device gallery
+ */
+export const SaveButton: React.FC<SaveButtonProps> = ({capturedImageURI}) => (
+  <TouchableOpacity
+    onPress={() => {
+      downloadImage(capturedImageURI);
+    }}
+    style={styles.saveButton}>
+    <SaveIcon width={40} height={40} />
+    <Text style={styles.saveButtonLabel}>Save</Text>
+  </TouchableOpacity>
+);
+
+export default SaveButton;
-- 
cgit v1.2.3-70-g09d2


From c548f8df62c3775058ffa18e201ca230a641e6c1 Mon Sep 17 00:00:00 2001
From: Ivan Chen <ivan@tagg.id>
Date: Wed, 30 Jun 2021 15:18:57 -0400
Subject: Cleanup code

---
 src/components/camera/GalleryIcon.tsx | 24 ++++--------------------
 src/components/camera/SaveButton.tsx  |  4 ++--
 src/components/moments/Moment.tsx     |  4 +---
 src/screens/moments/CameraScreen.tsx  | 20 +++++++++++++++++---
 src/utils/camera.ts                   |  4 ++--
 5 files changed, 26 insertions(+), 30 deletions(-)

(limited to 'src/components/camera/SaveButton.tsx')

diff --git a/src/components/camera/GalleryIcon.tsx b/src/components/camera/GalleryIcon.tsx
index bc8b1d41..8d396550 100644
--- a/src/components/camera/GalleryIcon.tsx
+++ b/src/components/camera/GalleryIcon.tsx
@@ -1,14 +1,12 @@
-import {useNavigation} from '@react-navigation/native';
 import React from 'react';
 import {Image, Text, TouchableOpacity, View} from 'react-native';
-import {ScreenType} from '../../types';
 import {navigateToImagePicker} from '../../utils/camera';
+import {Image as ImageType} from 'react-native-image-crop-picker';
 import {styles} from './styles';
 
 interface GalleryIconProps {
-  screenType: ScreenType;
-  title: string;
   mostRecentPhotoUri: string;
+  callback: (pic: ImageType) => void;
 }
 
 /*
@@ -16,26 +14,12 @@ interface GalleryIconProps {
  * On click, navigates to the image picker
  */
 export const GalleryIcon: React.FC<GalleryIconProps> = ({
-  screenType,
-  title,
   mostRecentPhotoUri,
+  callback,
 }) => {
-  const navigation = useNavigation();
   return (
     <TouchableOpacity
-      onPress={() =>
-        navigateToImagePicker((pic) =>
-          navigation.navigate('ZoomInCropper', {
-            screenType,
-            title,
-            media: {
-              filename: pic.filename,
-              uri: pic.path,
-              isVideo: false,
-            },
-          }),
-        )
-      }
+      onPress={() => navigateToImagePicker(callback)}
       style={styles.saveButton}>
       {mostRecentPhotoUri !== '' ? (
         <Image
diff --git a/src/components/camera/SaveButton.tsx b/src/components/camera/SaveButton.tsx
index 840cc804..0e220497 100644
--- a/src/components/camera/SaveButton.tsx
+++ b/src/components/camera/SaveButton.tsx
@@ -1,7 +1,7 @@
 import React from 'react';
 import {Text, TouchableOpacity} from 'react-native';
 import SaveIcon from '../../assets/icons/camera/save.svg';
-import {downloadImage} from '../../utils/camera';
+import {saveImageToGallery} from '../../utils/camera';
 import {styles} from './styles';
 
 interface SaveButtonProps {
@@ -15,7 +15,7 @@ interface SaveButtonProps {
 export const SaveButton: React.FC<SaveButtonProps> = ({capturedImageURI}) => (
   <TouchableOpacity
     onPress={() => {
-      downloadImage(capturedImageURI);
+      saveImageToGallery(capturedImageURI);
     }}
     style={styles.saveButton}>
     <SaveIcon width={40} height={40} />
diff --git a/src/components/moments/Moment.tsx b/src/components/moments/Moment.tsx
index 25d69fba..f057b329 100644
--- a/src/components/moments/Moment.tsx
+++ b/src/components/moments/Moment.tsx
@@ -55,6 +55,7 @@ const Moment: React.FC<MomentProps> = ({
       },
     });
   };
+
   const navigateToCameraScreen = () => {
     navigation.navigate('CameraScreen', {
       title,
@@ -195,9 +196,6 @@ const styles = StyleSheet.create({
     color: TAGG_LIGHT_BLUE,
     maxWidth: '70%',
   },
-  flexer: {
-    flex: 1,
-  },
   scrollContainer: {
     height: SCREEN_WIDTH / 3.25,
     backgroundColor: '#eee',
diff --git a/src/screens/moments/CameraScreen.tsx b/src/screens/moments/CameraScreen.tsx
index 1826f9d7..b3275764 100644
--- a/src/screens/moments/CameraScreen.tsx
+++ b/src/screens/moments/CameraScreen.tsx
@@ -15,7 +15,7 @@ import {
 } from '../../components';
 import {MainStackParams} from '../../routes';
 import {HeaderHeight, normalize, SCREEN_WIDTH} from '../../utils';
-import {takePicture} from '../../utils/camera';
+import {navigateToImagePicker, takePicture} from '../../utils/camera';
 
 type CameraScreenRouteProps = RouteProp<MainStackParams, 'CameraScreen'>;
 export type CameraScreenNavigationProps = StackNavigationProp<
@@ -52,6 +52,7 @@ const CameraScreen: React.FC<CameraScreenProps> = ({route, navigation}) => {
       );
   }, [capturedImage]);
 
+  console.log(capturedImage);
   /*
    *  Appears once a picture has been captured to navigate to the caption screen
    */
@@ -123,8 +124,21 @@ const CameraScreen: React.FC<CameraScreenProps> = ({route, navigation}) => {
           ) : (
             <GalleryIcon
               mostRecentPhotoUri={mostRecentPhoto}
-              screenType={screenType}
-              title={title}
+              callback={() =>
+                navigateToImagePicker((pic) => {
+                  if (pic.filename) {
+                    navigation.navigate('ZoomInCropper', {
+                      screenType,
+                      title,
+                      media: {
+                        filename: pic.filename,
+                        uri: pic.path,
+                        isVideo: false,
+                      },
+                    });
+                  }
+                })
+              }
             />
           )}
         </View>
diff --git a/src/utils/camera.ts b/src/utils/camera.ts
index 1ee5dbf4..877c8c2f 100644
--- a/src/utils/camera.ts
+++ b/src/utils/camera.ts
@@ -6,7 +6,7 @@ import ImagePicker, {Image, Video} from 'react-native-image-crop-picker';
 import {ERROR_UPLOAD} from '../constants/strings';
 
 /*
- * Captures a photo and pauses to shoe the preview of the picture taken
+ * Captures a photo and pauses to show the preview of the picture taken
  */
 export const takePicture = (
   cameraRef: RefObject<RNCamera>,
@@ -24,7 +24,7 @@ export const takePicture = (
   }
 };
 
-export const downloadImage = (capturedImageURI: string) => {
+export const saveImageToGallery = (capturedImageURI: string) => {
   CameraRoll.save(capturedImageURI, {album: 'Recents', type: 'photo'})
     .then((_res) => Alert.alert('Saved to device!'))
     .catch((_err) => Alert.alert('Failed to save to device!'));
-- 
cgit v1.2.3-70-g09d2

