aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShravya Ramesh <shravs1208@gmail.com>2021-03-11 09:18:16 -0800
committerShravya Ramesh <shravs1208@gmail.com>2021-03-11 09:18:16 -0800
commitc74285c0f53efc1c4d0794d2f7f563b45e1eb700 (patch)
tree74e6089eadee6475206221f2b63fb617b9c81284
parentb6fa3c9c58c62c3fcb2462a03fa0fffb42d48b35 (diff)
refactoring
-rw-r--r--src/constants/api.ts4
-rw-r--r--src/screens/badge/BadgeSelection.tsx71
-rw-r--r--src/screens/suggestedPeople/SPBody.tsx2
-rw-r--r--src/services/SuggestedPeopleService.ts57
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);
+ }
+};