diff options
author | Ivan Chen <ivan@tagg.id> | 2021-03-26 22:40:00 -0400 |
---|---|---|
committer | Ivan Chen <ivan@tagg.id> | 2021-03-26 22:40:00 -0400 |
commit | 64785e6527e521ce14e32edcc80adc6253b48657 (patch) | |
tree | df42bdbe6810b589ec52c98fcd622cc7e2864879 /src | |
parent | ed26661062a2e47df2662254eaddfcfa1de62d04 (diff) |
renamed to UniversityType, applied to all
Diffstat (limited to 'src')
-rw-r--r-- | src/components/profile/ProfileHeader.tsx | 16 | ||||
-rw-r--r-- | src/components/profile/UniversityIcon.tsx | 25 | ||||
-rw-r--r-- | src/components/search/SearchBar.tsx | 21 | ||||
-rw-r--r-- | src/components/search/SearchResultCell.tsx | 8 | ||||
-rw-r--r-- | src/components/suggestedPeople/BadgesDropdown.tsx | 4 | ||||
-rw-r--r-- | src/components/suggestedPeople/UniversityIconClicked.tsx | 8 | ||||
-rw-r--r-- | src/constants/badges.ts | 5 | ||||
-rw-r--r-- | src/screens/badge/BadgeScreenHeader.tsx | 13 | ||||
-rw-r--r-- | src/screens/badge/BadgeSelection.tsx | 4 | ||||
-rw-r--r-- | src/screens/search/SearchScreen.tsx | 9 | ||||
-rw-r--r-- | src/screens/suggestedPeople/SuggestedPeopleScreen.tsx | 9 | ||||
-rw-r--r-- | src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx | 4 | ||||
-rw-r--r-- | src/types/types.ts | 2 | ||||
-rw-r--r-- | src/utils/common.ts | 16 | ||||
-rw-r--r-- | src/utils/search.ts | 16 |
15 files changed, 75 insertions, 85 deletions
diff --git a/src/components/profile/ProfileHeader.tsx b/src/components/profile/ProfileHeader.tsx index 0b93de98..2c623c2b 100644 --- a/src/components/profile/ProfileHeader.tsx +++ b/src/components/profile/ProfileHeader.tsx @@ -1,14 +1,14 @@ import React, {useState} from 'react'; import {StyleSheet, Text, View} from 'react-native'; import {useSelector} from 'react-redux'; -import UniversityIcon from './UniversityIcon'; import {PROFILE_CUTOUT_TOP_Y} from '../../constants'; import {RootState} from '../../store/rootreducer'; -import {ScreenType, Universities} from '../../types'; +import {ScreenType} from '../../types'; import {normalize} from '../../utils'; import Avatar from './Avatar'; import FriendsCount from './FriendsCount'; import ProfileMoreInfoDrawer from './ProfileMoreInfoDrawer'; +import UniversityIcon from './UniversityIcon'; type ProfileHeaderProps = { userXId: string | undefined; @@ -24,11 +24,11 @@ const ProfileHeader: React.FC<ProfileHeaderProps> = ({ handleBlockUnblock, }) => { const { - profile: {name = '', university_class = 2021, university = Universities.cornell} = {}, + profile: {name = '', university_class = 2021, university}, user: {username: userXName = ''}, - } = userXId - ? useSelector((state: RootState) => state.userX[screenType][userXId]) - : useSelector((state: RootState) => state.user); + } = useSelector((state: RootState) => + userXId ? state.userX[screenType][userXId] : state.user, + ); const [drawerVisible, setDrawerVisible] = useState(false); const [firstName, lastName] = [...name.split(' ')]; return ( @@ -59,9 +59,7 @@ const ProfileHeader: React.FC<ProfileHeaderProps> = ({ )} <View style={styles.friendsAndUniversity}> <FriendsCount screenType={screenType} userXId={userXId} /> - <UniversityIcon - {...{university, university_class}} - /> + <UniversityIcon {...{university, university_class}} /> </View> </View> </View> diff --git a/src/components/profile/UniversityIcon.tsx b/src/components/profile/UniversityIcon.tsx index 1642b8f0..4cb1abe6 100644 --- a/src/components/profile/UniversityIcon.tsx +++ b/src/components/profile/UniversityIcon.tsx @@ -1,10 +1,11 @@ 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'; +import {getUniversityBadge, getUniversityClass, normalize} from '../../utils'; +import {UniversityType} from '../../types'; + export interface UniversityIconProps extends ViewProps { - university: Universities; + university: UniversityType; university_class?: number; imageStyle?: StyleProp<ImageStyle>; } @@ -18,22 +19,12 @@ const UniversityIcon: React.FC<UniversityIconProps> = ({ university_class, imageStyle, }) => { - var universityIcon; - switch (university) { - case 'Cornell': - universityIcon = require('../../assets/universities/cornell.png'); - break; - case 'Brown': - universityIcon = require('../../assets/universities/brown.png'); - break; - default: - universityIcon = require('../../assets/universities/brown.png'); - break; - } - return ( <View style={[styles.container, style]}> - <Image source={universityIcon} style={[styles.icon, imageStyle]} /> + <Image + source={getUniversityBadge(university, 'Crest')} + style={[styles.icon, imageStyle]} + /> {university_class && ( <Text style={styles.univClass}> {getUniversityClass(university_class)} diff --git a/src/components/search/SearchBar.tsx b/src/components/search/SearchBar.tsx index 5008ff53..4824b56f 100644 --- a/src/components/search/SearchBar.tsx +++ b/src/components/search/SearchBar.tsx @@ -1,22 +1,21 @@ -import React, {useState, useEffect} from 'react'; +import React, {useEffect, useState} from 'react'; import { + Keyboard, + NativeSyntheticEvent, StyleSheet, - TextInput, - TouchableOpacity, Text, - View, + TextInput, TextInputProps, - Keyboard, - NativeSyntheticEvent, TextInputSubmitEditingEventData, + TouchableOpacity, + View, } from 'react-native'; +import {normalize} from 'react-native-elements'; 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'; +import {getSearchSuggestions, SCREEN_HEIGHT} from '../../utils'; const AnimatedIcon = Animated.createAnimatedComponent(Icon); @@ -40,9 +39,7 @@ const SearchBar: React.FC<SearchBarProps> = ({ e.preventDefault(); Keyboard.dismiss(); }; - const {profile: {university = Universities.cornell} = {}} = useSelector( - (state: RootState) => state.user, - ); + const {university} = useSelector((state: RootState) => state.user.profile); const DEFAULT_PLACEHOLDER: string = 'Search'; // the list of suggestions to cycle through. TODO: get this from the backend const SEARCH_SUGGESTIONS: string[] = getSearchSuggestions(university); diff --git a/src/components/search/SearchResultCell.tsx b/src/components/search/SearchResultCell.tsx index 6ebe19a6..5a6ea110 100644 --- a/src/components/search/SearchResultCell.tsx +++ b/src/components/search/SearchResultCell.tsx @@ -10,7 +10,7 @@ import { CategoryPreviewType, ProfilePreviewType, ScreenType, - Universities, + UniversityType, UserType, } from '../../types'; import { @@ -46,9 +46,7 @@ const SearchResultsCell: React.FC<SearchResults> = ({ }) => { const [avatar, setAvatar] = useState<string | undefined>(undefined); - const {profile: {university = Universities.cornell} = {}} = useSelector( - (state: RootState) => state.user, - ); + const {university} = useSelector((state: RootState) => state.user.profile); useEffect(() => { (async () => { @@ -157,7 +155,7 @@ const SearchResultsCell: React.FC<SearchResults> = ({ <Image resizeMode="contain" source={ - category in Universities + category in UniversityType ? getUniversityBadge(university, 'Search') : searchIcon() } diff --git a/src/components/suggestedPeople/BadgesDropdown.tsx b/src/components/suggestedPeople/BadgesDropdown.tsx index f8e7bdaa..bc4e7a54 100644 --- a/src/components/suggestedPeople/BadgesDropdown.tsx +++ b/src/components/suggestedPeople/BadgesDropdown.tsx @@ -4,12 +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 {Universities, UniversityBadge} from '../../types'; +import {UniversityType, UniversityBadge} from '../../types'; import {UniversityIcon} from '..'; import {normalize, SCREEN_WIDTH} from '../../utils'; import UniversityIconClicked from './UniversityIconClicked'; interface BadgesDropdownProps { - university: Universities; + university: UniversityType; localBadges: { badge: UniversityBadge; img: string; diff --git a/src/components/suggestedPeople/UniversityIconClicked.tsx b/src/components/suggestedPeople/UniversityIconClicked.tsx index 7a0f3442..41e27c8e 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'; +import {UniversityType} from '../../types'; export interface UniversityIconClickedProps extends ViewProps { - university: Universities; + university: UniversityType; university_class?: number; imageStyle?: StyleProp<ImageStyle>; } @@ -20,10 +20,10 @@ const UniversityIconClicked: React.FC<UniversityIconClickedProps> = ({ }) => { var universityIcon; switch (university) { - case 'Cornell': + case UniversityType.Cornell: universityIcon = require('../../assets/universities/cornell-clicked.png'); break; - case 'Brown': + case UniversityType.Brown: universityIcon = require('../../assets/universities/brown-clicked.png'); break; default: diff --git a/src/constants/badges.ts b/src/constants/badges.ts index b56ac34e..5a7b4671 100644 --- a/src/constants/badges.ts +++ b/src/constants/badges.ts @@ -495,6 +495,7 @@ const _cornellBadges = [ ]; export const BADGE_DATA: BadgeDataType = { - Brown: _brownBadges, - Cornell: _cornellBadges, + 'Brown University': _brownBadges, + 'Cornell University': _cornellBadges, + '': [], }; diff --git a/src/screens/badge/BadgeScreenHeader.tsx b/src/screens/badge/BadgeScreenHeader.tsx index 746e05d9..46c0c1c8 100644 --- a/src/screens/badge/BadgeScreenHeader.tsx +++ b/src/screens/badge/BadgeScreenHeader.tsx @@ -1,10 +1,10 @@ import React from 'react'; import {Image, StyleSheet, Text, View} from 'react-native'; -import { Universities } from 'src/types'; +import {UniversityType} from 'src/types'; import {getUniversityBadge, normalize} from '../../utils'; interface BadgeScreenHeaderProps { - university: Universities; + university: UniversityType; } const BadgeScreenHeader: React.FC<BadgeScreenHeaderProps> = ({university}) => { @@ -12,9 +12,12 @@ const BadgeScreenHeader: React.FC<BadgeScreenHeaderProps> = ({university}) => { <View style={styles.container}> <Image source={getUniversityBadge(university, 'Crest')} + style={styles.icon} /> <View style={styles.universityTextContainer}> - <Text style={styles.universityText}>{university} University Badges</Text> + <Text style={styles.universityText}> + {university} University Badges + </Text> </View> <View style={styles.searchTextContainer}> <Text style={styles.searchText}> @@ -44,6 +47,10 @@ const styles = StyleSheet.create({ lineHeight: normalize(17.9), color: 'white', }, + icon: { + aspectRatio: 675 / 750, + height: 40, + }, }); export default BadgeScreenHeader; diff --git a/src/screens/badge/BadgeSelection.tsx b/src/screens/badge/BadgeSelection.tsx index 08cad020..deaefb52 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, Universities} from '../../types'; +import {BackgroundGradientType, UniversityType} from '../../types'; import {SCREEN_HEIGHT, StatusBarHeight} from '../../utils'; import BadgeList from './BadgeList'; import BadgeScreenHeader from './BadgeScreenHeader'; @@ -36,7 +36,7 @@ const BadgeSelection: React.FC<BadgeSelectionProps> = ({route}) => { const {editing} = route.params; const { user: {userId: loggedInUserId}, - profile: {university = Universities.brown}, + profile: {university}, } = useSelector((state: RootState) => state.user); const [selectedBadges, setSelectedBadges] = useState<string[]>([]); const dispatch = useDispatch(); diff --git a/src/screens/search/SearchScreen.tsx b/src/screens/search/SearchScreen.tsx index 7e84b372..683d25f4 100644 --- a/src/screens/search/SearchScreen.tsx +++ b/src/screens/search/SearchScreen.tsx @@ -22,7 +22,6 @@ import { ProfilePreviewType, ScreenType, SearchCategoryType, - Universities, } from '../../types'; import { getRecentlySearchedCategories, @@ -39,9 +38,9 @@ import { const SearchScreen: React.FC = () => { const {recentSearches} = useSelector((state: RootState) => state.taggUsers); - const {profile: {university = Universities.cornell} = {}} = useSelector( - (state: RootState) => state.user, - ); + const { + profile: {university}, + } = useSelector((state: RootState) => state.user); const [query, setQuery] = useState<string>(''); const [results, setResults] = useState<Array<any> | undefined>(undefined); const [recents, setRecents] = useState<Array<ProfilePreviewType>>( @@ -54,7 +53,7 @@ const SearchScreen: React.FC = () => { const top = Animated.useValue(-SCREEN_HEIGHT); const defaultButtons: SearchCategoryType[] = [21, 22, 23, 24].map((year) => ({ id: -1, - name: `${university} '${year}`, + name: `${university.split(' ')[0]} '${year}`, category: university, })); const [keyboardVisible, setKeyboardVisible] = React.useState( diff --git a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx index 76889657..336e8b35 100644 --- a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx +++ b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx @@ -4,9 +4,6 @@ import {FlatList, RefreshControl, StatusBar, ViewToken} from 'react-native'; import {useDispatch, useSelector, useStore} from 'react-redux'; import {Background, TabsGradient, TaggLoadingIndicator} from '../../components'; import {SP_PAGE_SIZE} from '../../constants'; -import {MainStack} from '../../routes'; -import MainStackScreen from '../../routes/main/MainStackScreen'; -import SuggestedPeopleOnboardingStackScreen from '../../routes/suggestedPeopleOnboarding/SuggestedPeopleOnboardingStackScreen'; import {getSuggestedPeople} from '../../services/SuggestedPeopleService'; import {cancelFriendRequest, resetScreenType} from '../../store/actions'; import {RootState} from '../../store/rootReducer'; @@ -22,15 +19,9 @@ import { getUserAsProfilePreviewType, handleAddFriend, } from '../../utils'; -import {SuggestedPeopleWelcomeScreen} from '../suggestedPeopleOnboarding'; import {userXInStore} from './../../utils/'; import SPBody from './SPBody'; -/** - * Bare bones for suggested people consisting of: - * * Image, title, name, username, add friend button [w/o functionality] - */ - const SuggestedPeopleScreen: React.FC = () => { const navigation = useNavigation(); const state: RootState = useStore().getState(); diff --git a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx index 378e69c5..e1bcb477 100644 --- a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx +++ b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx @@ -14,7 +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 {UniversityType} from '../../types'; import FrontArrow from '../../assets/icons/front-arrow.svg'; import {TaggSquareButton, UniversityIcon} from '../../components'; import TaggLoadingIndicator from '../../components/common/TaggLoadingIndicator'; @@ -52,7 +52,7 @@ const SuggestedPeopleUploadPictureScreen: React.FC<SuggestedPeopleUploadPictureS const navigation = useNavigation(); const { user: {userId: loggedInUserId}, - profile: {university = Universities.brown}, + profile: {university = UniversityType.brown}, } = useSelector((state: RootState) => state.user); useEffect(() => { diff --git a/src/types/types.ts b/src/types/types.ts index 8ec3ab52..94fc966e 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -273,4 +273,4 @@ export type ContactType = { }; export type UniversityBadgeType = 'Search' | 'Crest'; -export type BadgeDataType = Record<UniversityType, any>; +export type BadgeDataType = Record<UniversityType, any[]>; diff --git a/src/utils/common.ts b/src/utils/common.ts index fdc6b875..4f31af8e 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -1,7 +1,7 @@ import { ContactType, NotificationType, - Universities, + UniversityType, UniversityBadgeType, } from './../types/types'; import moment from 'moment'; @@ -139,7 +139,7 @@ export const extractContacts = async () => { }; export const getUniversityBadge = ( - university: Universities, + university: UniversityType, type: UniversityBadgeType, ) => { switch (type) { @@ -152,22 +152,22 @@ export const getUniversityBadge = ( } }; -const _searchPageIcon = (university: Universities) => { +const _searchPageIcon = (university: UniversityType) => { switch (university) { - case 'Cornell': + case UniversityType.Cornell: return require('../assets/universities/cornell-search.png'); - case 'Brown': + case UniversityType.Brown: return require('../assets/images/bwbadges.png'); default: return require('../assets/images/bwbadges.png'); } }; -const _crestIcon = (university: Universities) => { +const _crestIcon = (university: UniversityType) => { switch (university) { - case 'Cornell': + case UniversityType.Cornell: return require('../assets/universities/cornell.png'); - case 'Brown': + case UniversityType.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 aa9a7463..26f40b1b 100644 --- a/src/utils/search.ts +++ b/src/utils/search.ts @@ -1,12 +1,16 @@ import AsyncStorage from '@react-native-community/async-storage'; import {BADGE_DATA} from '../constants/badges'; -import {ProfilePreviewType, CategoryPreviewType, Universities} from '../types'; +import { + ProfilePreviewType, + CategoryPreviewType, + UniversityType, +} from '../types'; /* * Gets all possible search suggestions. */ -export const getSearchSuggestions = (university : Universities): string[] => { +export const getSearchSuggestions = (university: UniversityType): string[] => { const suggestions: string[] = []; for (const category of BADGE_DATA[university]) { for (const interest of category.data) { @@ -62,7 +66,9 @@ export const getRecentlySearchedUsers = async (): Promise< > => { try { const usersJSON = await AsyncStorage.getItem(recentlySearchedUsersKey); - if (usersJSON) return JSON.parse(usersJSON); + if (usersJSON) { + return JSON.parse(usersJSON); + } } catch (e) { console.log(e); } @@ -124,7 +130,9 @@ export const getRecentlySearchedCategories = async (): Promise< const categoriesJSON = await AsyncStorage.getItem( '@recently_searched_categories', ); - if (categoriesJSON) return JSON.parse(categoriesJSON); + if (categoriesJSON) { + return JSON.parse(categoriesJSON); + } } catch (e) { console.log(e); } |