diff options
author | ankit-thanekar007 <ankit.thanekar007@gmail.com> | 2021-03-24 16:09:45 -0700 |
---|---|---|
committer | ankit-thanekar007 <ankit.thanekar007@gmail.com> | 2021-03-24 16:11:32 -0700 |
commit | 8ce46790a8d12df6738d8ac17462ba57e2b0e6b9 (patch) | |
tree | f58987fd342e466403bdbd00146a98189bd4fc4f | |
parent | 592cb776068b2f1daf90755e04b33cdeba2bb947 (diff) |
Cornell Changes
-rw-r--r-- | src/components/profile/ProfileHeader.tsx | 7 | ||||
-rw-r--r-- | src/components/profile/UniversityIcon.tsx | 8 | ||||
-rw-r--r-- | src/components/search/SearchBar.tsx | 8 | ||||
-rw-r--r-- | src/components/search/SearchResultCell.tsx | 19 | ||||
-rw-r--r-- | src/components/suggestedPeople/BadgesDropdown.tsx | 8 | ||||
-rw-r--r-- | src/components/suggestedPeople/UniversityIconClicked.tsx | 8 | ||||
-rw-r--r-- | src/constants/badges.ts | 8 | ||||
-rw-r--r-- | src/constants/constants.ts | 2 | ||||
-rw-r--r-- | src/screens/badge/BadgeScreenHeader.tsx | 9 | ||||
-rw-r--r-- | src/screens/badge/BadgeSelection.tsx | 23 | ||||
-rw-r--r-- | src/screens/search/SearchScreen.tsx | 8 | ||||
-rw-r--r-- | src/screens/suggestedPeople/SPBody.tsx | 7 | ||||
-rw-r--r-- | src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx | 10 | ||||
-rw-r--r-- | src/services/UserProfileService.ts | 2 | ||||
-rw-r--r-- | src/store/initialStates.ts | 2 | ||||
-rw-r--r-- | src/types/types.ts | 13 | ||||
-rw-r--r-- | src/utils/common.ts | 43 | ||||
-rw-r--r-- | src/utils/search.ts | 6 |
18 files changed, 135 insertions, 56 deletions
diff --git a/src/components/profile/ProfileHeader.tsx b/src/components/profile/ProfileHeader.tsx index 9d9a5cbd..0b93de98 100644 --- a/src/components/profile/ProfileHeader.tsx +++ b/src/components/profile/ProfileHeader.tsx @@ -4,7 +4,7 @@ import {useSelector} from 'react-redux'; import UniversityIcon from './UniversityIcon'; import {PROFILE_CUTOUT_TOP_Y} from '../../constants'; import {RootState} from '../../store/rootreducer'; -import {ScreenType} from '../../types'; +import {ScreenType, Universities} from '../../types'; import {normalize} from '../../utils'; import Avatar from './Avatar'; import FriendsCount from './FriendsCount'; @@ -24,7 +24,7 @@ const ProfileHeader: React.FC<ProfileHeaderProps> = ({ handleBlockUnblock, }) => { const { - profile: {name = '', university_class = 2021} = {}, + profile: {name = '', university_class = 2021, university = Universities.cornell} = {}, user: {username: userXName = ''}, } = userXId ? useSelector((state: RootState) => state.userX[screenType][userXId]) @@ -60,8 +60,7 @@ const ProfileHeader: React.FC<ProfileHeaderProps> = ({ <View style={styles.friendsAndUniversity}> <FriendsCount screenType={screenType} userXId={userXId} /> <UniversityIcon - university="brown" //TODO: Update for Cornell - university_class={university_class} + {...{university, university_class}} /> </View> </View> diff --git a/src/components/profile/UniversityIcon.tsx b/src/components/profile/UniversityIcon.tsx index d738e745..1642b8f0 100644 --- a/src/components/profile/UniversityIcon.tsx +++ b/src/components/profile/UniversityIcon.tsx @@ -2,9 +2,9 @@ import React from 'react'; import {ImageStyle, StyleProp, StyleSheet, ViewProps} from 'react-native'; import {Image, Text, View} from 'react-native-animatable'; import {getUniversityClass, normalize} from '../../utils'; - +import {Universities} from '../../types'; export interface UniversityIconProps extends ViewProps { - university: string; + university: Universities; university_class?: number; imageStyle?: StyleProp<ImageStyle>; } @@ -20,10 +20,10 @@ const UniversityIcon: React.FC<UniversityIconProps> = ({ }) => { var universityIcon; switch (university) { - case 'cornell': + case 'Cornell': universityIcon = require('../../assets/universities/cornell.png'); break; - case 'brown': + case 'Brown': universityIcon = require('../../assets/universities/brown.png'); break; default: diff --git a/src/components/search/SearchBar.tsx b/src/components/search/SearchBar.tsx index 62bda77e..5008ff53 100644 --- a/src/components/search/SearchBar.tsx +++ b/src/components/search/SearchBar.tsx @@ -14,6 +14,9 @@ import Animated, {interpolate} from 'react-native-reanimated'; import Icon from 'react-native-vector-icons/Feather'; import {normalize} from 'react-native-elements'; import {SCREEN_HEIGHT, getSearchSuggestions} from '../../utils'; +import {useSelector} from 'react-redux'; +import {RootState} from '../../store/rootReducer'; +import {Universities} from '../../types'; const AnimatedIcon = Animated.createAnimatedComponent(Icon); @@ -37,9 +40,12 @@ const SearchBar: React.FC<SearchBarProps> = ({ e.preventDefault(); Keyboard.dismiss(); }; + const {profile: {university = Universities.cornell} = {}} = useSelector( + (state: RootState) => state.user, + ); const DEFAULT_PLACEHOLDER: string = 'Search'; // the list of suggestions to cycle through. TODO: get this from the backend - const SEARCH_SUGGESTIONS: string[] = getSearchSuggestions(); + const SEARCH_SUGGESTIONS: string[] = getSearchSuggestions(university); /* * index & id of current placeholder, used in selecting next placeholder. -1 * indicates DEFAULT_PLACEHOLDER. TODO: make it appear more random by tracking diff --git a/src/components/search/SearchResultCell.tsx b/src/components/search/SearchResultCell.tsx index 4484bcd3..6ebe19a6 100644 --- a/src/components/search/SearchResultCell.tsx +++ b/src/components/search/SearchResultCell.tsx @@ -2,7 +2,7 @@ import {useNavigation} from '@react-navigation/native'; import React, {useEffect, useState} from 'react'; import {Alert, Image, StyleSheet, Text, View} from 'react-native'; import {TouchableOpacity} from 'react-native-gesture-handler'; -import {useDispatch, useStore} from 'react-redux'; +import {useDispatch, useSelector, useStore} from 'react-redux'; import {ERROR_UNABLE_TO_VIEW_PROFILE} from '../../constants/strings'; import {loadImageFromURL} from '../../services'; import {RootState} from '../../store/rootReducer'; @@ -10,11 +10,13 @@ import { CategoryPreviewType, ProfilePreviewType, ScreenType, + Universities, UserType, } from '../../types'; import { addCategoryToRecentlySearched, addUserToRecentlySearched, + getUniversityBadge, normalize, SCREEN_WIDTH, } from '../../utils'; @@ -43,6 +45,11 @@ const SearchResultsCell: React.FC<SearchResults> = ({ loggedInUser, }) => { const [avatar, setAvatar] = useState<string | undefined>(undefined); + + const {profile: {university = Universities.cornell} = {}} = useSelector( + (state: RootState) => state.user, + ); + useEffect(() => { (async () => { if (thumbnail_url !== undefined) { @@ -143,17 +150,17 @@ const SearchResultsCell: React.FC<SearchResults> = ({ return require('../../assets/images/search.png'); }; - const universityIcon = () => { - return require('../../assets/images/bwbadges.png'); - }; - const categoryCell = () => { return ( <TouchableOpacity style={styles.cellContainer} onPress={onPressCategory}> <View style={[styles.imageContainer, styles.categoryBackground]}> <Image resizeMode="contain" - source={category === 'Brown' ? universityIcon() : searchIcon()} //TODO: Update for Cornell + source={ + category in Universities + ? getUniversityBadge(university, 'Search') + : searchIcon() + } style={styles.categoryImage} /> </View> diff --git a/src/components/suggestedPeople/BadgesDropdown.tsx b/src/components/suggestedPeople/BadgesDropdown.tsx index 3a7eeb0f..f8e7bdaa 100644 --- a/src/components/suggestedPeople/BadgesDropdown.tsx +++ b/src/components/suggestedPeople/BadgesDropdown.tsx @@ -4,11 +4,12 @@ import {Image, StyleSheet} from 'react-native'; import {TouchableOpacity} from 'react-native-gesture-handler'; import LinearGradient from 'react-native-linear-gradient'; import Animated, {Easing} from 'react-native-reanimated'; -import {UniversityBadge} from 'src/types'; +import {Universities, UniversityBadge} from '../../types'; import {UniversityIcon} from '..'; import {normalize, SCREEN_WIDTH} from '../../utils'; import UniversityIconClicked from './UniversityIconClicked'; interface BadgesDropdownProps { + university: Universities; localBadges: { badge: UniversityBadge; img: string; @@ -17,6 +18,7 @@ interface BadgesDropdownProps { } const BadgesDropdown: React.FC<BadgesDropdownProps> = ({ + university, localBadges, badges, }) => { @@ -81,13 +83,13 @@ const BadgesDropdown: React.FC<BadgesDropdownProps> = ({ }}> {displayBadges ? ( <UniversityIconClicked - university="brown" //TODO: Update for Cornell + university={university} style={styles.universityIconContainer} imageStyle={{width: normalize(31), height: normalize(38)}} /> ) : ( <UniversityIcon - university="brown" //TODO: Update for Cornell + university={university} style={styles.universityIconContainer} imageStyle={{width: normalize(31), height: normalize(38)}} /> diff --git a/src/components/suggestedPeople/UniversityIconClicked.tsx b/src/components/suggestedPeople/UniversityIconClicked.tsx index f23a8c16..7a0f3442 100644 --- a/src/components/suggestedPeople/UniversityIconClicked.tsx +++ b/src/components/suggestedPeople/UniversityIconClicked.tsx @@ -2,9 +2,9 @@ import React from 'react'; import {ImageStyle, StyleProp, StyleSheet, ViewProps} from 'react-native'; import {Image, Text, View} from 'react-native-animatable'; import {getUniversityClass, normalize} from '../../utils'; - +import {Universities} from '../../types'; export interface UniversityIconClickedProps extends ViewProps { - university: string; + university: Universities; university_class?: number; imageStyle?: StyleProp<ImageStyle>; } @@ -20,10 +20,10 @@ const UniversityIconClicked: React.FC<UniversityIconClickedProps> = ({ }) => { var universityIcon; switch (university) { - case 'cornell': + case 'Cornell': universityIcon = require('../../assets/universities/cornell-clicked.png'); break; - case 'brown': + case 'Brown': universityIcon = require('../../assets/universities/brown-clicked.png'); break; default: diff --git a/src/constants/badges.ts b/src/constants/badges.ts index 49b96df0..b56ac34e 100644 --- a/src/constants/badges.ts +++ b/src/constants/badges.ts @@ -1,3 +1,5 @@ +import {BadgeDataType} from '../types'; + export const _brownBadgeImages = { acapella: require('../assets/images/badges/brown/acapella.png'), alpha_chi_omega: require('../assets/images/badges/brown/alpha_chi_omega.png'), @@ -492,7 +494,7 @@ const _cornellBadges = [ }, ]; -export const BADGE_DATA = { - 'Brown University': _brownBadges, - 'Cornell University': _cornellBadges, +export const BADGE_DATA: BadgeDataType = { + Brown: _brownBadges, + Cornell: _cornellBadges, }; diff --git a/src/constants/constants.ts b/src/constants/constants.ts index 5f91e03d..c2ba11b2 100644 --- a/src/constants/constants.ts +++ b/src/constants/constants.ts @@ -187,7 +187,7 @@ export const EXPLORE_SECTION_TITLES: ExploreSectionType[] = [ 'New to Tagg', 'People You May Know', 'Trending on Tagg', - "Brown '24", //TODO: Update for Cornell + "Brown '24", "Brown '23", "Brown '22", "Brown '21", diff --git a/src/screens/badge/BadgeScreenHeader.tsx b/src/screens/badge/BadgeScreenHeader.tsx index 300869e9..746e05d9 100644 --- a/src/screens/badge/BadgeScreenHeader.tsx +++ b/src/screens/badge/BadgeScreenHeader.tsx @@ -1,19 +1,20 @@ import React from 'react'; import {Image, StyleSheet, Text, View} from 'react-native'; -import {normalize} from '../../utils'; +import { Universities } from 'src/types'; +import {getUniversityBadge, normalize} from '../../utils'; interface BadgeScreenHeaderProps { - university: string; + university: Universities; } const BadgeScreenHeader: React.FC<BadgeScreenHeaderProps> = ({university}) => { return ( <View style={styles.container}> <Image - source={require('../../assets/images/badges/brown/brown_badge.png')} + source={getUniversityBadge(university, 'Crest')} /> <View style={styles.universityTextContainer}> - <Text style={styles.universityText}>{university} Badges</Text> + <Text style={styles.universityText}>{university} University Badges</Text> </View> <View style={styles.searchTextContainer}> <Text style={styles.searchText}> diff --git a/src/screens/badge/BadgeSelection.tsx b/src/screens/badge/BadgeSelection.tsx index 35e91939..08cad020 100644 --- a/src/screens/badge/BadgeSelection.tsx +++ b/src/screens/badge/BadgeSelection.tsx @@ -15,7 +15,7 @@ import {BACKGROUND_GRADIENT_MAP} from '../../constants'; import {BADGE_DATA} from '../../constants/badges'; import {ERROR_BADGES_EXCEED_LIMIT} from '../../constants/strings'; import {suggestedPeopleBadgesFinished} from '../../store/actions'; -import {BackgroundGradientType} from '../../types'; +import {BackgroundGradientType, Universities} from '../../types'; import {SCREEN_HEIGHT, StatusBarHeight} from '../../utils'; import BadgeList from './BadgeList'; import BadgeScreenHeader from './BadgeScreenHeader'; @@ -34,9 +34,10 @@ type BadgeSelectionProps = { const BadgeSelection: React.FC<BadgeSelectionProps> = ({route}) => { const {editing} = route.params; - const {userId: loggedInUserId} = useSelector( - (state: RootState) => state.user.user, - ); + const { + user: {userId: loggedInUserId}, + profile: {university = Universities.brown}, + } = useSelector((state: RootState) => state.user); const [selectedBadges, setSelectedBadges] = useState<string[]>([]); const dispatch = useDispatch(); const navigation = useNavigation(); @@ -114,18 +115,20 @@ const BadgeSelection: React.FC<BadgeSelectionProps> = ({route}) => { <StatusBar barStyle={'light-content'} /> <SafeAreaView> <View style={styles.listContainer}> - <BadgeScreenHeader university={'Cornell University'} /> + <BadgeScreenHeader {...{university}} /> {/* filter not working, comment out for now */} {/* <SearchBar style={styles.searchBarStyle} onCancel={() => {}} top={Animated.useValue(0)} /> */} - <BadgeList - data={BADGE_DATA['Cornell University']} - selectedBadges={selectedBadges} - selectKey={selectKey} - /> + {university && ( + <BadgeList + data={BADGE_DATA[university]} + selectedBadges={selectedBadges} + selectKey={selectKey} + /> + )} </View> </SafeAreaView> </LinearGradient> diff --git a/src/screens/search/SearchScreen.tsx b/src/screens/search/SearchScreen.tsx index ea660ed9..7e84b372 100644 --- a/src/screens/search/SearchScreen.tsx +++ b/src/screens/search/SearchScreen.tsx @@ -22,6 +22,7 @@ import { ProfilePreviewType, ScreenType, SearchCategoryType, + Universities, } from '../../types'; import { getRecentlySearchedCategories, @@ -38,6 +39,9 @@ import { const SearchScreen: React.FC = () => { const {recentSearches} = useSelector((state: RootState) => state.taggUsers); + const {profile: {university = Universities.cornell} = {}} = useSelector( + (state: RootState) => state.user, + ); const [query, setQuery] = useState<string>(''); const [results, setResults] = useState<Array<any> | undefined>(undefined); const [recents, setRecents] = useState<Array<ProfilePreviewType>>( @@ -50,8 +54,8 @@ const SearchScreen: React.FC = () => { const top = Animated.useValue(-SCREEN_HEIGHT); const defaultButtons: SearchCategoryType[] = [21, 22, 23, 24].map((year) => ({ id: -1, - name: `Brown '${year}`, //TODO: Update for Cornell - category: 'Brown', + name: `${university} '${year}`, + category: university, })); const [keyboardVisible, setKeyboardVisible] = React.useState( 'keyboardVisible', diff --git a/src/screens/suggestedPeople/SPBody.tsx b/src/screens/suggestedPeople/SPBody.tsx index 067eadb1..c4195fac 100644 --- a/src/screens/suggestedPeople/SPBody.tsx +++ b/src/screens/suggestedPeople/SPBody.tsx @@ -27,6 +27,7 @@ interface SPBodyProps { const SPBody: React.FC<SPBodyProps> = ({ item: { user, + university, mutual_friends, social_links, suggested_people_url, @@ -50,7 +51,7 @@ const SPBody: React.FC<SPBodyProps> = ({ useEffect(() => { const newBadges: {badge: UniversityBadge; img: any}[] = []; const findBadgeIcons = (badge: UniversityBadge) => { - BADGE_DATA['Cornell University']?.forEach((item) => { + BADGE_DATA[university]?.forEach((item) => { if (item.title === badge.category) { item.data.forEach((object) => { if (object.badgeName === badge.name) { @@ -120,7 +121,7 @@ const SPBody: React.FC<SPBodyProps> = ({ return ( <TouchableOpacity onPress={() => { - navigation.push('Profile', { + navigation.navigate('Profile', { userXId: loggedInUserId === user.id ? undefined : user.id, screenType, }); @@ -139,7 +140,7 @@ const SPBody: React.FC<SPBodyProps> = ({ <View style={styles.topContainer}> <Text style={styles.title}>{firstItem && 'Suggested People'}</Text> {localBadges && ( - <BadgesDropdown localBadges={localBadges} badges={badges} /> + <BadgesDropdown {...{university, localBadges, badges}} /> )} </View> <View style={styles.body}> diff --git a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx index 5275a186..378e69c5 100644 --- a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx +++ b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx @@ -14,6 +14,7 @@ import ImagePicker from 'react-native-image-crop-picker'; import {SafeAreaView} from 'react-native-safe-area-context'; import {useDispatch, useSelector} from 'react-redux'; import {MainStackParams} from 'src/routes'; +import {Universities} from '../../types'; import FrontArrow from '../../assets/icons/front-arrow.svg'; import {TaggSquareButton, UniversityIcon} from '../../components'; import TaggLoadingIndicator from '../../components/common/TaggLoadingIndicator'; @@ -49,9 +50,10 @@ const SuggestedPeopleUploadPictureScreen: React.FC<SuggestedPeopleUploadPictureS const [loading, setLoading] = useState(false); const dispatch = useDispatch(); const navigation = useNavigation(); - const {userId: loggedInUserId} = useSelector( - (state: RootState) => state.user.user, - ); + const { + user: {userId: loggedInUserId}, + profile: {university = Universities.brown}, + } = useSelector((state: RootState) => state.user); useEffect(() => { const loadData = async () => { @@ -166,7 +168,7 @@ const SuggestedPeopleUploadPictureScreen: React.FC<SuggestedPeopleUploadPictureS <View style={styles.editBadgesMainContainer}> <View style={styles.editBadgesSubContainer}> <UniversityIcon - university="brown" //TODO: Update for Cornell + university={university} imageStyle={{width: normalize(16), height: normalize(20)}} /> <Text style={styles.editBadgesText}>Edit Badges</Text> diff --git a/src/services/UserProfileService.ts b/src/services/UserProfileService.ts index dd77db9f..22492124 100644 --- a/src/services/UserProfileService.ts +++ b/src/services/UserProfileService.ts @@ -48,6 +48,7 @@ export const loadProfileInfo = async (token: string, userId: string) => { gender, snapchat, tiktok, + university, university_class, profile_completion_stage, suggested_people_linked, @@ -63,6 +64,7 @@ export const loadProfileInfo = async (token: string, userId: string) => { gender, snapchat, tiktok, + university, university_class, profile_completion_stage, suggested_people_linked, diff --git a/src/store/initialStates.ts b/src/store/initialStates.ts index b43e4a1d..e1b4b127 100644 --- a/src/store/initialStates.ts +++ b/src/store/initialStates.ts @@ -18,7 +18,7 @@ export const NO_PROFILE: ProfileType = { gender: '', birthday: undefined, university_class: 2021, - + university: undefined, //Default to an invalid value and ignore it gracefully while showing tutorials / popups. profile_completion_stage: -1, suggested_people_linked: -1, diff --git a/src/types/types.ts b/src/types/types.ts index cb6b5209..8a4474dc 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -21,11 +21,16 @@ export interface CategoryPreviewType { export type FriendshipStatusType = 'friends' | 'requested' | 'no_record'; +export enum Universities { + brown = 'Brown', + cornell = 'Cornell', +} export interface ProfileType { name: string; biography: string; website: string; gender: string; + university: Universities | undefined; university_class: number; profile_completion_stage: number; suggested_people_linked: number; @@ -129,7 +134,7 @@ export type ExploreSectionType = | 'People You May Know' | 'New to Tagg' | 'Trending on Tagg' - | "Brown '21" //TODO: Update for Cornell + | "Brown '21" | "Brown '22" | "Brown '23" | "Brown '24"; @@ -233,12 +238,13 @@ export type TypeOfNotification = export type UniversityBadge = { id: number; name: string; - university: string; + university: Universities; category: string; }; export type SuggestedPeopleDataType = { user: ProfilePreviewType; + university: Universities; mutual_friends: ProfilePreviewType[]; badges: UniversityBadge[]; social_links: string[]; @@ -262,3 +268,6 @@ export type ContactType = { first_name: string; last_name: string; }; + +export type UniversityBadgeType = 'Search' | 'Crest'; +export type BadgeDataType = Record<Universities, any>; diff --git a/src/utils/common.ts b/src/utils/common.ts index 0a76ec08..fdc6b875 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -1,4 +1,9 @@ -import {ContactType, NotificationType} from './../types/types'; +import { + ContactType, + NotificationType, + Universities, + UniversityBadgeType, +} from './../types/types'; import moment from 'moment'; import {Linking} from 'react-native'; import {BROWSABLE_SOCIAL_URLS, TOGGLE_BUTTON_TYPE} from '../constants'; @@ -132,3 +137,39 @@ export const extractContacts = async () => { }); return retrievedContacts; }; + +export const getUniversityBadge = ( + university: Universities, + type: UniversityBadgeType, +) => { + switch (type) { + case 'Search': + return _searchPageIcon(university); + case 'Crest': + return _crestIcon(university); + default: + return require('../assets/images/bwbadges.png'); + } +}; + +const _searchPageIcon = (university: Universities) => { + switch (university) { + case 'Cornell': + return require('../assets/universities/cornell-search.png'); + case 'Brown': + return require('../assets/images/bwbadges.png'); + default: + return require('../assets/images/bwbadges.png'); + } +}; + +const _crestIcon = (university: Universities) => { + switch (university) { + case 'Cornell': + return require('../assets/universities/cornell.png'); + case 'Brown': + return require('../assets/universities/brown.png'); + default: + return require('../assets/images/bwbadges.png'); + } +}; diff --git a/src/utils/search.ts b/src/utils/search.ts index bdd6c042..aa9a7463 100644 --- a/src/utils/search.ts +++ b/src/utils/search.ts @@ -1,14 +1,14 @@ import AsyncStorage from '@react-native-community/async-storage'; import {BADGE_DATA} from '../constants/badges'; -import {ProfilePreviewType, CategoryPreviewType} from '../types'; +import {ProfilePreviewType, CategoryPreviewType, Universities} from '../types'; /* * Gets all possible search suggestions. */ -export const getSearchSuggestions = (): string[] => { +export const getSearchSuggestions = (university : Universities): string[] => { const suggestions: string[] = []; - for (const category of BADGE_DATA['Cornell University']) { + for (const category of BADGE_DATA[university]) { for (const interest of category.data) { suggestions.push(interest.badgeName); } |