diff options
-rw-r--r-- | src/constants/api.ts | 4 | ||||
-rw-r--r-- | src/screens/badge/BadgeSelection.tsx | 71 | ||||
-rw-r--r-- | src/screens/suggestedPeople/SPBody.tsx | 2 | ||||
-rw-r--r-- | src/services/SuggestedPeopleService.ts | 57 |
4 files changed, 68 insertions, 66 deletions
diff --git a/src/constants/api.ts b/src/constants/api.ts index dd3d6e15..34ef9a1c 100644 --- a/src/constants/api.ts +++ b/src/constants/api.ts @@ -38,8 +38,8 @@ export const COMMENT_THREAD_ENDPOINT: string = API_URL + 'reply/'; export const SP_USERS_ENDPOINT: string = API_URL + 'suggested_people/'; export const SP_UPDATE_PICTURE_ENDPOINT: string = SP_USERS_ENDPOINT + 'update_picture/'; export const SP_MUTUAL_BADGE_HOLDERS_ENDPOINT: string = SP_USERS_ENDPOINT + 'get_mutual_badge_holders/'; -export const ADD_USER_BADGES: string = SP_USERS_ENDPOINT + 'add_badges/'; -export const UPDATE_USER_BADGES: string = SP_USERS_ENDPOINT + 'update_badges/'; +export const ADD_BADGES_ENDPOINT: string = SP_USERS_ENDPOINT + 'add_badges/'; +export const UPDATE_BADGES_ENDPOINT: string = SP_USERS_ENDPOINT + 'update_badges/'; // Register as FCM device export const FCM_ENDPOINT: string = API_URL + 'fcm/'; diff --git a/src/screens/badge/BadgeSelection.tsx b/src/screens/badge/BadgeSelection.tsx index 7088821a..ed3f199d 100644 --- a/src/screens/badge/BadgeSelection.tsx +++ b/src/screens/badge/BadgeSelection.tsx @@ -1,4 +1,3 @@ -import AsyncStorage from '@react-native-community/async-storage'; import {RouteProp} from '@react-navigation/core'; import {StackNavigationProp} from '@react-navigation/stack'; import React, {useEffect, useState} from 'react'; @@ -7,17 +6,11 @@ import {Text} from 'react-native-animatable'; import {TouchableOpacity} from 'react-native-gesture-handler'; import LinearGradient from 'react-native-linear-gradient'; import {useDispatch} from 'react-redux'; -import {MainStackParams} from 'src/routes'; -import { - ADD_USER_BADGES, - BACKGROUND_GRADIENT_MAP, - UPDATE_USER_BADGES, -} from '../../constants'; +import {MainStackParams} from '../../routes'; +import {addBadgesService, updateBadgesService} from '../../services'; +import {BACKGROUND_GRADIENT_MAP} from '../../constants'; import {BADGE_DATA} from '../../constants/badges'; -import { - ERROR_BADGES_EXCEED_LIMIT, - ERROR_UPLOAD_BADGES, -} from '../../constants/strings'; +import {ERROR_BADGES_EXCEED_LIMIT} from '../../constants/strings'; import {suggestedPeopleBadgesFinished} from '../../store/actions'; import {BackgroundGradientType, UniversityBadge} from '../../types'; import {SCREEN_HEIGHT, StatusBarHeight} from '../../utils'; @@ -52,11 +45,14 @@ const BadgeSelection: React.FC<BadgeSelectionProps> = ({navigation, route}) => { style={styles.rightButtonContainer} onPress={async () => { if (route?.params.editing) { - updateBadgesService(); + updateBadgesService(selectedBadges); navigation.goBack(); } else { if (selectedBadges.length !== 0) { - uploadUserSelection(); + const success = await addBadgesService(selectedBadges); + if (success) { + dispatch(suggestedPeopleBadgesFinished()); + } } else { dispatch(suggestedPeopleBadgesFinished()); } @@ -103,55 +99,6 @@ const BadgeSelection: React.FC<BadgeSelectionProps> = ({navigation, route}) => { } }; - const uploadUserSelection = async () => { - try { - const token = await AsyncStorage.getItem('token'); - const form = new FormData(); - form.append('badges', JSON.stringify(selectedBadges)); - const response = await fetch(ADD_USER_BADGES, { - method: 'POST', - headers: { - 'Content-Type': 'multipart/form-data', - Authorization: 'Token ' + token, - }, - body: form, - }); - if (response.status === 400) { - Alert.alert(ERROR_BADGES_EXCEED_LIMIT); - return; - } - dispatch(suggestedPeopleBadgesFinished()); - } catch (error) { - console.log(error); - Alert.alert(ERROR_UPLOAD_BADGES); - } - }; - - const updateBadgesService = async () => { - try { - const token = await AsyncStorage.getItem('token'); - const form = new FormData(); - console.log('selectedBadges: ', selectedBadges); - form.append('badges', JSON.stringify(selectedBadges)); - const response = await fetch(UPDATE_USER_BADGES, { - method: 'POST', - headers: { - 'Content-Type': 'multipart/form-data', - Authorization: 'Token ' + token, - }, - body: form, - }); - if (response.status === 400) { - Alert.alert(ERROR_BADGES_EXCEED_LIMIT); - return; - } - console.log('response: ', response); - } catch (error) { - console.log(error); - Alert.alert(ERROR_UPLOAD_BADGES); - } - }; - return ( <LinearGradient colors={BACKGROUND_GRADIENT_MAP[BackgroundGradientType.Dark]} diff --git a/src/screens/suggestedPeople/SPBody.tsx b/src/screens/suggestedPeople/SPBody.tsx index 6572dc55..bba137c0 100644 --- a/src/screens/suggestedPeople/SPBody.tsx +++ b/src/screens/suggestedPeople/SPBody.tsx @@ -50,7 +50,7 @@ const SPBody: React.FC<SPBodyProps> = ({ let array = []; useEffect(() => { const findBadgeIcons = (badge: UniversityBadge) => { - DATA.forEach((item) => { + DATA?.forEach((item) => { if (item.title === badge.category) { item.data.forEach((object) => { if (object.badgeName === badge.name) { diff --git a/src/services/SuggestedPeopleService.ts b/src/services/SuggestedPeopleService.ts index d0032458..7b0131d8 100644 --- a/src/services/SuggestedPeopleService.ts +++ b/src/services/SuggestedPeopleService.ts @@ -1,11 +1,18 @@ import AsyncStorage from '@react-native-community/async-storage'; import { + ERROR_BADGES_EXCEED_LIMIT, + ERROR_UPLOAD_BADGES, +} from '../constants/strings'; +import { + ADD_BADGES_ENDPOINT, EDIT_PROFILE_ENDPOINT, SP_MUTUAL_BADGE_HOLDERS_ENDPOINT, SP_UPDATE_PICTURE_ENDPOINT, SP_USERS_ENDPOINT, -} from '../constants'; + UPDATE_BADGES_ENDPOINT, +} from '../constants/api'; import {ProfilePreviewType, SuggestedPeopleDataType} from '../types'; +import { Alert } from 'react-native'; export const sendSuggestedPeopleLinked = async ( userId: string, @@ -119,3 +126,51 @@ export const getMutualBadgeHolders = async () => { return undefined; } }; + +export const addBadgesService = async (selectedBadges: string[]) => { + try { + const token = await AsyncStorage.getItem('token'); + const form = new FormData(); + form.append('badges', JSON.stringify(selectedBadges)); + const response = await fetch(ADD_BADGES_ENDPOINT, { + method: 'POST', + headers: { + 'Content-Type': 'multipart/form-data', + Authorization: 'Token ' + token, + }, + body: form, + }); + if (response.status === 400) { + Alert.alert(ERROR_BADGES_EXCEED_LIMIT); + return false; + } + return true; + } catch (error) { + console.log(error); + Alert.alert(ERROR_UPLOAD_BADGES); + return false; + } +}; + +export const updateBadgesService = async (selectedBadges: string[]) => { + try { + const token = await AsyncStorage.getItem('token'); + const form = new FormData(); + form.append('badges', JSON.stringify(selectedBadges)); + const response = await fetch(UPDATE_BADGES_ENDPOINT, { + method: 'POST', + headers: { + 'Content-Type': 'multipart/form-data', + Authorization: 'Token ' + token, + }, + body: form, + }); + if (response.status === 400) { + Alert.alert(ERROR_BADGES_EXCEED_LIMIT); + return; + } + } catch (error) { + console.log(error); + Alert.alert(ERROR_UPLOAD_BADGES); + } +}; |