aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShravya Ramesh <shravs1208@gmail.com>2021-04-28 07:22:42 -0700
committerShravya Ramesh <shravs1208@gmail.com>2021-04-28 07:22:42 -0700
commit30ab35a80b34608243836b463d40cd50fecbdbf8 (patch)
tree38de0fee911307b5d154a8e70ecb5405e115c1d0
parent8cd2121c220b31c61b7936d6c728aae7f7177c4b (diff)
badge selection to load badge data after upadte
-rw-r--r--src/screens/badge/BadgeSelection.tsx34
1 files changed, 21 insertions, 13 deletions
diff --git a/src/screens/badge/BadgeSelection.tsx b/src/screens/badge/BadgeSelection.tsx
index 38a2b01c..66dca509 100644
--- a/src/screens/badge/BadgeSelection.tsx
+++ b/src/screens/badge/BadgeSelection.tsx
@@ -12,10 +12,13 @@ import {ERROR_BADGES_EXCEED_LIMIT} from '../../constants/strings';
import {MainStackParams} from '../../routes';
import {
addBadgesService,
- getSuggestedPeopleProfile,
+ getBadgesService,
updateBadgesService,
} from '../../services';
-import {suggestedPeopleBadgesFinished} from '../../store/actions';
+import {
+ suggestedPeopleBadgesFinished,
+ updateUserBadges,
+} from '../../store/actions';
import {RootState} from '../../store/rootReducer';
import {BackgroundGradientType} from '../../types';
import {SCREEN_HEIGHT, StatusBarHeight} from '../../utils';
@@ -36,30 +39,32 @@ const BadgeSelection: React.FC<BadgeSelectionProps> = ({route}) => {
const {editing} = route.params;
const {
user: {userId: loggedInUserId},
- profile: {university},
+ profile: {university, badges},
} = useSelector((state: RootState) => state.user);
const [selectedBadges, setSelectedBadges] = useState<string[]>([]);
const dispatch = useDispatch();
const navigation = useNavigation();
- // Loading badges data and extracting into a string []
+ // Extracting badges data into a string []
useEffect(() => {
const loadData = async () => {
- const response = await getSuggestedPeopleProfile(loggedInUserId);
- if (response) {
- const data = response.badges;
- let extractedBadgeNames: string[] = [];
- data.forEach((badge) => {
- extractedBadgeNames.push(badge.name);
- });
- setSelectedBadges(extractedBadgeNames);
- }
+ let extractedBadgeNames: string[] = [];
+ badges.forEach((badge) => {
+ extractedBadgeNames.push(badge.name);
+ });
+ setSelectedBadges(extractedBadgeNames);
};
if (editing) {
loadData();
}
}, []);
+ // Retrieve updated badges using get badges service and udpate the store
+ const loadUserBadges = async () => {
+ const newBadges = await getBadgesService(loggedInUserId);
+ dispatch(updateUserBadges(newBadges));
+ };
+
navigation.setOptions({
headerRight: () => (
<TouchableOpacity
@@ -67,6 +72,8 @@ const BadgeSelection: React.FC<BadgeSelectionProps> = ({route}) => {
onPress={async () => {
if (editing) {
await updateBadgesService(selectedBadges, university);
+ // Load updated badges to store
+ loadUserBadges();
if (navigation.canGoBack()) {
navigation.goBack();
} else {
@@ -82,6 +89,7 @@ const BadgeSelection: React.FC<BadgeSelectionProps> = ({route}) => {
);
if (success) {
dispatch(suggestedPeopleBadgesFinished());
+ loadUserBadges();
navigation.navigate('SuggestedPeople');
}
} else {