aboutsummaryrefslogtreecommitdiff
path: root/src/services
diff options
context:
space:
mode:
Diffstat (limited to 'src/services')
-rw-r--r--src/services/MomentService.ts45
1 files changed, 29 insertions, 16 deletions
diff --git a/src/services/MomentService.ts b/src/services/MomentService.ts
index 28191421..d7a27146 100644
--- a/src/services/MomentService.ts
+++ b/src/services/MomentService.ts
@@ -1,7 +1,6 @@
import AsyncStorage from '@react-native-community/async-storage';
import {Image, Video} from 'react-native-image-crop-picker';
import RNFetchBlob from 'rn-fetch-blob';
-import {ProfileBody} from '../components';
import {
MOMENTS_ENDPOINT,
MOMENTTAG_ENDPOINT,
@@ -14,7 +13,7 @@ import {
ERROR_SOMETHING_WENT_WRONG,
ERROR_SOMETHING_WENT_WRONG_REFRESH,
} from '../constants/strings';
-import {MomentPostType, MomentTagType, ResponseURL} from '../types';
+import {MomentPostType, MomentTagType, PresignedURLResponse} from '../types';
import {checkImageUploadStatus} from '../utils';
export const postMoment = async (
@@ -217,7 +216,13 @@ export const deleteMomentTag = async (moment_tag_id: string) => {
return false;
}
};
-
+/**
+ * This function makes a request to the server in order to provide the client with a presigned URL.
+ * This is called first, in order for the client to directly upload a file to S3
+ * @param value: string | undefined
+ * @param filename: string | undefined
+ * @returns a PresignedURLResponse object
+ */
export const handlePresignedURL = async (
value: string | undefined,
filename: string | undefined,
@@ -231,7 +236,7 @@ export const handlePresignedURL = async (
}),
});
const status = response.status;
- let data: ResponseURL = await response.json();
+ let data: PresignedURLResponse = await response.json();
if (status === 200) {
console.log(data.response_msg);
return data;
@@ -250,16 +255,29 @@ export const handlePresignedURL = async (
console.log(ERROR_SOMETHING_WENT_WRONG);
}
};
+/**
+ * This util function takes in the file object and the PresignedURLResponse object, creates form data from the latter,
+ * and makes a post request to the presigned URL, sending the file object inside of the form data.
+ * @param file: Video, Image, Undefined
+ * @param urlObj PresignedURLResponse | undefined
+ * @returns responseURL or boolean
+ */
export const handleVideoUpload = async (
file: Video | Image | undefined,
- urlObj: ResponseURL | undefined,
+ urlObj: PresignedURLResponse | undefined,
) => {
try {
- console.log('inside of second handler: \n' + JSON.stringify(urlObj));
- console.log(urlObj?.response_url.url);
- let fileName = file?.filename || ''; // check if null
- //build payload packet
- console.log('LOG');
+ let fileName = file?.filename;
+ if (fileName === null || '') {
+ console.log('Invalid filename');
+ return false;
+ }
+ if (urlObj === null || urlObj === undefined) {
+ console.log('Invalid urlObj');
+ return false;
+ }
+ //build formData for POST request
+ // Could not get a forEach to work and could not assign directly, will look into cleaning this series of appends up later.
const form = new FormData();
form.append('key', urlObj.response_url.fields.key);
form.append(
@@ -276,14 +294,12 @@ export const handleVideoUpload = async (
'x-amz-signature',
urlObj.response_url.fields['x-amz-signature'],
);
- console.log('date: \n' + urlObj.response_url.fields['x-amz-date']);
form.append('file', {
uri: file?.sourceURL,
+ // other types such as 'quicktime' 'image' etc exist, and we can programmatically type this, but for now sticking with simple 'video'
type: 'video',
name: fileName,
});
- console.log('FORM: \n' + JSON.stringify(form));
-
const response = await fetch(urlObj.response_url.url, {
method: 'POST',
headers: {
@@ -291,9 +307,7 @@ export const handleVideoUpload = async (
},
body: form,
});
- console.log('response' + JSON.stringify(response));
const status = response.status;
- console.log('responmse text' + response.text());
let data = await response.json();
if (status === 200) {
console.log(data.response_msg);
@@ -304,7 +318,6 @@ export const handleVideoUpload = async (
`Please make sure that the email / username entered is registered with us. You may contact our customer support at ${TAGG_CUSTOMER_SUPPORT}`,
);
} else {
- console.log('bad');
console.log(ERROR_SOMETHING_WENT_WRONG_REFRESH);
}
console.log(response);