From d518a5e7ae053ef55ca4ede254586f77be86e768 Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Wed, 21 Jul 2021 19:19:30 -0400 Subject: Add service, Add logic for checking upload finished --- src/components/moments/MomentUploadProgressBar.tsx | 16 ++++++++++++++++ src/services/MomentService.ts | 20 ++++++++++++++++++++ 2 files changed, 36 insertions(+) (limited to 'src') diff --git a/src/components/moments/MomentUploadProgressBar.tsx b/src/components/moments/MomentUploadProgressBar.tsx index 28fbd8cb..0d84236d 100644 --- a/src/components/moments/MomentUploadProgressBar.tsx +++ b/src/components/moments/MomentUploadProgressBar.tsx @@ -4,6 +4,7 @@ import {View} from 'react-native-animatable'; import {Easing, useSharedValue, withTiming} from 'react-native-reanimated'; import {SafeAreaView} from 'react-native-safe-area-context'; import {useSelector} from 'react-redux'; +import {checkMomentUploadFinished} from '../../services'; import {RootState} from '../../store/rootReducer'; import {MomentUploadStatusType} from '../../types'; import {normalize, SCREEN_WIDTH, StatusBarHeight} from '../../utils'; @@ -18,6 +19,21 @@ const MomentUploadProgressBar: React.FC = ); const progress = useSharedValue(0); + useEffect(() => { + if ( + momentUploadProgressBar?.status === MomentUploadStatusType.Uploading + ) { + const timer = setInterval(async () => { + if (checkMomentUploadFinished(momentUploadProgressBar.momentId)) { + // call upload finished action + } + }, 5 * 1000); + setTimeout(() => { + clearInterval(timer); + }, 5 * 60 * 1000); + } + }, []); + useEffect(() => { if ( momentUploadProgressBar?.status === MomentUploadStatusType.Uploading diff --git a/src/services/MomentService.ts b/src/services/MomentService.ts index 25d44041..2a0d9113 100644 --- a/src/services/MomentService.ts +++ b/src/services/MomentService.ts @@ -1,6 +1,7 @@ import AsyncStorage from '@react-native-community/async-storage'; import RNFetchBlob from 'rn-fetch-blob'; import { + CHECK_MOMENT_UPLOAD_FINISHED_ENDPOINT, MOMENTS_ENDPOINT, MOMENTTAG_ENDPOINT, MOMENT_TAGS_ENDPOINT, @@ -320,3 +321,22 @@ export const handleVideoUpload = async ( } return false; }; + +export const checkMomentUploadFinished = async (momentId: string) => { + try { + const token = await AsyncStorage.getItem('token'); + const response = await fetch( + CHECK_MOMENT_UPLOAD_FINISHED_ENDPOINT + '?moment_id=' + momentId, + { + method: 'GET', + headers: { + Authorization: 'Token ' + token, + }, + }, + ); + return response.status === 200; + } catch (error) { + console.error(error); + return false; + } +}; -- cgit v1.2.3-70-g09d2