diff options
author | Ivan Chen <ivan@tagg.id> | 2021-03-29 14:02:31 -0400 |
---|---|---|
committer | Ivan Chen <ivan@tagg.id> | 2021-03-29 14:02:31 -0400 |
commit | 04bf806285e7626644234b7febee2dad5c912f8d (patch) | |
tree | 9ed3ec581792d6a0e1135f02a1d4716890ca75fc /src | |
parent | e8324a7278a82d926acceedc10921f0b14e6d403 (diff) | |
parent | 4de1ebd43437712e28a89bb624c5b12afad45cc6 (diff) |
Merge branch 'master' into tma-701-private-account-banner
# Conflicts:
# src/constants/strings.ts
Diffstat (limited to 'src')
-rw-r--r-- | src/assets/badges/brown/acapella.png (renamed from src/assets/images/badges/acapella.png) | bin | 16688 -> 16688 bytes | |||
-rw-r--r-- | src/assets/badges/brown/alpha_chi_omega.png (renamed from src/assets/images/badges/alpha_chi_omega.png) | bin | 11237 -> 11237 bytes | |||
-rw-r--r-- | src/assets/badges/brown/alpha_delta_phi.png (renamed from src/assets/images/badges/alpha_delta_phi.png) | bin | 10962 -> 10962 bytes | |||
-rw-r--r-- | src/assets/badges/brown/baseball.png (renamed from src/assets/images/badges/baseball.png) | bin | 18096 -> 18096 bytes | |||
-rw-r--r-- | src/assets/badges/brown/basketball.png (renamed from src/assets/images/badges/basketball.png) | bin | 20516 -> 20516 bytes | |||
-rw-r--r-- | src/assets/badges/brown/beta_rho_pi.png (renamed from src/assets/images/badges/beta_rho_pi.png) | bin | 8682 -> 8682 bytes | |||
-rw-r--r-- | src/assets/badges/brown/black_in_business.png (renamed from src/assets/images/badges/black_in_business.png) | bin | 7632 -> 7632 bytes | |||
-rw-r--r-- | src/assets/badges/brown/brown_band.png (renamed from src/assets/images/badges/brown_band.png) | bin | 8388 -> 8388 bytes | |||
-rw-r--r-- | src/assets/badges/brown/brown_class_board.png (renamed from src/assets/images/badges/brown_class_board.png) | bin | 7095 -> 7095 bytes | |||
-rw-r--r-- | src/assets/badges/brown/brown_cs.png (renamed from src/assets/images/badges/brown_cs.png) | bin | 11517 -> 11517 bytes | |||
-rw-r--r-- | src/assets/badges/brown/brown_democrats.png (renamed from src/assets/images/badges/brown_democrats.png) | bin | 7661 -> 7661 bytes | |||
-rw-r--r-- | src/assets/badges/brown/brown_ep.png (renamed from src/assets/images/badges/brown_ep.png) | bin | 15555 -> 15555 bytes | |||
-rw-r--r-- | src/assets/badges/brown/brown_womens_collective.png (renamed from src/assets/images/badges/brown_womens_collective.png) | bin | 16495 -> 16495 bytes | |||
-rw-r--r-- | src/assets/badges/brown/bsu.png (renamed from src/assets/images/badges/bsu.png) | bin | 9209 -> 9209 bytes | |||
-rw-r--r-- | src/assets/badges/brown/buxton_international.png (renamed from src/assets/images/badges/buxton_international.png) | bin | 16050 -> 16050 bytes | |||
-rw-r--r-- | src/assets/badges/brown/delta_gamma.png (renamed from src/assets/images/badges/delta_gamma.png) | bin | 7840 -> 7840 bytes | |||
-rw-r--r-- | src/assets/badges/brown/delta_tau.png (renamed from src/assets/images/badges/delta_tau.png) | bin | 7971 -> 7971 bytes | |||
-rw-r--r-- | src/assets/badges/brown/fashion_at_brown.png (renamed from src/assets/images/badges/fashion_at_brown.png) | bin | 10204 -> 10204 bytes | |||
-rw-r--r-- | src/assets/badges/brown/field_hockey.png (renamed from src/assets/images/badges/field_hockey.png) | bin | 16665 -> 16665 bytes | |||
-rw-r--r-- | src/assets/badges/brown/football.png (renamed from src/assets/images/badges/football.png) | bin | 19113 -> 19113 bytes | |||
-rw-r--r-- | src/assets/badges/brown/gymnastics.png (renamed from src/assets/images/badges/gymnastics.png) | bin | 25165 -> 25165 bytes | |||
-rw-r--r-- | src/assets/badges/brown/hockey.png (renamed from src/assets/images/badges/hockey.png) | bin | 16274 -> 16274 bytes | |||
-rw-r--r-- | src/assets/badges/brown/impulse.png (renamed from src/assets/images/badges/impulse.png) | bin | 20809 -> 20809 bytes | |||
-rw-r--r-- | src/assets/badges/brown/kappa_delta.png (renamed from src/assets/images/badges/kappa_delta.png) | bin | 9561 -> 9561 bytes | |||
-rw-r--r-- | src/assets/badges/brown/lacrosse.png (renamed from src/assets/images/badges/lacrosse.png) | bin | 17631 -> 17631 bytes | |||
-rw-r--r-- | src/assets/badges/brown/latin_at_brown.png (renamed from src/assets/images/badges/latin_at_brown.png) | bin | 28842 -> 28842 bytes | |||
-rw-r--r-- | src/assets/badges/brown/soccer.png (renamed from src/assets/images/badges/soccer.png) | bin | 15982 -> 15982 bytes | |||
-rw-r--r-- | src/assets/badges/brown/softball.png (renamed from src/assets/images/badges/softball.png) | bin | 18096 -> 18096 bytes | |||
-rw-r--r-- | src/assets/badges/brown/tap.png (renamed from src/assets/images/badges/tap.png) | bin | 11489 -> 11489 bytes | |||
-rw-r--r-- | src/assets/badges/brown/tennis.png (renamed from src/assets/images/badges/tennis.png) | bin | 17695 -> 17695 bytes | |||
-rw-r--r-- | src/assets/badges/brown/theta_alpha.png (renamed from src/assets/images/badges/theta_alpha.png) | bin | 12104 -> 12104 bytes | |||
-rw-r--r-- | src/assets/badges/brown/track.png (renamed from src/assets/images/badges/track.png) | bin | 17837 -> 17837 bytes | |||
-rw-r--r-- | src/assets/badges/brown/ucs.png (renamed from src/assets/images/badges/ucs.png) | bin | 10132 -> 10132 bytes | |||
-rw-r--r-- | src/assets/badges/brown/volleyball.png (renamed from src/assets/images/badges/volleyball.png) | bin | 28161 -> 28161 bytes | |||
-rw-r--r-- | src/assets/badges/brown/women_in_business.png (renamed from src/assets/images/badges/women_in_business.png) | bin | 14868 -> 14868 bytes | |||
-rw-r--r-- | src/assets/badges/brown/zeta_delta_xi.png (renamed from src/assets/images/badges/zeta_delta_xi.png) | bin | 8952 -> 8952 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/acacia.png | bin | 0 -> 19048 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/acapella.png | bin | 0 -> 26719 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/aeta_phi_beta.png | bin | 0 -> 19159 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/alpha_chi_omega.png | bin | 0 -> 18872 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/alpha_delta_phi.png | bin | 0 -> 19727 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/alpha_epsilon_phi.png | bin | 0 -> 18327 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/alpha_gamma_rho.png | bin | 0 -> 17347 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/alpha_kappa_delta_phi.png | bin | 0 -> 18926 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/alpha_phi.png | bin | 0 -> 20092 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/alpha_phi_alpha.png | bin | 0 -> 19233 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/alpha_sigma_phi.png | bin | 0 -> 19506 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/alpha_xi_delta.png | bin | 0 -> 19590 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/alpha_zeta.png | bin | 0 -> 19359 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/alphs_epsilon_pi.png | bin | 0 -> 17404 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/baseball.png | bin | 0 -> 27181 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/basketball.png | bin | 0 -> 29348 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/beta_theta_pi.png | bin | 0 -> 16639 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/chi_phi.png | bin | 0 -> 20638 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/chi_psi.png | bin | 0 -> 19465 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/delta_chi.png | bin | 0 -> 20580 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/delta_delta_delta.png | bin | 0 -> 18569 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/delta_epsilon.png | bin | 0 -> 19017 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/delta_gamma.png | bin | 0 -> 17937 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/delta_kappa_epsilon.png | bin | 0 -> 18423 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/delta_sigma_theta.png | bin | 0 -> 20685 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/delta_tau_delta.png | bin | 0 -> 19065 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/fencing.png | bin | 0 -> 19601 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/field_hockey.png | bin | 0 -> 25805 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/football.png | bin | 0 -> 28256 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/golf.png | bin | 0 -> 21766 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/gymnastics.png | bin | 0 -> 32756 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/hockey.png | bin | 0 -> 25486 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/kappa_alpha_theta.png | bin | 0 -> 19332 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/kappa_delta.png | bin | 0 -> 18860 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/kappa_delta_rho.png | bin | 0 -> 18490 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/kappa_kappa_gamma.png | bin | 0 -> 16875 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/kappa_phi_lambda.png | bin | 0 -> 20095 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/kappa_sigma.png | bin | 0 -> 19153 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/la_unidad_latina,_lambda.png | bin | 0 -> 19803 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/lacrosse.png | bin | 0 -> 26596 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/lambda_chi_alpha.png | bin | 0 -> 19616 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/lambda_phi_epsilon_international.png | bin | 0 -> 19131 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/malik.png | bin | 0 -> 18061 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/phi_beta_phi.png | bin | 0 -> 18760 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/phi_beta_sigma.png | bin | 0 -> 19401 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/phi_delta_theta.png | bin | 0 -> 18604 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/phi_kappa_tau.png | bin | 0 -> 18109 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/phi_mu.png | bin | 0 -> 19782 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/phi_sigma_kappa.png | bin | 0 -> 19139 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/phi_sigma_sigma.png | bin | 0 -> 19683 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/pi_delta_psi.png | bin | 0 -> 17779 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/pi_kappa_alpha.png | bin | 0 -> 17333 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/pi_kappa_phi.png | bin | 0 -> 17748 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/polo.png | bin | 0 -> 23823 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/rowing.png | bin | 0 -> 22766 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/sailing.png | bin | 0 -> 27019 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/sigma_alpha_mu.png | bin | 0 -> 18971 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/sigma_chi.png | bin | 0 -> 20542 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/sigma_delta_tau.png | bin | 0 -> 18832 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/sigma_phi_society.png | bin | 0 -> 20016 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/sigma_pi.png | bin | 0 -> 17370 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/soccer.png | bin | 0 -> 26884 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/softball.png | bin | 0 -> 27201 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/squash.png | bin | 0 -> 28525 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/swimming_&_diving.png | bin | 0 -> 23492 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/tennis.png | bin | 0 -> 27249 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/theta_delta_chi.png | bin | 0 -> 20995 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/track_&_field.png | bin | 0 -> 26490 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/volleyball.png | bin | 0 -> 35938 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/wrestling.png | bin | 0 -> 23457 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/zeta_beta_tau.png | bin | 0 -> 17937 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/zeta_phi_beta.png | bin | 0 -> 19159 bytes | |||
-rw-r--r-- | src/assets/badges/cornell/zeta_psi.png | bin | 0 -> 19059 bytes | |||
-rw-r--r-- | src/assets/images/badges/brown_badge.png | bin | 843 -> 0 bytes | |||
-rw-r--r-- | src/assets/universities/cornell-clicked.png | bin | 0 -> 12362 bytes | |||
-rw-r--r-- | src/assets/universities/cornell-search.png | bin | 0 -> 12171 bytes | |||
-rw-r--r-- | src/assets/universities/cornell.png | bin | 0 -> 12353 bytes | |||
-rw-r--r-- | src/components/onboarding/UniversitySelection.tsx | 97 | ||||
-rw-r--r-- | src/components/onboarding/index.ts | 1 | ||||
-rw-r--r-- | src/components/profile/ProfileHeader.tsx | 7 | ||||
-rw-r--r-- | src/components/profile/ProfileMoreInfoDrawer.tsx | 8 | ||||
-rw-r--r-- | src/components/profile/UniversityIcon.tsx | 20 | ||||
-rw-r--r-- | src/components/search/SearchBar.tsx | 21 | ||||
-rw-r--r-- | src/components/search/SearchResultCell.tsx | 17 | ||||
-rw-r--r-- | src/components/suggestedPeople/BadgesDropdown.tsx | 8 | ||||
-rw-r--r-- | src/components/suggestedPeople/UniversityIconClicked.tsx | 9 | ||||
-rw-r--r-- | src/constants/badges.ts | 431 | ||||
-rw-r--r-- | src/constants/strings.ts | 7 | ||||
-rw-r--r-- | src/screens/badge/BadgeScreenHeader.tsx | 22 | ||||
-rw-r--r-- | src/screens/badge/BadgeSelection.tsx | 23 | ||||
-rw-r--r-- | src/screens/onboarding/Login.tsx | 31 | ||||
-rw-r--r-- | src/screens/onboarding/OnboardingStepThree.tsx | 100 | ||||
-rw-r--r-- | src/screens/profile/EditProfile.tsx | 38 | ||||
-rw-r--r-- | src/screens/search/SearchScreen.tsx | 7 | ||||
-rw-r--r-- | src/screens/search/mock.ts | 118 | ||||
-rw-r--r-- | src/screens/suggestedPeople/SPBody.tsx | 7 | ||||
-rw-r--r-- | src/screens/suggestedPeople/SuggestedPeopleScreen.tsx | 9 | ||||
-rw-r--r-- | src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx | 10 | ||||
-rw-r--r-- | src/services/UserProfileService.ts | 48 | ||||
-rw-r--r-- | src/store/initialStates.ts | 2 | ||||
-rw-r--r-- | src/types/types.ts | 18 | ||||
-rw-r--r-- | src/utils/common.ts | 43 | ||||
-rw-r--r-- | src/utils/search.ts | 18 |
139 files changed, 742 insertions, 378 deletions
diff --git a/src/assets/images/badges/acapella.png b/src/assets/badges/brown/acapella.png Binary files differindex c0adb885..c0adb885 100644 --- a/src/assets/images/badges/acapella.png +++ b/src/assets/badges/brown/acapella.png diff --git a/src/assets/images/badges/alpha_chi_omega.png b/src/assets/badges/brown/alpha_chi_omega.png Binary files differindex f6db85af..f6db85af 100644 --- a/src/assets/images/badges/alpha_chi_omega.png +++ b/src/assets/badges/brown/alpha_chi_omega.png diff --git a/src/assets/images/badges/alpha_delta_phi.png b/src/assets/badges/brown/alpha_delta_phi.png Binary files differindex 51186468..51186468 100644 --- a/src/assets/images/badges/alpha_delta_phi.png +++ b/src/assets/badges/brown/alpha_delta_phi.png diff --git a/src/assets/images/badges/baseball.png b/src/assets/badges/brown/baseball.png Binary files differindex 2a049c16..2a049c16 100644 --- a/src/assets/images/badges/baseball.png +++ b/src/assets/badges/brown/baseball.png diff --git a/src/assets/images/badges/basketball.png b/src/assets/badges/brown/basketball.png Binary files differindex 43d08803..43d08803 100644 --- a/src/assets/images/badges/basketball.png +++ b/src/assets/badges/brown/basketball.png diff --git a/src/assets/images/badges/beta_rho_pi.png b/src/assets/badges/brown/beta_rho_pi.png Binary files differindex 490acebb..490acebb 100644 --- a/src/assets/images/badges/beta_rho_pi.png +++ b/src/assets/badges/brown/beta_rho_pi.png diff --git a/src/assets/images/badges/black_in_business.png b/src/assets/badges/brown/black_in_business.png Binary files differindex 995ae652..995ae652 100644 --- a/src/assets/images/badges/black_in_business.png +++ b/src/assets/badges/brown/black_in_business.png diff --git a/src/assets/images/badges/brown_band.png b/src/assets/badges/brown/brown_band.png Binary files differindex bb21bcde..bb21bcde 100644 --- a/src/assets/images/badges/brown_band.png +++ b/src/assets/badges/brown/brown_band.png diff --git a/src/assets/images/badges/brown_class_board.png b/src/assets/badges/brown/brown_class_board.png Binary files differindex a04e0a63..a04e0a63 100644 --- a/src/assets/images/badges/brown_class_board.png +++ b/src/assets/badges/brown/brown_class_board.png diff --git a/src/assets/images/badges/brown_cs.png b/src/assets/badges/brown/brown_cs.png Binary files differindex 18c7165a..18c7165a 100644 --- a/src/assets/images/badges/brown_cs.png +++ b/src/assets/badges/brown/brown_cs.png diff --git a/src/assets/images/badges/brown_democrats.png b/src/assets/badges/brown/brown_democrats.png Binary files differindex ba828a2a..ba828a2a 100644 --- a/src/assets/images/badges/brown_democrats.png +++ b/src/assets/badges/brown/brown_democrats.png diff --git a/src/assets/images/badges/brown_ep.png b/src/assets/badges/brown/brown_ep.png Binary files differindex c4f381b2..c4f381b2 100644 --- a/src/assets/images/badges/brown_ep.png +++ b/src/assets/badges/brown/brown_ep.png diff --git a/src/assets/images/badges/brown_womens_collective.png b/src/assets/badges/brown/brown_womens_collective.png Binary files differindex 242188ab..242188ab 100644 --- a/src/assets/images/badges/brown_womens_collective.png +++ b/src/assets/badges/brown/brown_womens_collective.png diff --git a/src/assets/images/badges/bsu.png b/src/assets/badges/brown/bsu.png Binary files differindex 13838f32..13838f32 100644 --- a/src/assets/images/badges/bsu.png +++ b/src/assets/badges/brown/bsu.png diff --git a/src/assets/images/badges/buxton_international.png b/src/assets/badges/brown/buxton_international.png Binary files differindex 2b1d33a3..2b1d33a3 100644 --- a/src/assets/images/badges/buxton_international.png +++ b/src/assets/badges/brown/buxton_international.png diff --git a/src/assets/images/badges/delta_gamma.png b/src/assets/badges/brown/delta_gamma.png Binary files differindex 4f1aa675..4f1aa675 100644 --- a/src/assets/images/badges/delta_gamma.png +++ b/src/assets/badges/brown/delta_gamma.png diff --git a/src/assets/images/badges/delta_tau.png b/src/assets/badges/brown/delta_tau.png Binary files differindex 80d2a373..80d2a373 100644 --- a/src/assets/images/badges/delta_tau.png +++ b/src/assets/badges/brown/delta_tau.png diff --git a/src/assets/images/badges/fashion_at_brown.png b/src/assets/badges/brown/fashion_at_brown.png Binary files differindex a60b65fc..a60b65fc 100644 --- a/src/assets/images/badges/fashion_at_brown.png +++ b/src/assets/badges/brown/fashion_at_brown.png diff --git a/src/assets/images/badges/field_hockey.png b/src/assets/badges/brown/field_hockey.png Binary files differindex 7f08587e..7f08587e 100644 --- a/src/assets/images/badges/field_hockey.png +++ b/src/assets/badges/brown/field_hockey.png diff --git a/src/assets/images/badges/football.png b/src/assets/badges/brown/football.png Binary files differindex 1a5c0f4f..1a5c0f4f 100644 --- a/src/assets/images/badges/football.png +++ b/src/assets/badges/brown/football.png diff --git a/src/assets/images/badges/gymnastics.png b/src/assets/badges/brown/gymnastics.png Binary files differindex 64735dd2..64735dd2 100644 --- a/src/assets/images/badges/gymnastics.png +++ b/src/assets/badges/brown/gymnastics.png diff --git a/src/assets/images/badges/hockey.png b/src/assets/badges/brown/hockey.png Binary files differindex 2cfd547e..2cfd547e 100644 --- a/src/assets/images/badges/hockey.png +++ b/src/assets/badges/brown/hockey.png diff --git a/src/assets/images/badges/impulse.png b/src/assets/badges/brown/impulse.png Binary files differindex 68a73028..68a73028 100644 --- a/src/assets/images/badges/impulse.png +++ b/src/assets/badges/brown/impulse.png diff --git a/src/assets/images/badges/kappa_delta.png b/src/assets/badges/brown/kappa_delta.png Binary files differindex 7a3fdb25..7a3fdb25 100644 --- a/src/assets/images/badges/kappa_delta.png +++ b/src/assets/badges/brown/kappa_delta.png diff --git a/src/assets/images/badges/lacrosse.png b/src/assets/badges/brown/lacrosse.png Binary files differindex 67ac8f5e..67ac8f5e 100644 --- a/src/assets/images/badges/lacrosse.png +++ b/src/assets/badges/brown/lacrosse.png diff --git a/src/assets/images/badges/latin_at_brown.png b/src/assets/badges/brown/latin_at_brown.png Binary files differindex 515599f9..515599f9 100644 --- a/src/assets/images/badges/latin_at_brown.png +++ b/src/assets/badges/brown/latin_at_brown.png diff --git a/src/assets/images/badges/soccer.png b/src/assets/badges/brown/soccer.png Binary files differindex f2202510..f2202510 100644 --- a/src/assets/images/badges/soccer.png +++ b/src/assets/badges/brown/soccer.png diff --git a/src/assets/images/badges/softball.png b/src/assets/badges/brown/softball.png Binary files differindex 2a049c16..2a049c16 100644 --- a/src/assets/images/badges/softball.png +++ b/src/assets/badges/brown/softball.png diff --git a/src/assets/images/badges/tap.png b/src/assets/badges/brown/tap.png Binary files differindex e6db8470..e6db8470 100644 --- a/src/assets/images/badges/tap.png +++ b/src/assets/badges/brown/tap.png diff --git a/src/assets/images/badges/tennis.png b/src/assets/badges/brown/tennis.png Binary files differindex 358cb8c7..358cb8c7 100644 --- a/src/assets/images/badges/tennis.png +++ b/src/assets/badges/brown/tennis.png diff --git a/src/assets/images/badges/theta_alpha.png b/src/assets/badges/brown/theta_alpha.png Binary files differindex 323b538e..323b538e 100644 --- a/src/assets/images/badges/theta_alpha.png +++ b/src/assets/badges/brown/theta_alpha.png diff --git a/src/assets/images/badges/track.png b/src/assets/badges/brown/track.png Binary files differindex 5bcff810..5bcff810 100644 --- a/src/assets/images/badges/track.png +++ b/src/assets/badges/brown/track.png diff --git a/src/assets/images/badges/ucs.png b/src/assets/badges/brown/ucs.png Binary files differindex 1009dc9b..1009dc9b 100644 --- a/src/assets/images/badges/ucs.png +++ b/src/assets/badges/brown/ucs.png diff --git a/src/assets/images/badges/volleyball.png b/src/assets/badges/brown/volleyball.png Binary files differindex 915b467c..915b467c 100644 --- a/src/assets/images/badges/volleyball.png +++ b/src/assets/badges/brown/volleyball.png diff --git a/src/assets/images/badges/women_in_business.png b/src/assets/badges/brown/women_in_business.png Binary files differindex 1a504676..1a504676 100644 --- a/src/assets/images/badges/women_in_business.png +++ b/src/assets/badges/brown/women_in_business.png diff --git a/src/assets/images/badges/zeta_delta_xi.png b/src/assets/badges/brown/zeta_delta_xi.png Binary files differindex 7880d2b7..7880d2b7 100644 --- a/src/assets/images/badges/zeta_delta_xi.png +++ b/src/assets/badges/brown/zeta_delta_xi.png diff --git a/src/assets/badges/cornell/acacia.png b/src/assets/badges/cornell/acacia.png Binary files differnew file mode 100644 index 00000000..2dc2b383 --- /dev/null +++ b/src/assets/badges/cornell/acacia.png diff --git a/src/assets/badges/cornell/acapella.png b/src/assets/badges/cornell/acapella.png Binary files differnew file mode 100644 index 00000000..2b56c9ad --- /dev/null +++ b/src/assets/badges/cornell/acapella.png diff --git a/src/assets/badges/cornell/aeta_phi_beta.png b/src/assets/badges/cornell/aeta_phi_beta.png Binary files differnew file mode 100644 index 00000000..8816cac7 --- /dev/null +++ b/src/assets/badges/cornell/aeta_phi_beta.png diff --git a/src/assets/badges/cornell/alpha_chi_omega.png b/src/assets/badges/cornell/alpha_chi_omega.png Binary files differnew file mode 100644 index 00000000..304639ee --- /dev/null +++ b/src/assets/badges/cornell/alpha_chi_omega.png diff --git a/src/assets/badges/cornell/alpha_delta_phi.png b/src/assets/badges/cornell/alpha_delta_phi.png Binary files differnew file mode 100644 index 00000000..89311e10 --- /dev/null +++ b/src/assets/badges/cornell/alpha_delta_phi.png diff --git a/src/assets/badges/cornell/alpha_epsilon_phi.png b/src/assets/badges/cornell/alpha_epsilon_phi.png Binary files differnew file mode 100644 index 00000000..e35d1b24 --- /dev/null +++ b/src/assets/badges/cornell/alpha_epsilon_phi.png diff --git a/src/assets/badges/cornell/alpha_gamma_rho.png b/src/assets/badges/cornell/alpha_gamma_rho.png Binary files differnew file mode 100644 index 00000000..1b1f88ae --- /dev/null +++ b/src/assets/badges/cornell/alpha_gamma_rho.png diff --git a/src/assets/badges/cornell/alpha_kappa_delta_phi.png b/src/assets/badges/cornell/alpha_kappa_delta_phi.png Binary files differnew file mode 100644 index 00000000..cfc5b51c --- /dev/null +++ b/src/assets/badges/cornell/alpha_kappa_delta_phi.png diff --git a/src/assets/badges/cornell/alpha_phi.png b/src/assets/badges/cornell/alpha_phi.png Binary files differnew file mode 100644 index 00000000..dcf5d391 --- /dev/null +++ b/src/assets/badges/cornell/alpha_phi.png diff --git a/src/assets/badges/cornell/alpha_phi_alpha.png b/src/assets/badges/cornell/alpha_phi_alpha.png Binary files differnew file mode 100644 index 00000000..4dde66b3 --- /dev/null +++ b/src/assets/badges/cornell/alpha_phi_alpha.png diff --git a/src/assets/badges/cornell/alpha_sigma_phi.png b/src/assets/badges/cornell/alpha_sigma_phi.png Binary files differnew file mode 100644 index 00000000..a63a6850 --- /dev/null +++ b/src/assets/badges/cornell/alpha_sigma_phi.png diff --git a/src/assets/badges/cornell/alpha_xi_delta.png b/src/assets/badges/cornell/alpha_xi_delta.png Binary files differnew file mode 100644 index 00000000..47f8108c --- /dev/null +++ b/src/assets/badges/cornell/alpha_xi_delta.png diff --git a/src/assets/badges/cornell/alpha_zeta.png b/src/assets/badges/cornell/alpha_zeta.png Binary files differnew file mode 100644 index 00000000..1942f775 --- /dev/null +++ b/src/assets/badges/cornell/alpha_zeta.png diff --git a/src/assets/badges/cornell/alphs_epsilon_pi.png b/src/assets/badges/cornell/alphs_epsilon_pi.png Binary files differnew file mode 100644 index 00000000..0480edc2 --- /dev/null +++ b/src/assets/badges/cornell/alphs_epsilon_pi.png diff --git a/src/assets/badges/cornell/baseball.png b/src/assets/badges/cornell/baseball.png Binary files differnew file mode 100644 index 00000000..5643f9b8 --- /dev/null +++ b/src/assets/badges/cornell/baseball.png diff --git a/src/assets/badges/cornell/basketball.png b/src/assets/badges/cornell/basketball.png Binary files differnew file mode 100644 index 00000000..d2a8f04a --- /dev/null +++ b/src/assets/badges/cornell/basketball.png diff --git a/src/assets/badges/cornell/beta_theta_pi.png b/src/assets/badges/cornell/beta_theta_pi.png Binary files differnew file mode 100644 index 00000000..ae09a5b6 --- /dev/null +++ b/src/assets/badges/cornell/beta_theta_pi.png diff --git a/src/assets/badges/cornell/chi_phi.png b/src/assets/badges/cornell/chi_phi.png Binary files differnew file mode 100644 index 00000000..199213c9 --- /dev/null +++ b/src/assets/badges/cornell/chi_phi.png diff --git a/src/assets/badges/cornell/chi_psi.png b/src/assets/badges/cornell/chi_psi.png Binary files differnew file mode 100644 index 00000000..e9ad6540 --- /dev/null +++ b/src/assets/badges/cornell/chi_psi.png diff --git a/src/assets/badges/cornell/delta_chi.png b/src/assets/badges/cornell/delta_chi.png Binary files differnew file mode 100644 index 00000000..116c1ae7 --- /dev/null +++ b/src/assets/badges/cornell/delta_chi.png diff --git a/src/assets/badges/cornell/delta_delta_delta.png b/src/assets/badges/cornell/delta_delta_delta.png Binary files differnew file mode 100644 index 00000000..93d92ce3 --- /dev/null +++ b/src/assets/badges/cornell/delta_delta_delta.png diff --git a/src/assets/badges/cornell/delta_epsilon.png b/src/assets/badges/cornell/delta_epsilon.png Binary files differnew file mode 100644 index 00000000..2f7ef7ca --- /dev/null +++ b/src/assets/badges/cornell/delta_epsilon.png diff --git a/src/assets/badges/cornell/delta_gamma.png b/src/assets/badges/cornell/delta_gamma.png Binary files differnew file mode 100644 index 00000000..218ac7a6 --- /dev/null +++ b/src/assets/badges/cornell/delta_gamma.png diff --git a/src/assets/badges/cornell/delta_kappa_epsilon.png b/src/assets/badges/cornell/delta_kappa_epsilon.png Binary files differnew file mode 100644 index 00000000..12bd6e37 --- /dev/null +++ b/src/assets/badges/cornell/delta_kappa_epsilon.png diff --git a/src/assets/badges/cornell/delta_sigma_theta.png b/src/assets/badges/cornell/delta_sigma_theta.png Binary files differnew file mode 100644 index 00000000..d70d4220 --- /dev/null +++ b/src/assets/badges/cornell/delta_sigma_theta.png diff --git a/src/assets/badges/cornell/delta_tau_delta.png b/src/assets/badges/cornell/delta_tau_delta.png Binary files differnew file mode 100644 index 00000000..02011fc1 --- /dev/null +++ b/src/assets/badges/cornell/delta_tau_delta.png diff --git a/src/assets/badges/cornell/fencing.png b/src/assets/badges/cornell/fencing.png Binary files differnew file mode 100644 index 00000000..c2649533 --- /dev/null +++ b/src/assets/badges/cornell/fencing.png diff --git a/src/assets/badges/cornell/field_hockey.png b/src/assets/badges/cornell/field_hockey.png Binary files differnew file mode 100644 index 00000000..5405e392 --- /dev/null +++ b/src/assets/badges/cornell/field_hockey.png diff --git a/src/assets/badges/cornell/football.png b/src/assets/badges/cornell/football.png Binary files differnew file mode 100644 index 00000000..bcc44778 --- /dev/null +++ b/src/assets/badges/cornell/football.png diff --git a/src/assets/badges/cornell/golf.png b/src/assets/badges/cornell/golf.png Binary files differnew file mode 100644 index 00000000..92f8f394 --- /dev/null +++ b/src/assets/badges/cornell/golf.png diff --git a/src/assets/badges/cornell/gymnastics.png b/src/assets/badges/cornell/gymnastics.png Binary files differnew file mode 100644 index 00000000..2f6c4fae --- /dev/null +++ b/src/assets/badges/cornell/gymnastics.png diff --git a/src/assets/badges/cornell/hockey.png b/src/assets/badges/cornell/hockey.png Binary files differnew file mode 100644 index 00000000..0d1f1294 --- /dev/null +++ b/src/assets/badges/cornell/hockey.png diff --git a/src/assets/badges/cornell/kappa_alpha_theta.png b/src/assets/badges/cornell/kappa_alpha_theta.png Binary files differnew file mode 100644 index 00000000..dadc7f86 --- /dev/null +++ b/src/assets/badges/cornell/kappa_alpha_theta.png diff --git a/src/assets/badges/cornell/kappa_delta.png b/src/assets/badges/cornell/kappa_delta.png Binary files differnew file mode 100644 index 00000000..1f9b4e06 --- /dev/null +++ b/src/assets/badges/cornell/kappa_delta.png diff --git a/src/assets/badges/cornell/kappa_delta_rho.png b/src/assets/badges/cornell/kappa_delta_rho.png Binary files differnew file mode 100644 index 00000000..c32c7c70 --- /dev/null +++ b/src/assets/badges/cornell/kappa_delta_rho.png diff --git a/src/assets/badges/cornell/kappa_kappa_gamma.png b/src/assets/badges/cornell/kappa_kappa_gamma.png Binary files differnew file mode 100644 index 00000000..7583ebfd --- /dev/null +++ b/src/assets/badges/cornell/kappa_kappa_gamma.png diff --git a/src/assets/badges/cornell/kappa_phi_lambda.png b/src/assets/badges/cornell/kappa_phi_lambda.png Binary files differnew file mode 100644 index 00000000..f3dd4a49 --- /dev/null +++ b/src/assets/badges/cornell/kappa_phi_lambda.png diff --git a/src/assets/badges/cornell/kappa_sigma.png b/src/assets/badges/cornell/kappa_sigma.png Binary files differnew file mode 100644 index 00000000..7df2efa5 --- /dev/null +++ b/src/assets/badges/cornell/kappa_sigma.png diff --git a/src/assets/badges/cornell/la_unidad_latina,_lambda.png b/src/assets/badges/cornell/la_unidad_latina,_lambda.png Binary files differnew file mode 100644 index 00000000..f8017b9f --- /dev/null +++ b/src/assets/badges/cornell/la_unidad_latina,_lambda.png diff --git a/src/assets/badges/cornell/lacrosse.png b/src/assets/badges/cornell/lacrosse.png Binary files differnew file mode 100644 index 00000000..100ae33b --- /dev/null +++ b/src/assets/badges/cornell/lacrosse.png diff --git a/src/assets/badges/cornell/lambda_chi_alpha.png b/src/assets/badges/cornell/lambda_chi_alpha.png Binary files differnew file mode 100644 index 00000000..9360a226 --- /dev/null +++ b/src/assets/badges/cornell/lambda_chi_alpha.png diff --git a/src/assets/badges/cornell/lambda_phi_epsilon_international.png b/src/assets/badges/cornell/lambda_phi_epsilon_international.png Binary files differnew file mode 100644 index 00000000..f2721927 --- /dev/null +++ b/src/assets/badges/cornell/lambda_phi_epsilon_international.png diff --git a/src/assets/badges/cornell/malik.png b/src/assets/badges/cornell/malik.png Binary files differnew file mode 100644 index 00000000..ac221d24 --- /dev/null +++ b/src/assets/badges/cornell/malik.png diff --git a/src/assets/badges/cornell/phi_beta_phi.png b/src/assets/badges/cornell/phi_beta_phi.png Binary files differnew file mode 100644 index 00000000..8d46dd2e --- /dev/null +++ b/src/assets/badges/cornell/phi_beta_phi.png diff --git a/src/assets/badges/cornell/phi_beta_sigma.png b/src/assets/badges/cornell/phi_beta_sigma.png Binary files differnew file mode 100644 index 00000000..49e636dc --- /dev/null +++ b/src/assets/badges/cornell/phi_beta_sigma.png diff --git a/src/assets/badges/cornell/phi_delta_theta.png b/src/assets/badges/cornell/phi_delta_theta.png Binary files differnew file mode 100644 index 00000000..55ff15dc --- /dev/null +++ b/src/assets/badges/cornell/phi_delta_theta.png diff --git a/src/assets/badges/cornell/phi_kappa_tau.png b/src/assets/badges/cornell/phi_kappa_tau.png Binary files differnew file mode 100644 index 00000000..b1c01ab1 --- /dev/null +++ b/src/assets/badges/cornell/phi_kappa_tau.png diff --git a/src/assets/badges/cornell/phi_mu.png b/src/assets/badges/cornell/phi_mu.png Binary files differnew file mode 100644 index 00000000..0049a584 --- /dev/null +++ b/src/assets/badges/cornell/phi_mu.png diff --git a/src/assets/badges/cornell/phi_sigma_kappa.png b/src/assets/badges/cornell/phi_sigma_kappa.png Binary files differnew file mode 100644 index 00000000..9249db92 --- /dev/null +++ b/src/assets/badges/cornell/phi_sigma_kappa.png diff --git a/src/assets/badges/cornell/phi_sigma_sigma.png b/src/assets/badges/cornell/phi_sigma_sigma.png Binary files differnew file mode 100644 index 00000000..889dc14f --- /dev/null +++ b/src/assets/badges/cornell/phi_sigma_sigma.png diff --git a/src/assets/badges/cornell/pi_delta_psi.png b/src/assets/badges/cornell/pi_delta_psi.png Binary files differnew file mode 100644 index 00000000..164c4483 --- /dev/null +++ b/src/assets/badges/cornell/pi_delta_psi.png diff --git a/src/assets/badges/cornell/pi_kappa_alpha.png b/src/assets/badges/cornell/pi_kappa_alpha.png Binary files differnew file mode 100644 index 00000000..08a3153e --- /dev/null +++ b/src/assets/badges/cornell/pi_kappa_alpha.png diff --git a/src/assets/badges/cornell/pi_kappa_phi.png b/src/assets/badges/cornell/pi_kappa_phi.png Binary files differnew file mode 100644 index 00000000..0a1dee58 --- /dev/null +++ b/src/assets/badges/cornell/pi_kappa_phi.png diff --git a/src/assets/badges/cornell/polo.png b/src/assets/badges/cornell/polo.png Binary files differnew file mode 100644 index 00000000..05758440 --- /dev/null +++ b/src/assets/badges/cornell/polo.png diff --git a/src/assets/badges/cornell/rowing.png b/src/assets/badges/cornell/rowing.png Binary files differnew file mode 100644 index 00000000..28e4436f --- /dev/null +++ b/src/assets/badges/cornell/rowing.png diff --git a/src/assets/badges/cornell/sailing.png b/src/assets/badges/cornell/sailing.png Binary files differnew file mode 100644 index 00000000..ea8d3a11 --- /dev/null +++ b/src/assets/badges/cornell/sailing.png diff --git a/src/assets/badges/cornell/sigma_alpha_mu.png b/src/assets/badges/cornell/sigma_alpha_mu.png Binary files differnew file mode 100644 index 00000000..d05a8fed --- /dev/null +++ b/src/assets/badges/cornell/sigma_alpha_mu.png diff --git a/src/assets/badges/cornell/sigma_chi.png b/src/assets/badges/cornell/sigma_chi.png Binary files differnew file mode 100644 index 00000000..0ca28bb3 --- /dev/null +++ b/src/assets/badges/cornell/sigma_chi.png diff --git a/src/assets/badges/cornell/sigma_delta_tau.png b/src/assets/badges/cornell/sigma_delta_tau.png Binary files differnew file mode 100644 index 00000000..f0863d8d --- /dev/null +++ b/src/assets/badges/cornell/sigma_delta_tau.png diff --git a/src/assets/badges/cornell/sigma_phi_society.png b/src/assets/badges/cornell/sigma_phi_society.png Binary files differnew file mode 100644 index 00000000..478922c8 --- /dev/null +++ b/src/assets/badges/cornell/sigma_phi_society.png diff --git a/src/assets/badges/cornell/sigma_pi.png b/src/assets/badges/cornell/sigma_pi.png Binary files differnew file mode 100644 index 00000000..c5cb5ce3 --- /dev/null +++ b/src/assets/badges/cornell/sigma_pi.png diff --git a/src/assets/badges/cornell/soccer.png b/src/assets/badges/cornell/soccer.png Binary files differnew file mode 100644 index 00000000..e17d76de --- /dev/null +++ b/src/assets/badges/cornell/soccer.png diff --git a/src/assets/badges/cornell/softball.png b/src/assets/badges/cornell/softball.png Binary files differnew file mode 100644 index 00000000..fda13c9a --- /dev/null +++ b/src/assets/badges/cornell/softball.png diff --git a/src/assets/badges/cornell/squash.png b/src/assets/badges/cornell/squash.png Binary files differnew file mode 100644 index 00000000..5d6c3f0e --- /dev/null +++ b/src/assets/badges/cornell/squash.png diff --git a/src/assets/badges/cornell/swimming_&_diving.png b/src/assets/badges/cornell/swimming_&_diving.png Binary files differnew file mode 100644 index 00000000..aed8f37e --- /dev/null +++ b/src/assets/badges/cornell/swimming_&_diving.png diff --git a/src/assets/badges/cornell/tennis.png b/src/assets/badges/cornell/tennis.png Binary files differnew file mode 100644 index 00000000..24ea81e4 --- /dev/null +++ b/src/assets/badges/cornell/tennis.png diff --git a/src/assets/badges/cornell/theta_delta_chi.png b/src/assets/badges/cornell/theta_delta_chi.png Binary files differnew file mode 100644 index 00000000..7a2bf4e8 --- /dev/null +++ b/src/assets/badges/cornell/theta_delta_chi.png diff --git a/src/assets/badges/cornell/track_&_field.png b/src/assets/badges/cornell/track_&_field.png Binary files differnew file mode 100644 index 00000000..05644dc4 --- /dev/null +++ b/src/assets/badges/cornell/track_&_field.png diff --git a/src/assets/badges/cornell/volleyball.png b/src/assets/badges/cornell/volleyball.png Binary files differnew file mode 100644 index 00000000..9ea08622 --- /dev/null +++ b/src/assets/badges/cornell/volleyball.png diff --git a/src/assets/badges/cornell/wrestling.png b/src/assets/badges/cornell/wrestling.png Binary files differnew file mode 100644 index 00000000..28892124 --- /dev/null +++ b/src/assets/badges/cornell/wrestling.png diff --git a/src/assets/badges/cornell/zeta_beta_tau.png b/src/assets/badges/cornell/zeta_beta_tau.png Binary files differnew file mode 100644 index 00000000..4572bf01 --- /dev/null +++ b/src/assets/badges/cornell/zeta_beta_tau.png diff --git a/src/assets/badges/cornell/zeta_phi_beta.png b/src/assets/badges/cornell/zeta_phi_beta.png Binary files differnew file mode 100644 index 00000000..8816cac7 --- /dev/null +++ b/src/assets/badges/cornell/zeta_phi_beta.png diff --git a/src/assets/badges/cornell/zeta_psi.png b/src/assets/badges/cornell/zeta_psi.png Binary files differnew file mode 100644 index 00000000..ad245931 --- /dev/null +++ b/src/assets/badges/cornell/zeta_psi.png diff --git a/src/assets/images/badges/brown_badge.png b/src/assets/images/badges/brown_badge.png Binary files differdeleted file mode 100644 index bcffb6e3..00000000 --- a/src/assets/images/badges/brown_badge.png +++ /dev/null diff --git a/src/assets/universities/cornell-clicked.png b/src/assets/universities/cornell-clicked.png Binary files differnew file mode 100644 index 00000000..d6450b29 --- /dev/null +++ b/src/assets/universities/cornell-clicked.png diff --git a/src/assets/universities/cornell-search.png b/src/assets/universities/cornell-search.png Binary files differnew file mode 100644 index 00000000..ce41e7bc --- /dev/null +++ b/src/assets/universities/cornell-search.png diff --git a/src/assets/universities/cornell.png b/src/assets/universities/cornell.png Binary files differnew file mode 100644 index 00000000..bf15f8b2 --- /dev/null +++ b/src/assets/universities/cornell.png diff --git a/src/components/onboarding/UniversitySelection.tsx b/src/components/onboarding/UniversitySelection.tsx new file mode 100644 index 00000000..92bec47f --- /dev/null +++ b/src/components/onboarding/UniversitySelection.tsx @@ -0,0 +1,97 @@ +import React from 'react'; +import {Image, ImageSourcePropType, StyleSheet, Text, View} from 'react-native'; +import {TouchableOpacity} from 'react-native-gesture-handler'; +import {UniversityType} from '../../types'; +import {normalize} from '../../utils'; + +interface UniversitySelectionProps { + selected: UniversityType; + setSelected: (selected: UniversityType) => void; +} + +const UniversitySelection: React.FC<UniversitySelectionProps> = ({ + selected, + setSelected, +}) => { + const crestData = [ + { + imagePath: require('../../assets/universities/brown.png'), + title: 'Brown', + key: UniversityType.Brown, + }, + { + imagePath: require('../../assets/universities/cornell.png'), + title: 'Cornell', + key: UniversityType.Cornell, + }, + // { + // imagePath: require('../../assets/universities/harvard.png'), + // title: 'Harvard', + // key: UniversityType.Harvard, + // }, + ]; + const renderButton = ( + imagePath: ImageSourcePropType, + title: string, + key: UniversityType, + ) => ( + <TouchableOpacity + style={ + selected === key ? styles.crestContainerSelected : styles.crestContainer + } + onPress={() => setSelected(key)}> + <Image source={imagePath} style={styles.crest} /> + <Text style={styles.crestLabel}>{title}</Text> + </TouchableOpacity> + ); + return ( + <> + <Text style={styles.title}>University Badge</Text> + <View style={styles.container}> + {crestData.map((data) => + renderButton(data.imagePath, data.title, data.key), + )} + </View> + </> + ); +}; + +const styles = StyleSheet.create({ + title: { + color: 'white', + fontSize: normalize(15), + lineHeight: normalize(18), + fontWeight: '700', + marginBottom: 10, + }, + container: { + flexDirection: 'row', + justifyContent: 'space-around', + marginBottom: 10, + }, + crest: { + height: normalize(25), + aspectRatio: 31 / 38, + marginBottom: 5, + }, + crestContainer: { + alignItems: 'center', + padding: 10, + }, + crestContainerSelected: { + alignItems: 'center', + borderWidth: 2, + borderColor: 'white', + borderRadius: 5, + padding: 8, + backgroundColor: '#fff2', + }, + crestLabel: { + color: 'white', + fontSize: normalize(15), + lineHeight: normalize(18), + fontWeight: '500', + }, +}); + +export default UniversitySelection; diff --git a/src/components/onboarding/index.ts b/src/components/onboarding/index.ts index b790933f..fdb85090 100644 --- a/src/components/onboarding/index.ts +++ b/src/components/onboarding/index.ts @@ -10,3 +10,4 @@ export {default as TaggDropDown} from './TaggDropDown'; export {default as SocialMediaLinker} from './SocialMediaLinker'; export {default as LinkSocialMedia} from './LinkSocialMedia'; export {default as MomentCategory} from './MomentCategory'; +export {default as UniversitySelection} from './UniversitySelection'; diff --git a/src/components/profile/ProfileHeader.tsx b/src/components/profile/ProfileHeader.tsx index b5dda399..2c623c2b 100644 --- a/src/components/profile/ProfileHeader.tsx +++ b/src/components/profile/ProfileHeader.tsx @@ -24,7 +24,7 @@ const ProfileHeader: React.FC<ProfileHeaderProps> = ({ handleBlockUnblock, }) => { const { - profile: {name = '', university_class = 2021} = {}, + profile: {name = '', university_class = 2021, university}, user: {username: userXName = ''}, } = useSelector((state: RootState) => userXId ? state.userX[screenType][userXId] : state.user, @@ -59,10 +59,7 @@ const ProfileHeader: React.FC<ProfileHeaderProps> = ({ )} <View style={styles.friendsAndUniversity}> <FriendsCount screenType={screenType} userXId={userXId} /> - <UniversityIcon - university="brown" - university_class={university_class} - /> + <UniversityIcon {...{university, university_class}} /> </View> </View> </View> diff --git a/src/components/profile/ProfileMoreInfoDrawer.tsx b/src/components/profile/ProfileMoreInfoDrawer.tsx index 2fec5cca..a77a2e84 100644 --- a/src/components/profile/ProfileMoreInfoDrawer.tsx +++ b/src/components/profile/ProfileMoreInfoDrawer.tsx @@ -24,11 +24,9 @@ const ProfileMoreInfoDrawer: React.FC<ProfileMoreInfoDrawerProps> = (props) => { const {setIsOpen, userXId, isBlocked, handleBlockUnblock, userXName} = props; const { user: {userId, username}, - } = useSelector((state: RootState) => state.user); + profile, + } = useSelector((state: RootState) => state?.user); const isOwnProfile = !userXId || userXName === username; - const {suggested_people_linked} = useSelector( - (state: RootState) => state.user.profile, - ); const goToEditProfile = () => { navigation.push('EditProfile', { @@ -39,7 +37,7 @@ const ProfileMoreInfoDrawer: React.FC<ProfileMoreInfoDrawerProps> = (props) => { }; const goToUpdateSPProfile = () => { - if (suggested_people_linked === 0) { + if (profile.suggested_people_linked === 0) { Alert.alert(ERROR_ATTEMPT_EDIT_SP); } else { // Sending undefined for updatedSelectedBadges to mark that there was no update yet diff --git a/src/components/profile/UniversityIcon.tsx b/src/components/profile/UniversityIcon.tsx index 48cfe3dc..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 {getUniversityBadge, getUniversityClass, normalize} from '../../utils'; +import {UniversityType} from '../../types'; export interface UniversityIconProps extends ViewProps { - university: string; + university: UniversityType; university_class?: number; imageStyle?: StyleProp<ImageStyle>; } @@ -18,19 +19,12 @@ const UniversityIcon: React.FC<UniversityIconProps> = ({ university_class, imageStyle, }) => { - var universityIcon; - switch (university) { - 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 62bda77e..4824b56f 100644 --- a/src/components/search/SearchBar.tsx +++ b/src/components/search/SearchBar.tsx @@ -1,19 +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 {getSearchSuggestions, SCREEN_HEIGHT} from '../../utils'; const AnimatedIcon = Animated.createAnimatedComponent(Icon); @@ -37,9 +39,10 @@ const SearchBar: React.FC<SearchBarProps> = ({ e.preventDefault(); Keyboard.dismiss(); }; + 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(); + 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 9a8216e5..5a6ea110 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, + UniversityType, UserType, } from '../../types'; import { addCategoryToRecentlySearched, addUserToRecentlySearched, + getUniversityBadge, normalize, SCREEN_WIDTH, } from '../../utils'; @@ -43,6 +45,9 @@ const SearchResultsCell: React.FC<SearchResults> = ({ loggedInUser, }) => { const [avatar, setAvatar] = useState<string | undefined>(undefined); + + const {university} = useSelector((state: RootState) => state.user.profile); + useEffect(() => { (async () => { if (thumbnail_url !== undefined) { @@ -143,17 +148,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()} + source={ + category in UniversityType + ? getUniversityBadge(university, 'Search') + : searchIcon() + } style={styles.categoryImage} /> </View> diff --git a/src/components/suggestedPeople/BadgesDropdown.tsx b/src/components/suggestedPeople/BadgesDropdown.tsx index 99c03057..bc4e7a54 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 {UniversityType, UniversityBadge} from '../../types'; import {UniversityIcon} from '..'; import {normalize, SCREEN_WIDTH} from '../../utils'; import UniversityIconClicked from './UniversityIconClicked'; interface BadgesDropdownProps { + university: UniversityType; 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" + university={university} style={styles.universityIconContainer} imageStyle={{width: normalize(31), height: normalize(38)}} /> ) : ( <UniversityIcon - university="brown" + 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 bde4e17f..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 {UniversityType} from '../../types'; export interface UniversityIconClickedProps extends ViewProps { - university: string; + university: UniversityType; university_class?: number; imageStyle?: StyleProp<ImageStyle>; } @@ -20,7 +20,10 @@ const UniversityIconClicked: React.FC<UniversityIconClickedProps> = ({ }) => { var universityIcon; switch (university) { - case 'brown': + case UniversityType.Cornell: + universityIcon = require('../../assets/universities/cornell-clicked.png'); + break; + 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 6dc7ccf2..93d0eec0 100644 --- a/src/constants/badges.ts +++ b/src/constants/badges.ts @@ -1,93 +1,171 @@ -export const _badgeImages = { - acapella: require('../assets/images/badges/acapella.png'), - alpha_chi_omega: require('../assets/images/badges/alpha_chi_omega.png'), - alpha_delta_phi: require('../assets/images/badges/alpha_delta_phi.png'), - baseball: require('../assets/images/badges/baseball.png'), - basketball: require('../assets/images/badges/basketball.png'), - beta_rho_pi: require('../assets/images/badges/beta_rho_pi.png'), - black_in_business: require('../assets/images/badges/black_in_business.png'), - brown_band: require('../assets/images/badges/brown_band.png'), - brown_class_board: require('../assets/images/badges/brown_class_board.png'), - brown_cs: require('../assets/images/badges/brown_cs.png'), - brown_democrats: require('../assets/images/badges/brown_democrats.png'), - brown_ep: require('../assets/images/badges/brown_ep.png'), - brown_womens_collective: require('../assets/images/badges/brown_womens_collective.png'), - bsu: require('../assets/images/badges/bsu.png'), - buxton_international: require('../assets/images/badges/buxton_international.png'), - delta_gamma: require('../assets/images/badges/delta_gamma.png'), - delta_tau: require('../assets/images/badges/delta_tau.png'), - fashion_at_brown: require('../assets/images/badges/fashion_at_brown.png'), - field_hockey: require('../assets/images/badges/field_hockey.png'), - football: require('../assets/images/badges/football.png'), - gymnastics: require('../assets/images/badges/gymnastics.png'), - hockey: require('../assets/images/badges/hockey.png'), - impulse: require('../assets/images/badges/impulse.png'), - kappa_delta: require('../assets/images/badges/kappa_delta.png'), - lacrosse: require('../assets/images/badges/lacrosse.png'), - latin_at_brown: require('../assets/images/badges/latin_at_brown.png'), - soccer: require('../assets/images/badges/soccer.png'), - softball: require('../assets/images/badges/softball.png'), - tap: require('../assets/images/badges/tap.png'), - tennis: require('../assets/images/badges/tennis.png'), - theta_alpha: require('../assets/images/badges/theta_alpha.png'), - track: require('../assets/images/badges/track.png'), - ucs: require('../assets/images/badges/ucs.png'), - volleyball: require('../assets/images/badges/volleyball.png'), - women_in_business: require('../assets/images/badges/women_in_business.png'), - zeta_delta_xi: require('../assets/images/badges/zeta_delta_xi.png'), +import {BadgeDataType} from '../types'; + +export const _brownBadgeImages = { + acapella: require('../assets/badges/brown/acapella.png'), + alpha_chi_omega: require('../assets/badges/brown/alpha_chi_omega.png'), + alpha_delta_phi: require('../assets/badges/brown/alpha_delta_phi.png'), + baseball: require('../assets/badges/brown/baseball.png'), + basketball: require('../assets/badges/brown/basketball.png'), + beta_rho_pi: require('../assets/badges/brown/beta_rho_pi.png'), + black_in_business: require('../assets/badges/brown/black_in_business.png'), + brown_band: require('../assets/badges/brown/brown_band.png'), + brown_class_board: require('../assets/badges/brown/brown_class_board.png'), + brown_cs: require('../assets/badges/brown/brown_cs.png'), + brown_democrats: require('../assets/badges/brown/brown_democrats.png'), + brown_ep: require('../assets/badges/brown/brown_ep.png'), + brown_womens_collective: require('../assets/badges/brown/brown_womens_collective.png'), + bsu: require('../assets/badges/brown/bsu.png'), + buxton_international: require('../assets/badges/brown/buxton_international.png'), + delta_gamma: require('../assets/badges/brown/delta_gamma.png'), + delta_tau: require('../assets/badges/brown/delta_tau.png'), + fashion_at_brown: require('../assets/badges/brown/fashion_at_brown.png'), + field_hockey: require('../assets/badges/brown/field_hockey.png'), + football: require('../assets/badges/brown/football.png'), + gymnastics: require('../assets/badges/brown/gymnastics.png'), + hockey: require('../assets/badges/brown/hockey.png'), + impulse: require('../assets/badges/brown/impulse.png'), + kappa_delta: require('../assets/badges/brown/kappa_delta.png'), + lacrosse: require('../assets/badges/brown/lacrosse.png'), + latin_at_brown: require('../assets/badges/brown/latin_at_brown.png'), + soccer: require('../assets/badges/brown/soccer.png'), + softball: require('../assets/badges/brown/softball.png'), + tap: require('../assets/badges/brown/tap.png'), + tennis: require('../assets/badges/brown/tennis.png'), + theta_alpha: require('../assets/badges/brown/theta_alpha.png'), + track: require('../assets/badges/brown/track.png'), + ucs: require('../assets/badges/brown/ucs.png'), + volleyball: require('../assets/badges/brown/volleyball.png'), + women_in_business: require('../assets/badges/brown/women_in_business.png'), + zeta_delta_xi: require('../assets/badges/brown/zeta_delta_xi.png'), +}; + +export const _cornellBadgeImages = { + acacia: require('../assets/badges/cornell/acacia.png'), + acapella: require('../assets/badges/cornell/acapella.png'), + aeta_phi_beta: require('../assets/badges/cornell/aeta_phi_beta.png'), + alpha_chi_omega: require('../assets/badges/cornell/alpha_chi_omega.png'), + alpha_delta_phi: require('../assets/badges/cornell/alpha_delta_phi.png'), + alpha_epsilon_phi: require('../assets/badges/cornell/alpha_epsilon_phi.png'), + alpha_gamma_rho: require('../assets/badges/cornell/alpha_gamma_rho.png'), + alpha_kappa_delta_phi: require('../assets/badges/cornell/alpha_kappa_delta_phi.png'), + alpha_phi_alpha: require('../assets/badges/cornell/alpha_phi_alpha.png'), + alpha_phi: require('../assets/badges/cornell/alpha_phi.png'), + alpha_sigma_phi: require('../assets/badges/cornell/alpha_sigma_phi.png'), + alpha_xi_delta: require('../assets/badges/cornell/alpha_xi_delta.png'), + alpha_zeta: require('../assets/badges/cornell/alpha_zeta.png'), + alphs_epsilon_pi: require('../assets/badges/cornell/alphs_epsilon_pi.png'), + baseball: require('../assets/badges/cornell/baseball.png'), + basketball: require('../assets/badges/cornell/basketball.png'), + beta_theta_pi: require('../assets/badges/cornell/beta_theta_pi.png'), + chi_phi: require('../assets/badges/cornell/chi_phi.png'), + chi_psi: require('../assets/badges/cornell/chi_psi.png'), + delta_chi: require('../assets/badges/cornell/delta_chi.png'), + delta_delta_delta: require('../assets/badges/cornell/delta_delta_delta.png'), + delta_epsilon: require('../assets/badges/cornell/delta_epsilon.png'), + delta_gamma: require('../assets/badges/cornell/delta_gamma.png'), + delta_kappa_epsilon: require('../assets/badges/cornell/delta_kappa_epsilon.png'), + delta_sigma_theta: require('../assets/badges/cornell/delta_sigma_theta.png'), + delta_tau_delta: require('../assets/badges/cornell/delta_tau_delta.png'), + fencing: require('../assets/badges/cornell/fencing.png'), + field_hockey: require('../assets/badges/cornell/field_hockey.png'), + football: require('../assets/badges/cornell/football.png'), + golf: require('../assets/badges/cornell/golf.png'), + gymnastics: require('../assets/badges/cornell/gymnastics.png'), + hockey: require('../assets/badges/cornell/hockey.png'), + kappa_alpha_theta: require('../assets/badges/cornell/kappa_alpha_theta.png'), + kappa_delta_rho: require('../assets/badges/cornell/kappa_delta_rho.png'), + kappa_delta: require('../assets/badges/cornell/kappa_delta.png'), + kappa_kappa_gamma: require('../assets/badges/cornell/kappa_kappa_gamma.png'), + kappa_phi_lambda: require('../assets/badges/cornell/kappa_phi_lambda.png'), + kappa_sigma: require('../assets/badges/cornell/kappa_sigma.png'), + la_unidad_latina_lambda: require('../assets/badges/cornell/la_unidad_latina,_lambda.png'), + lacrosse: require('../assets/badges/cornell/lacrosse.png'), + lambda_chi_alpha: require('../assets/badges/cornell/lambda_chi_alpha.png'), + lambda_phi_epsilon_international: require('../assets/badges/cornell/lambda_phi_epsilon_international.png'), + malik: require('../assets/badges/cornell/malik.png'), + phi_beta_phi: require('../assets/badges/cornell/phi_beta_phi.png'), + phi_beta_sigma: require('../assets/badges/cornell/phi_beta_sigma.png'), + phi_delta_theta: require('../assets/badges/cornell/phi_delta_theta.png'), + phi_kappa_tau: require('../assets/badges/cornell/phi_kappa_tau.png'), + phi_mu: require('../assets/badges/cornell/phi_mu.png'), + phi_sigma_kappa: require('../assets/badges/cornell/phi_sigma_kappa.png'), + phi_sigma_sigma: require('../assets/badges/cornell/phi_sigma_sigma.png'), + pi_delta_psi: require('../assets/badges/cornell/pi_delta_psi.png'), + pi_kappa_alpha: require('../assets/badges/cornell/pi_kappa_alpha.png'), + pi_kappa_phi: require('../assets/badges/cornell/pi_kappa_phi.png'), + polo: require('../assets/badges/cornell/polo.png'), + rowing: require('../assets/badges/cornell/rowing.png'), + sailing: require('../assets/badges/cornell/sailing.png'), + sigma_alpha_mu: require('../assets/badges/cornell/sigma_alpha_mu.png'), + sigma_chi: require('../assets/badges/cornell/sigma_chi.png'), + sigma_delta_tau: require('../assets/badges/cornell/sigma_delta_tau.png'), + sigma_phi_society: require('../assets/badges/cornell/sigma_phi_society.png'), + sigma_pi: require('../assets/badges/cornell/sigma_pi.png'), + soccer: require('../assets/badges/cornell/soccer.png'), + softball: require('../assets/badges/cornell/softball.png'), + squash: require('../assets/badges/cornell/squash.png'), + swimming_and_diving: require('../assets/badges/cornell/swimming_&_diving.png'), + tennis: require('../assets/badges/cornell/tennis.png'), + theta_delta_chi: require('../assets/badges/cornell/theta_delta_chi.png'), + track_and_field: require('../assets/badges/cornell/track_&_field.png'), + volleyball: require('../assets/badges/cornell/volleyball.png'), + wrestling: require('../assets/badges/cornell/wrestling.png'), + zeta_beta_tau: require('../assets/badges/cornell/zeta_beta_tau.png'), + zeta_psi: require('../assets/badges/cornell/zeta_psi.png'), + zeta_phi_beta: require('../assets/badges/cornell/zeta_phi_beta.png'), }; -export const BADGE_DATA = [ +const _brownBadges = [ { title: 'Athletics', data: [ { badgeName: 'Brown Football', - badgeImage: _badgeImages.football, + badgeImage: _brownBadgeImages.football, }, { badgeName: 'Brown Track', - badgeImage: _badgeImages.track, + badgeImage: _brownBadgeImages.track, }, { badgeName: 'Brown Soccer', - badgeImage: _badgeImages.soccer, + badgeImage: _brownBadgeImages.soccer, }, { badgeName: 'Brown Volleyball', - badgeImage: _badgeImages.volleyball, + badgeImage: _brownBadgeImages.volleyball, }, { badgeName: 'Brown Lacrosse', - badgeImage: _badgeImages.lacrosse, + badgeImage: _brownBadgeImages.lacrosse, }, { badgeName: 'Brown Basketball', - badgeImage: _badgeImages.basketball, + badgeImage: _brownBadgeImages.basketball, }, { badgeName: 'Brown Field Hockey', - badgeImage: _badgeImages.field_hockey, + badgeImage: _brownBadgeImages.field_hockey, }, { badgeName: 'Brown Gymnastics', - badgeImage: _badgeImages.gymnastics, + badgeImage: _brownBadgeImages.gymnastics, }, { badgeName: 'Brown Tennis', - badgeImage: _badgeImages.tennis, + badgeImage: _brownBadgeImages.tennis, }, { badgeName: 'Brown Hockey', - badgeImage: _badgeImages.hockey, + badgeImage: _brownBadgeImages.hockey, }, { badgeName: 'Brown Softball', - badgeImage: _badgeImages.softball, + badgeImage: _brownBadgeImages.softball, }, { badgeName: 'Brown Baseball', - badgeImage: _badgeImages.baseball, + badgeImage: _brownBadgeImages.baseball, }, ], }, @@ -97,11 +175,11 @@ export const BADGE_DATA = [ data: [ { badgeName: 'Brown Class Board', - badgeImage: _badgeImages.brown_class_board, + badgeImage: _brownBadgeImages.brown_class_board, }, { badgeName: 'UCS', - badgeImage: _badgeImages.ucs, + badgeImage: _brownBadgeImages.ucs, }, ], }, @@ -110,15 +188,15 @@ export const BADGE_DATA = [ data: [ { badgeName: 'Latin @ Brown', - badgeImage: _badgeImages.latin_at_brown, + badgeImage: _brownBadgeImages.latin_at_brown, }, { badgeName: 'Buxton/International', - badgeImage: _badgeImages.buxton_international, + badgeImage: _brownBadgeImages.buxton_international, }, { badgeName: 'BSU', - badgeImage: _badgeImages.bsu, + badgeImage: _brownBadgeImages.bsu, }, ], }, @@ -127,23 +205,23 @@ export const BADGE_DATA = [ data: [ { badgeName: 'Kappa Delta', - badgeImage: _badgeImages.kappa_delta, + badgeImage: _brownBadgeImages.kappa_delta, }, { badgeName: "Brown Women's Collective", - badgeImage: _badgeImages.brown_womens_collective, + badgeImage: _brownBadgeImages.brown_womens_collective, }, { badgeName: 'Alpha Delta Phi', - badgeImage: _badgeImages.alpha_delta_phi, + badgeImage: _brownBadgeImages.alpha_delta_phi, }, { badgeName: 'Alpha Chi Omega', - badgeImage: _badgeImages.alpha_chi_omega, + badgeImage: _brownBadgeImages.alpha_chi_omega, }, { badgeName: 'Delta Gamma', - badgeImage: _badgeImages.delta_gamma, + badgeImage: _brownBadgeImages.delta_gamma, }, ], }, @@ -153,19 +231,19 @@ export const BADGE_DATA = [ data: [ { badgeName: 'Beta Rho Pi', - badgeImage: _badgeImages.beta_rho_pi, + badgeImage: _brownBadgeImages.beta_rho_pi, }, { badgeName: 'Delta Tau', - badgeImage: _badgeImages.delta_tau, + badgeImage: _brownBadgeImages.delta_tau, }, { badgeName: 'Theta Alpha', - badgeImage: _badgeImages.theta_alpha, + badgeImage: _brownBadgeImages.theta_alpha, }, { badgeName: 'Zeta Delta Xi', - badgeImage: _badgeImages.zeta_delta_xi, + badgeImage: _brownBadgeImages.zeta_delta_xi, }, ], }, @@ -174,19 +252,19 @@ export const BADGE_DATA = [ data: [ { badgeName: 'Acapella', - badgeImage: _badgeImages.acapella, + badgeImage: _brownBadgeImages.acapella, }, { badgeName: 'Taps', - badgeImage: _badgeImages.tap, + badgeImage: _brownBadgeImages.tap, }, { badgeName: 'Fashion @ Brown', - badgeImage: _badgeImages.fashion_at_brown, + badgeImage: _brownBadgeImages.fashion_at_brown, }, { badgeName: 'Impulse', - badgeImage: _badgeImages.impulse, + badgeImage: _brownBadgeImages.impulse, }, ], }, @@ -195,20 +273,229 @@ export const BADGE_DATA = [ data: [ { badgeName: 'Brown EP', - badgeImage: _badgeImages.brown_ep, + badgeImage: _brownBadgeImages.brown_ep, }, { badgeName: 'Black in Business', - badgeImage: _badgeImages.black_in_business, + badgeImage: _brownBadgeImages.black_in_business, }, { badgeName: 'Women in Business', - badgeImage: _badgeImages.women_in_business, + badgeImage: _brownBadgeImages.women_in_business, }, { badgeName: 'Brown CS', - badgeImage: _badgeImages.brown_cs, + badgeImage: _brownBadgeImages.brown_cs, + }, + ], + }, +]; + +const _cornellBadges = [ + { + title: 'Athletics', + data: [ + {badgeName: 'Football', badgeImage: _cornellBadgeImages.football}, + { + badgeName: 'Track & Field', + badgeImage: _cornellBadgeImages.track_and_field, + }, + {badgeName: 'Soccer', badgeImage: _cornellBadgeImages.soccer}, + {badgeName: 'Volleyball', badgeImage: _cornellBadgeImages.volleyball}, + {badgeName: 'Lacrosse', badgeImage: _cornellBadgeImages.lacrosse}, + {badgeName: 'Basketball', badgeImage: _cornellBadgeImages.basketball}, + { + badgeName: 'Field hockey', + badgeImage: _cornellBadgeImages.field_hockey, + }, + {badgeName: 'Gymnastics', badgeImage: _cornellBadgeImages.gymnastics}, + {badgeName: 'Tennis', badgeImage: _cornellBadgeImages.tennis}, + {badgeName: 'Hockey', badgeImage: _cornellBadgeImages.hockey}, + {badgeName: 'Softball', badgeImage: _cornellBadgeImages.softball}, + {badgeName: 'Baseball', badgeImage: _cornellBadgeImages.baseball}, + {badgeName: 'Sailing', badgeImage: _cornellBadgeImages.sailing}, + {badgeName: 'Golf', badgeImage: _cornellBadgeImages.golf}, + {badgeName: 'Wrestling', badgeImage: _cornellBadgeImages.wrestling}, + {badgeName: 'Squash', badgeImage: _cornellBadgeImages.squash}, + {badgeName: 'Rowing', badgeImage: _cornellBadgeImages.rowing}, + {badgeName: 'Polo', badgeImage: _cornellBadgeImages.polo}, + { + badgeName: 'Swimming & Diving', + badgeImage: _cornellBadgeImages.swimming_and_diving, + }, + {badgeName: 'Fencing', badgeImage: _cornellBadgeImages.fencing}, + ], + }, + { + title: 'Fraternities', + data: [ + {badgeName: 'Acacia', badgeImage: _cornellBadgeImages.acacia}, + { + badgeName: 'Alpha Delta Phi', + badgeImage: _cornellBadgeImages.alpha_delta_phi, + }, + { + badgeName: 'Alpha Epsilon Pi', + badgeImage: _cornellBadgeImages.alpha_epsilon_phi, + }, + { + badgeName: 'Alpha Gamma Rho', + badgeImage: _cornellBadgeImages.alpha_gamma_rho, + }, + { + badgeName: 'Alpha Sigma Phi', + badgeImage: _cornellBadgeImages.alpha_sigma_phi, + }, + {badgeName: 'Alpha Zeta', badgeImage: _cornellBadgeImages.alpha_zeta}, + { + badgeName: 'Beta Theta Pi', + badgeImage: _cornellBadgeImages.beta_theta_pi, + }, + {badgeName: 'Chi Phi', badgeImage: _cornellBadgeImages.chi_phi}, + {badgeName: 'Chi Psi', badgeImage: _cornellBadgeImages.chi_psi}, + {badgeName: 'Delta Chi', badgeImage: _cornellBadgeImages.delta_chi}, + { + badgeName: 'Delta Kappa Epsilon', + badgeImage: _cornellBadgeImages.delta_kappa_epsilon, + }, + { + badgeName: 'Delta Tau Delta', + badgeImage: _cornellBadgeImages.delta_tau_delta, + }, + { + badgeName: 'Delta Epsilon', + badgeImage: _cornellBadgeImages.delta_epsilon, + }, + { + badgeName: 'Kappa Delta Rho', + badgeImage: _cornellBadgeImages.kappa_delta_rho, + }, + {badgeName: 'Kappa Sigma', badgeImage: _cornellBadgeImages.kappa_sigma}, + { + badgeName: 'Lambda Chi Alpha', + badgeImage: _cornellBadgeImages.lambda_chi_alpha, + }, + { + badgeName: 'Phi Delta Theta', + badgeImage: _cornellBadgeImages.phi_delta_theta, + }, + { + badgeName: 'Phi Kappa Tau', + badgeImage: _cornellBadgeImages.phi_kappa_tau, + }, + { + badgeName: 'Phi Sigma Kappa', + badgeImage: _cornellBadgeImages.phi_sigma_kappa, + }, + { + badgeName: 'Pi Kappa Alpha', + badgeImage: _cornellBadgeImages.pi_kappa_alpha, + }, + {badgeName: 'Pi Kappa Phi', badgeImage: _cornellBadgeImages.pi_kappa_phi}, + { + badgeName: 'Sigma Alpha Mu', + badgeImage: _cornellBadgeImages.sigma_alpha_mu, + }, + {badgeName: 'Sigma Chi', badgeImage: _cornellBadgeImages.sigma_chi}, + { + badgeName: 'Sigma Phi Society', + badgeImage: _cornellBadgeImages.sigma_phi_society, + }, + {badgeName: 'Sigma Pi', badgeImage: _cornellBadgeImages.sigma_pi}, + { + badgeName: 'Theta Delta Chi', + badgeImage: _cornellBadgeImages.theta_delta_chi, + }, + { + badgeName: 'Zeta Beta Tau', + badgeImage: _cornellBadgeImages.zeta_beta_tau, + }, + {badgeName: 'Zeta Psi', badgeImage: _cornellBadgeImages.zeta_psi}, + { + badgeName: 'Alpha Phi Alpha', + badgeImage: _cornellBadgeImages.alpha_phi_alpha, + }, + { + badgeName: 'Lambda Phi Epsilon International', + badgeImage: _cornellBadgeImages.lambda_phi_epsilon_international, + }, + { + badgeName: 'La Unidad Latina, Lambda', + badgeImage: _cornellBadgeImages.la_unidad_latina_lambda, + }, + {badgeName: 'MALIK', badgeImage: _cornellBadgeImages.malik}, + { + badgeName: 'Phi Beta Sigma', + badgeImage: _cornellBadgeImages.phi_beta_sigma, + }, + { + badgeName: 'Pi Delta Psi', + badgeImage: _cornellBadgeImages.pi_delta_psi, + }, + ], + }, + { + title: 'Sororities', + data: [ + { + badgeName: 'alpha Kappa Delta Phi', + badgeImage: _cornellBadgeImages.alpha_kappa_delta_phi, + }, + { + badgeName: 'Delta Sigma Theta', + badgeImage: _cornellBadgeImages.delta_sigma_theta, + }, + { + badgeName: 'Kappa Phi Lambda', + badgeImage: _cornellBadgeImages.kappa_phi_lambda, + }, + { + badgeName: 'Zeta Phi Beta', + badgeImage: _cornellBadgeImages.zeta_phi_beta, + }, + { + badgeName: 'Alpha Chi Omega', + badgeImage: _cornellBadgeImages.alpha_chi_omega, + }, + { + badgeName: 'Alpha Epsilon Phi', + badgeImage: _cornellBadgeImages.alpha_epsilon_phi, + }, + {badgeName: 'Alpha Phi', badgeImage: _cornellBadgeImages.alpha_phi}, + { + badgeName: 'Alpha Xi Delta', + badgeImage: _cornellBadgeImages.alpha_xi_delta, + }, + { + badgeName: 'Delta Delta Delta', + badgeImage: _cornellBadgeImages.delta_delta_delta, + }, + {badgeName: 'Delta Gamma', badgeImage: _cornellBadgeImages.delta_gamma}, + { + badgeName: 'Kappa Alpha Theta', + badgeImage: _cornellBadgeImages.kappa_alpha_theta, + }, + {badgeName: 'Kappa Delta', badgeImage: _cornellBadgeImages.kappa_delta}, + { + badgeName: 'Kappa Kappa Gamma', + badgeImage: _cornellBadgeImages.kappa_kappa_gamma, + }, + {badgeName: 'Phi Mu', badgeImage: _cornellBadgeImages.phi_mu}, + { + badgeName: 'Phi Sigma Sigma', + badgeImage: _cornellBadgeImages.phi_sigma_sigma, + }, + {badgeName: 'Phi Beta Phi', badgeImage: _cornellBadgeImages.phi_beta_phi}, + { + badgeName: 'Sigma Delta Tau', + badgeImage: _cornellBadgeImages.sigma_delta_tau, }, ], }, ]; + +export const BADGE_DATA: BadgeDataType = { + 'Brown University': _brownBadges, + 'Cornell University': _cornellBadges, + '': [], +}; diff --git a/src/constants/strings.ts b/src/constants/strings.ts index fa1aeb25..019d0bea 100644 --- a/src/constants/strings.ts +++ b/src/constants/strings.ts @@ -6,6 +6,7 @@ export const ADD_COMMENT_TEXT = (username?: string) => username ? `Reply to ${us export const COMING_SOON_MSG = 'Creating more fun things for you, surprises coming soon π'; export const ERROR_ATTEMPT_EDIT_SP = 'Can\'t let you do that yet! Please onboard Suggested People first!'; export const ERROR_AUTHENTICATION = 'An error occurred during authentication. Please login again!'; +export const ERROR_BADGES_EXCEED_LIMIT = 'You can\'t have more than 5 badges!'; export const ERROR_CATEGORY_CREATION = 'There was a problem creating your categories. Please refresh and try again.'; export const ERROR_CATEGORY_UPDATE = 'There was a problem updating your categories. Please refresh and try again'; export const ERROR_DELETE_CATEGORY = 'There was a problem while deleting category. Please try again'; @@ -35,6 +36,7 @@ export const ERROR_REGISTRATION = (str: string) => `Registration failed π, ${ export const ERROR_SELECT_BIRTHDAY = 'Please select your birthday'; export const ERROR_SELECT_CLASS_YEAR = 'Please select your Class Year'; export const ERROR_SELECT_GENDER = 'Please select your gender'; +export const ERROR_SELECT_UNIVERSITY = 'Please select your University'; export const ERROR_SERVER_DOWN = 'mhm, looks like our servers are down, please refresh and try again in a few mins'; export const ERROR_SOMETHING_WENT_WRONG = 'Oh dear, donβt worry someone will be held responsible for this error, In the meantime refresh the app'; export const ERROR_SOMETHING_WENT_WRONG_REFRESH = "Ha, looks like this one's on us, please refresh and try again"; @@ -44,22 +46,21 @@ export const ERROR_UNABLE_TO_FIND_PROFILE = 'We were unable to find this profile export const ERROR_UNABLE_TO_VIEW_PROFILE = 'Unable to view this profile'; export const ERROR_UPLOAD = 'An error occurred while uploading. Please try again!'; export const ERROR_UPLOAD_BADGES = 'Unable to upload your badges. Please retry!'; -export const ERROR_BADGES_EXCEED_LIMIT = 'You can\'t have more than 5 badges!'; export const ERROR_UPLOAD_LARGE_PROFILE_PIC = "Can't have the first image seen on the profile be blank, please upload a large picture"; export const ERROR_UPLOAD_MOMENT = 'Unable to upload moment. Please retry'; -export const ERROR_UPLOAD_SP_PHOTO = 'Unable to update suggested people photo. Please retry!'; export const ERROR_UPLOAD_SMALL_PROFILE_PIC = "Can't have a profile without a pic to represent you, please upload a small profile picture"; +export const ERROR_UPLOAD_SP_PHOTO = 'Unable to update suggested people photo. Please retry!'; export const ERROR_VERIFICATION_FAILED_SHORT = 'Verification failed π'; export const MARKED_AS_MSG = (str: string) => `Marked as ${str}`; export const MOMENT_DELETED_MSG = 'Moment deleted....Some moments have to go, to create space for greater ones'; export const NO_NEW_NOTIFICATIONS = 'You have no new notifications'; export const NO_RESULTS_FOUND = 'No Results Found!'; export const PRIVATE_ACCOUNT = 'This account is private'; +export const SUCCESS_BADGES_UPDATE = 'Badges updated successfully!' export const SUCCESS_CATEGORY_DELETE = 'Category successfully deleted, but its memory will live on'; export const SUCCESS_INVITATION_CODE = 'Welcome to Tagg!'; export const SUCCESS_LINK = (str: string) => `Successfully linked ${str} π`; export const SUCCESS_PIC_UPLOAD = 'Beautiful, the picture was uploaded successfully!'; -export const SUCCESS_BADGES_UPDATE = 'Badges updated successfully!' export const SUCCESS_PWD_RESET = 'Your password was reset successfully!'; export const SUCCESS_VERIFICATION_CODE_SENT = 'New verification code sent! Check your phone messages for your code'; export const UP_TO_DATE = 'Up-to-Date!'; diff --git a/src/screens/badge/BadgeScreenHeader.tsx b/src/screens/badge/BadgeScreenHeader.tsx index fd250585..46c0c1c8 100644 --- a/src/screens/badge/BadgeScreenHeader.tsx +++ b/src/screens/badge/BadgeScreenHeader.tsx @@ -1,13 +1,23 @@ import React from 'react'; import {Image, StyleSheet, Text, View} from 'react-native'; -import {normalize} from '../../utils'; +import {UniversityType} from 'src/types'; +import {getUniversityBadge, normalize} from '../../utils'; -const BadgeScreenHeader: React.FC = () => { +interface BadgeScreenHeaderProps { + university: UniversityType; +} + +const BadgeScreenHeader: React.FC<BadgeScreenHeaderProps> = ({university}) => { return ( <View style={styles.container}> - <Image source={require('../../assets/images/badges/brown_badge.png')} /> + <Image + source={getUniversityBadge(university, 'Crest')} + style={styles.icon} + /> <View style={styles.universityTextContainer}> - <Text style={styles.universityText}>Brown University Badges</Text> + <Text style={styles.universityText}> + {university} University Badges + </Text> </View> <View style={styles.searchTextContainer}> <Text style={styles.searchText}> @@ -37,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 335d4333..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} from '../../types'; +import {BackgroundGradientType, UniversityType} 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}, + } = 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 /> + <BadgeScreenHeader {...{university}} /> {/* filter not working, comment out for now */} {/* <SearchBar style={styles.searchBarStyle} onCancel={() => {}} top={Animated.useValue(0)} /> */} - <BadgeList - data={BADGE_DATA} - selectedBadges={selectedBadges} - selectKey={selectKey} - /> + {university && ( + <BadgeList + data={BADGE_DATA[university]} + selectedBadges={selectedBadges} + selectKey={selectKey} + /> + )} </View> </SafeAreaView> </LinearGradient> diff --git a/src/screens/onboarding/Login.tsx b/src/screens/onboarding/Login.tsx index 6d9d3a97..49ca5ff4 100644 --- a/src/screens/onboarding/Login.tsx +++ b/src/screens/onboarding/Login.tsx @@ -27,7 +27,7 @@ import { import {OnboardingStackParams} from '../../routes/onboarding'; import {fcmService} from '../../services'; import {RootState} from '../../store/rootReducer'; -import {BackgroundGradientType} from '../../types'; +import {BackgroundGradientType, UniversityType} from '../../types'; import {normalize, userLogin} from '../../utils'; import UpdateRequired from './UpdateRequired'; @@ -156,18 +156,39 @@ const Login: React.FC<LoginProps> = ({navigation}: LoginProps) => { let statusCode = response.status; let data = await response.json(); + if (statusCode === 200) { + await AsyncStorage.setItem('token', data.token); + await AsyncStorage.setItem('userId', data.UserID); + await AsyncStorage.setItem('username', username); + } + if (statusCode === 200 && data.isOnboarded) { //Stores token received in the response into client's AsynStorage try { - await AsyncStorage.setItem('token', data.token); - await AsyncStorage.setItem('userId', data.UserID); - await AsyncStorage.setItem('username', username); userLogin(dispatch, {userId: data.UserID, username}); fcmService.sendFcmTokenToServer(); } catch (err) { Alert.alert(ERROR_INVALID_LOGIN); } + } else if ( + statusCode === 200 && + data.university === UniversityType.Empty + ) { + /** + * A user account was created during onboarding step 2 but user didn't + * finish step 3, thus does not have a universtiy. + * Redirecting user back to onboarding to finish the process + */ + navigation.navigate('OnboardingStepThree', { + userId: data.UserID, + username: username, + }); } else if (statusCode === 200 && !data.isOnboarded) { + /** + * A user account was created and finished the onboarding process but + * did not have an invitation code at the time so the user's account + * is not activated (isOnboarded) yet. + */ navigation.navigate('InvitationCodeVerification', { userId: data.UserID, username: username, @@ -242,6 +263,7 @@ const Login: React.FC<LoginProps> = ({navigation}: LoginProps) => { valid={form.isValidUser} invalidWarning="Username must be at least 6 characters and can only contain letters, numbers, periods, and underscores." attemptedSubmit={form.attemptedSubmit} + autoCorrect={false} /> <TaggInput @@ -259,6 +281,7 @@ const Login: React.FC<LoginProps> = ({navigation}: LoginProps) => { invalidWarning="Password must be at least 8 characters long." attemptedSubmit={form.attemptedSubmit} ref={inputRef} + autoCorrect={false} /> <ForgotPassword /> <TaggSquareButton diff --git a/src/screens/onboarding/OnboardingStepThree.tsx b/src/screens/onboarding/OnboardingStepThree.tsx index f22d720f..29028421 100644 --- a/src/screens/onboarding/OnboardingStepThree.tsx +++ b/src/screens/onboarding/OnboardingStepThree.tsx @@ -1,4 +1,3 @@ -import AsyncStorage from '@react-native-community/async-storage'; import {RouteProp} from '@react-navigation/native'; import {StackNavigationProp} from '@react-navigation/stack'; import moment from 'moment'; @@ -20,24 +19,19 @@ import { RegistrationWizard, TaggDropDown, TaggInput, + UniversitySelection, } from '../../components'; +import {CLASS_YEAR_LIST, genderRegex, TAGG_PURPLE} from '../../constants'; import { - CLASS_YEAR_LIST, - EDIT_PROFILE_ENDPOINT, - genderRegex, - TAGG_PURPLE, -} from '../../constants'; -import { - ERROR_DOUBLE_CHECK_CONNECTION, - ERROR_PROFILE_CREATION_SHORT, ERROR_SELECT_BIRTHDAY, ERROR_SELECT_CLASS_YEAR, ERROR_SELECT_GENDER, - ERROR_SOMETHING_WENT_WRONG_REFRESH, + ERROR_SELECT_UNIVERSITY, ERROR_UPLOAD_SMALL_PROFILE_PIC, } from '../../constants/strings'; import {OnboardingStackParams} from '../../routes/onboarding'; -import {BackgroundGradientType} from '../../types'; +import {patchEditProfile} from '../../services'; +import {BackgroundGradientType, UniversityType} from '../../types'; import {normalize, SCREEN_HEIGHT, SCREEN_WIDTH} from '../../utils'; type OnboardingStepThreeRouteProp = RouteProp< @@ -53,15 +47,25 @@ interface OnboardingStepThreeProps { navigation: OnboardingStepThreeNavigationProp; } +type FormType = { + smallPic: string; + university: UniversityType; + birthdate: string | undefined; + gender: string; + isValidGender: boolean; + classYear: number; + attemptedSubmit: boolean; +}; + const OnboardingStepThree: React.FC<OnboardingStepThreeProps> = ({ route, navigation, }) => { const {userId, username} = route.params; - let emptyDate: string | undefined; - const [form, setForm] = React.useState({ + const [form, setForm] = React.useState<FormType>({ smallPic: '', - birthdate: emptyDate, + university: UniversityType.Empty, + birthdate: undefined, gender: '', isValidGender: true, classYear: -1, @@ -164,7 +168,11 @@ const OnboardingStepThree: React.FC<OnboardingStepThreeProps> = ({ Alert.alert(ERROR_SELECT_CLASS_YEAR); return; } - if (form.birthdate === emptyDate) { + if (form.university === UniversityType.Empty) { + Alert.alert(ERROR_SELECT_UNIVERSITY); + return; + } + if (!form.birthdate) { Alert.alert(ERROR_SELECT_BIRTHDAY); return; } @@ -178,7 +186,6 @@ const OnboardingStepThree: React.FC<OnboardingStepThreeProps> = ({ attemptedSubmit: true, }); } - let invalidFields: boolean = false; const request = new FormData(); if (form.smallPic) { request.append('smallProfilePicture', { @@ -188,16 +195,13 @@ const OnboardingStepThree: React.FC<OnboardingStepThreeProps> = ({ }); } - if (form.birthdate) { - request.append('birthday', form.birthdate); - } if (customGender) { if (form.isValidGender) { request.append('gender', form.gender); } else { setForm({...form, attemptedSubmit: false}); setTimeout(() => setForm({...form, attemptedSubmit: true})); - invalidFields = true; + return; } } else { if (form.isValidGender) { @@ -205,47 +209,20 @@ const OnboardingStepThree: React.FC<OnboardingStepThreeProps> = ({ } } - if (form.classYear !== -1) { - request.append('university_class', form.classYear); - } - - if (invalidFields) { - return; - } + request.append('birthday', form.birthdate); + request.append('university_class', form.classYear); + request.append('university', form.university); - const endpoint = EDIT_PROFILE_ENDPOINT + `${userId}/`; - try { - const token = await AsyncStorage.getItem('token'); - let response = await fetch(endpoint, { - method: 'PATCH', - headers: { - 'Content-Type': 'multipart/form-data', - Authorization: 'Token ' + token, - }, - body: request, - }); - let statusCode = response.status; - let data = await response.json(); - if (statusCode === 200) { + patchEditProfile(request, userId) + .then((_) => navigation.navigate('InvitationCodeVerification', { userId: route.params.userId, username: username, - }); - } else if (statusCode === 400) { - Alert.alert( - 'Profile update failed. π', - data.error || 'Something went wrong! π', - ); - } else { - Alert.alert(ERROR_SOMETHING_WENT_WRONG_REFRESH); - } - } catch (error) { - Alert.alert(ERROR_PROFILE_CREATION_SHORT, ERROR_DOUBLE_CHECK_CONNECTION); - return { - name: 'Profile creation error', - description: error, - }; - } + }), + ) + .catch((error) => { + Alert.alert(error); + }); }; return ( @@ -264,6 +241,15 @@ const OnboardingStepThree: React.FC<OnboardingStepThreeProps> = ({ /> </View> <View style={styles.contentContainer}> + <UniversitySelection + selected={form.university} + setSelected={(selected) => { + setForm({ + ...form, + university: selected, + }); + }} + /> <TaggDropDown onValueChange={(value: string) => handleClassYearUpdate(value)} items={classYearList} diff --git a/src/screens/profile/EditProfile.tsx b/src/screens/profile/EditProfile.tsx index 56bed11f..8afaeb6d 100644 --- a/src/screens/profile/EditProfile.tsx +++ b/src/screens/profile/EditProfile.tsx @@ -46,6 +46,7 @@ import { ERROR_UPLOAD_SMALL_PROFILE_PIC, } from '../../constants/strings'; import TaggLoadingIndicator from '../../components/common/TaggLoadingIndicator'; +import {patchEditProfile} from '../../services'; type EditProfileNavigationProp = StackNavigationProp< MainStackParams, @@ -364,38 +365,15 @@ const EditProfile: React.FC<EditProfileProps> = ({route, navigation}) => { return; } - const endpoint = EDIT_PROFILE_ENDPOINT + `${userId}/`; - try { - const token = await AsyncStorage.getItem('token'); - let response = await fetch(endpoint, { - method: 'PATCH', - headers: { - 'Content-Type': 'multipart/form-data', - Authorization: 'Token ' + token, - }, - body: request, - }); - let statusCode = response.status; - let data = await response.json(); - if (statusCode === 200) { + patchEditProfile(request, userId) + .then((_) => { setNeedsUpdate(true); navigation.pop(); - } else if (statusCode === 400) { - Alert.alert( - 'Profile update failed. π', - data.error || 'Something went wrong! π', - ); - } else { - Alert.alert(ERROR_SOMETHING_WENT_WRONG_REFRESH); - } - } catch (error) { - Alert.alert(ERROR_DOUBLE_CHECK_CONNECTION); - return { - name: 'Profile creation error', - description: error, - }; - } - }, [isCustomGender, form, navigation, userId]); + }) + .catch((error) => { + Alert.alert(error); + }); + }, [form, isCustomGender, university_class, userId, navigation]); React.useLayoutEffect(() => { navigation.setOptions({ diff --git a/src/screens/search/SearchScreen.tsx b/src/screens/search/SearchScreen.tsx index 65ec3934..4f0cabb4 100644 --- a/src/screens/search/SearchScreen.tsx +++ b/src/screens/search/SearchScreen.tsx @@ -38,6 +38,9 @@ import { const SearchScreen: React.FC = () => { const {recentSearches} = useSelector((state: RootState) => state.taggUsers); + 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>>( @@ -50,8 +53,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}`, - category: 'Brown', + name: `${university.split(' ')[0]} '${year}`, + category: university, })); const [keyboardVisible, setKeyboardVisible] = React.useState( 'keyboardVisible', diff --git a/src/screens/search/mock.ts b/src/screens/search/mock.ts deleted file mode 100644 index d9909b22..00000000 --- a/src/screens/search/mock.ts +++ /dev/null @@ -1,118 +0,0 @@ -const MockResults = () => { - return { - categories: [ - { - id: 11, - name: "Brown '21", - category: 'Brown', - }, - { - id: 12, - name: "Brown '22", - category: 'Brown', - }, - { - id: 13, - name: "Brown '23", - category: null, - }, - { - id: 14, - name: "Brown '24", - category: null, - }, - ], - users: [ - { - id: 'd5295557-59ce-49fc-aa8a-442874dbffc3', - username: 'foobar', - first_name: 'Foo', - last_name: 'Bar', - thumbnail_url: - 'https://tagg-dev.s3.us-east-2.amazonaws.com/thumbnails/smallProfilePicture/spp-d5295557-59ce-49fc-aa8a-442874dbffc3-thumbnail.jpg', - }, - { - id: '31e93eb5-ccc9-4743-b053-eff368e23fa8', - username: 'foobar2', - first_name: 'Foo', - last_name: 'Bar', - thumbnail_url: - 'https://tagg-dev.s3.us-east-2.amazonaws.com/thumbnails/smallProfilePicture/spp-31e93eb5-ccc9-4743-b053-eff368e23fa8-thumbnail.jpg', - }, - { - id: 'b1b68df9-97ac-48de-b00d-eab10a6a644a', - username: 'foobar3', - first_name: 'Foo', - last_name: 'Bar', - thumbnail_url: - 'https://tagg-dev.s3.us-east-2.amazonaws.com/thumbnails/smallProfilePicture/spp-b1b68df9-97ac-48de-b00d-eab10a6a644a-thumbnail.jpg', - }, - { - id: 'b89c88b3-6b2f-4b6c-85d9-a03ff5396113', - username: 'foobar4', - first_name: 'Foo', - last_name: 'Bar', - thumbnail_url: - 'https://tagg-dev.s3.us-east-2.amazonaws.com/thumbnails/smallProfilePicture/spp-b89c88b3-6b2f-4b6c-85d9-a03ff5396113-thumbnail.jpg', - }, - { - id: '73b4496a-0aa8-4115-98da-2070bf326134', - username: 'foobar5', - first_name: 'Foo', - last_name: 'Bar', - thumbnail_url: - 'https://tagg-dev.s3.us-east-2.amazonaws.com/thumbnails/smallProfilePicture/spp-73b4496a-0aa8-4115-98da-2070bf326134-thumbnail.jpg', - }, - { - id: '329763b8-931e-4d4d-8a07-003374d38497', - username: 'foobar6', - first_name: 'Foo', - last_name: 'Bar', - thumbnail_url: - 'https://tagg-dev.s3.us-east-2.amazonaws.com/thumbnails/smallProfilePicture/spp-329763b8-931e-4d4d-8a07-003374d38497-thumbnail.jpg', - }, - { - id: '9e82fea2-cddc-41e1-be05-6873f58138ca', - username: 'foobar7', - first_name: 'Foo', - last_name: 'Bar', - thumbnail_url: - 'https://tagg-dev.s3.us-east-2.amazonaws.com/thumbnails/smallProfilePicture/spp-9e82fea2-cddc-41e1-be05-6873f58138ca-thumbnail.jpg', - }, - { - id: '6e5b8892-4384-45a1-bc0a-8f2c9d614fbc', - username: 'foobar8', - first_name: 'Foo', - last_name: 'Bar', - thumbnail_url: - 'https://tagg-dev.s3.us-east-2.amazonaws.com/thumbnails/smallProfilePicture/spp-6e5b8892-4384-45a1-bc0a-8f2c9d614fbc-thumbnail.jpg', - }, - { - id: 'c49b01c6-9151-4654-8fae-834adfa15727', - username: 'foobar9', - first_name: 'Foo', - last_name: 'Bar', - thumbnail_url: - 'https://tagg-dev.s3.us-east-2.amazonaws.com/thumbnails/smallProfilePicture/spp-c49b01c6-9151-4654-8fae-834adfa15727-thumbnail.jpg', - }, - { - id: '5b394d5b-62e3-405e-8ecd-7433517ef688', - username: 'foobar10', - first_name: 'Foo', - last_name: 'Bar', - thumbnail_url: - 'https://tagg-dev.s3.us-east-2.amazonaws.com/thumbnails/smallProfilePicture/spp-5b394d5b-62e3-405e-8ecd-7433517ef688-thumbnail.jpg', - }, - { - id: '698e38f0-24ed-404c-9f0c-6a24e43af576', - username: 'fooo', - first_name: 'wefwef', - last_name: 'wefwef', - thumbnail_url: - 'https://tagg-dev.s3.us-east-2.amazonaws.com/thumbnails/smallProfilePicture/spp-698e38f0-24ed-404c-9f0c-6a24e43af576-thumbnail.jpg', - }, - ], - }; -}; - -export default MockResults; diff --git a/src/screens/suggestedPeople/SPBody.tsx b/src/screens/suggestedPeople/SPBody.tsx index 7bedb137..f38945f7 100644 --- a/src/screens/suggestedPeople/SPBody.tsx +++ b/src/screens/suggestedPeople/SPBody.tsx @@ -33,6 +33,7 @@ interface SPBodyProps { const SPBody: React.FC<SPBodyProps> = ({ item: { user, + university, mutual_friends, social_links, suggested_people_url, @@ -57,7 +58,7 @@ const SPBody: React.FC<SPBodyProps> = ({ useEffect(() => { const newBadges: {badge: UniversityBadge; img: any}[] = []; const findBadgeIcons = (badge: UniversityBadge) => { - BADGE_DATA?.forEach((item) => { + BADGE_DATA[university]?.forEach((item) => { if (item.title === badge.category) { item.data.forEach((object) => { if (object.badgeName === badge.name) { @@ -127,7 +128,7 @@ const SPBody: React.FC<SPBodyProps> = ({ return ( <TouchableOpacity onPress={() => { - navigation.push('Profile', { + navigation.navigate('Profile', { userXId: loggedInUserId === user.id ? undefined : user.id, screenType, }); @@ -146,7 +147,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/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 0a4e5718..e1bcb477 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 {UniversityType} 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 = UniversityType.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" + 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 e00c0530..085787c3 100644 --- a/src/services/UserProfileService.ts +++ b/src/services/UserProfileService.ts @@ -2,6 +2,7 @@ import AsyncStorage from '@react-native-community/async-storage'; import moment from 'moment'; import {Alert} from 'react-native'; import { + EDIT_PROFILE_ENDPOINT, GET_FB_POSTS_ENDPOINT, GET_IG_POSTS_ENDPOINT, GET_TWITTER_POSTS_ENDPOINT, @@ -296,16 +297,19 @@ export const sendRegister = async ( password: string, ) => { try { + const form = new FormData(); + form.append('first_name', firstName); + form.append('last_name', lastName); + form.append('email', email); + form.append('phone_number', phone); + form.append('username', username); + form.append('password', password); const response = await fetch(REGISTER_ENDPOINT, { method: 'POST', - body: JSON.stringify({ - first_name: firstName, - last_name: lastName, - email: email, - phone_number: phone, - username: username, - password: password, - }), + headers: { + 'Content-Type': 'multipart/form-data', + }, + body: form, }); return response; } catch (error) { @@ -334,3 +338,31 @@ export const fetchUserProfile = async (userId: string, token?: string) => { return undefined; } }; + +export const patchEditProfile = async (form: FormData, userId: string) => { + const endpoint = EDIT_PROFILE_ENDPOINT + `${userId}/`; + try { + const token = await AsyncStorage.getItem('token'); + let response = await fetch(endpoint, { + method: 'PATCH', + headers: { + 'Content-Type': 'multipart/form-data', + Authorization: 'Token ' + token, + }, + body: form, + }); + let statusCode = response.status; + if (statusCode === 200) { + return true; + } else if (statusCode === 400) { + let data = await response.json(); + throw ( + 'Profile update failed. π' + data.error || 'Something went wrong! π' + ); + } else { + throw ERROR_SOMETHING_WENT_WRONG_REFRESH; + } + } catch (error) { + throw ERROR_DOUBLE_CHECK_CONNECTION; + } +}; diff --git a/src/store/initialStates.ts b/src/store/initialStates.ts index 47ab8f39..02331eb6 100644 --- a/src/store/initialStates.ts +++ b/src/store/initialStates.ts @@ -17,7 +17,7 @@ export const NO_PROFILE: ProfileInfoType = { 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 b2d39cd9..87d61b2e 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -23,13 +23,20 @@ export interface CategoryPreviewType { export type FriendshipStatusType = 'friends' | 'requested' | 'no_record'; -export type ProfileType = { +export enum UniversityType { + Brown = 'Brown University', + Cornell = 'Cornell University', + // Harvard = 'Harvard University', + Empty = '', +} + +export interface ProfileType { profile_pic: string; header_pic: string; profile_info: ProfileInfoType; moment_categories: string[]; linked_socials: string[]; -}; +} export interface ProfileInfoType { name: string; @@ -37,6 +44,7 @@ export interface ProfileInfoType { website: string; gender: string; university_class: number; + university: UniversityType; profile_completion_stage: number; suggested_people_linked: number; birthday: Date | undefined; @@ -240,12 +248,13 @@ export type TypeOfNotification = export type UniversityBadge = { id: number; name: string; - university: string; + university: UniversityType; category: string; }; export type SuggestedPeopleDataType = { user: ProfilePreviewType; + university: UniversityType; mutual_friends: ProfilePreviewType[]; badges: UniversityBadge[]; social_links: string[]; @@ -270,3 +279,6 @@ export type ContactType = { first_name: string; last_name: string; }; + +export type UniversityBadgeType = 'Search' | 'Crest'; +export type BadgeDataType = Record<UniversityType, any[]>; diff --git a/src/utils/common.ts b/src/utils/common.ts index 0a76ec08..4f31af8e 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -1,4 +1,9 @@ -import {ContactType, NotificationType} from './../types/types'; +import { + ContactType, + NotificationType, + UniversityType, + 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: UniversityType, + type: UniversityBadgeType, +) => { + switch (type) { + case 'Search': + return _searchPageIcon(university); + case 'Crest': + return _crestIcon(university); + default: + return require('../assets/images/bwbadges.png'); + } +}; + +const _searchPageIcon = (university: UniversityType) => { + switch (university) { + case UniversityType.Cornell: + return require('../assets/universities/cornell-search.png'); + case UniversityType.Brown: + return require('../assets/images/bwbadges.png'); + default: + return require('../assets/images/bwbadges.png'); + } +}; + +const _crestIcon = (university: UniversityType) => { + switch (university) { + case UniversityType.Cornell: + return require('../assets/universities/cornell.png'); + 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 4293ff25..26f40b1b 100644 --- a/src/utils/search.ts +++ b/src/utils/search.ts @@ -1,14 +1,18 @@ import AsyncStorage from '@react-native-community/async-storage'; import {BADGE_DATA} from '../constants/badges'; -import {ProfilePreviewType, CategoryPreviewType} from '../types'; +import { + ProfilePreviewType, + CategoryPreviewType, + UniversityType, +} from '../types'; /* * Gets all possible search suggestions. */ -export const getSearchSuggestions = (): string[] => { +export const getSearchSuggestions = (university: UniversityType): string[] => { const suggestions: string[] = []; - for (const category of BADGE_DATA) { + for (const category of BADGE_DATA[university]) { for (const interest of category.data) { suggestions.push(interest.badgeName); } @@ -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); } |