diff options
Diffstat (limited to 'src/services')
-rw-r--r-- | src/services/MomentService.ts | 45 |
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); |