From c1b0570c40229981f33a4603ba8d814763ee3e79 Mon Sep 17 00:00:00 2001 From: Mabel Qiu Date: Wed, 4 Mar 2026 17:51:52 -0500 Subject: [PATCH 1/5] Profile and edit profile screen UI --- app/build.gradle.kts | 2 + .../score/components/GamesCarousel.kt | 74 +----- .../cornellappdev/score/nav/ScoreNavHost.kt | 17 +- .../score/nav/ScoreNavigationBar.kt | 20 +- .../score/nav/root/RootNavigation.kt | 30 ++- .../score/screen/EditProfileScreen.kt | 211 +++++++++++++++ .../score/screen/ProfileScreen.kt | 247 ++++++++++++++++++ gradle/libs.versions.toml | 2 + 8 files changed, 529 insertions(+), 74 deletions(-) create mode 100644 app/src/main/java/com/cornellappdev/score/screen/EditProfileScreen.kt create mode 100644 app/src/main/java/com/cornellappdev/score/screen/ProfileScreen.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 69a5f61..8336525 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -81,6 +81,7 @@ dependencies { implementation(libs.material3) implementation("com.google.dagger:hilt-android:2.51.1") implementation(libs.androidx.foundation) + implementation(libs.foundation) kapt("com.google.dagger:hilt-android-compiler:2.51.1") implementation("androidx.hilt:hilt-navigation-compose:1.0.0") implementation("com.google.accompanist:accompanist-pager:0.24.0-alpha") @@ -103,6 +104,7 @@ dependencies { lintChecks(libs.compose.lint.checks) implementation(platform("com.google.firebase:firebase-bom:34.3.0")) implementation("com.google.firebase:firebase-analytics") + implementation("androidx.compose.material:material-icons-extended:1.6.0") } apollo { diff --git a/app/src/main/java/com/cornellappdev/score/components/GamesCarousel.kt b/app/src/main/java/com/cornellappdev/score/components/GamesCarousel.kt index 178ed15..0b47592 100644 --- a/app/src/main/java/com/cornellappdev/score/components/GamesCarousel.kt +++ b/app/src/main/java/com/cornellappdev/score/components/GamesCarousel.kt @@ -1,76 +1,33 @@ package com.cornellappdev.score.components -import androidx.compose.foundation.Canvas import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.pager.HorizontalPager -import androidx.compose.foundation.pager.rememberPagerState +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.items import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.cornellappdev.score.R import com.cornellappdev.score.model.GameCardData import com.cornellappdev.score.theme.CornellRed -import com.cornellappdev.score.theme.CrimsonPrimary -import com.cornellappdev.score.theme.GrayLight import com.cornellappdev.score.util.gameList -@Composable -fun DotIndicator( - pagerState: androidx.compose.foundation.pager.PagerState, - totalPages: Int, - modifier: Modifier = Modifier, - dotSize: Dp = 14.dp, - selectedColor: Color = CrimsonPrimary, - unselectedColor: Color = GrayLight -) { - Row( - modifier = modifier, - horizontalArrangement = Arrangement.spacedBy(32.dp) - ) { - for (i in 0 until totalPages) { - val color = if (i == pagerState.currentPage) selectedColor else unselectedColor - Canvas( - modifier = Modifier - .size(dotSize) - .padding(2.dp) - ) { - drawCircle(color = color) - } - } - } -} - @Composable fun GamesCarousel( games: List, onClick: (String) -> Unit, modifier: Modifier = Modifier, ) { - val pagerState = rememberPagerState(pageCount = { games.size }) - Column( - modifier = modifier - .fillMaxWidth(), - verticalArrangement = Arrangement.spacedBy(16.dp, Alignment.Top), + LazyRow( + modifier = modifier.fillMaxWidth(), + contentPadding = PaddingValues(horizontal = 24.dp), + horizontalArrangement = Arrangement.spacedBy(16.dp) ) { - HorizontalPager( - state = pagerState, - modifier = Modifier.fillMaxWidth(), - contentPadding = PaddingValues(horizontal = 24.dp), - pageSpacing = 24.dp - ) { page -> - val game = games[page] + items(games) { game -> FeaturedGameCard( leftTeamLogo = painterResource(R.drawable.cornell_logo), rightTeamLogo = game.teamLogo, @@ -81,21 +38,12 @@ fun GamesCarousel( genderIcon = painterResource(game.genderIcon), sportIcon = painterResource(game.sportIcon), location = game.location, - modifier = Modifier, - headerModifier = Modifier, gradientColor1 = CornellRed, gradientColor2 = game.teamColor, leftScore = game.cornellScore?.toInt(), rightScore = game.otherScore?.toInt(), - onClick = { onClick(game.id) } - ) - } - - Box(modifier = Modifier.fillMaxWidth()) { - DotIndicator( - pagerState = pagerState, - totalPages = games.size, - modifier = Modifier.align(Alignment.Center) + onClick = { onClick(game.id) }, + modifier = Modifier.width(300.dp) ) } } @@ -105,4 +53,4 @@ fun GamesCarousel( @Preview private fun GamesCarouselPreview() = ScorePreview { GamesCarousel(gameList, onClick = {}) -} \ No newline at end of file +} diff --git a/app/src/main/java/com/cornellappdev/score/nav/ScoreNavHost.kt b/app/src/main/java/com/cornellappdev/score/nav/ScoreNavHost.kt index ba66aa0..29d6009 100644 --- a/app/src/main/java/com/cornellappdev/score/nav/ScoreNavHost.kt +++ b/app/src/main/java/com/cornellappdev/score/nav/ScoreNavHost.kt @@ -11,11 +11,13 @@ import androidx.navigation.toRoute import com.cornellappdev.score.model.ScoreEvent import com.cornellappdev.score.nav.root.ScoreScreens import com.cornellappdev.score.nav.root.ScoreScreens.Home +import com.cornellappdev.score.screen.EditProfileScreen import com.cornellappdev.score.screen.GameDetailsScreen import com.cornellappdev.score.screen.HighlightsScreen import com.cornellappdev.score.screen.HighlightsSearchScreen import com.cornellappdev.score.screen.HomeScreen import com.cornellappdev.score.screen.PastGamesScreen +import com.cornellappdev.score.screen.ProfileScreen import com.cornellappdev.score.util.highlightsList import com.cornellappdev.score.util.recentSearchList import com.cornellappdev.score.util.sportList @@ -47,6 +49,20 @@ fun ScoreNavHost(navController: NavHostController) { }) } } + composable { + ProfileScreen( + navigateToEditProfile = { + navController.navigate(ScoreScreens.EditProfile) + } + ) + } + composable { + EditProfileScreen( + onBackClick = { + navController.navigateUp() + } + ) + } composable { GameDetailsScreen( onBackArrow = { @@ -89,4 +105,3 @@ fun ScoreNavHost(navController: NavHostController) { // } } } - diff --git a/app/src/main/java/com/cornellappdev/score/nav/ScoreNavigationBar.kt b/app/src/main/java/com/cornellappdev/score/nav/ScoreNavigationBar.kt index 91af73d..2b2494f 100644 --- a/app/src/main/java/com/cornellappdev/score/nav/ScoreNavigationBar.kt +++ b/app/src/main/java/com/cornellappdev/score/nav/ScoreNavigationBar.kt @@ -8,6 +8,7 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.navigation.NavBackStackEntry @@ -38,11 +39,20 @@ fun ScoreNavigationBar( selectedIndicatorColor = Color.Transparent ), icon = { - Icon( - painter = painterResource(id = if (isSelected) item.selectedIcon else item.unselectedIcon), - contentDescription = null, - tint = Color.Unspecified - ) + val icon = if (isSelected) item.selectedIcon else item.unselectedIcon + if (icon is Int) { + Icon( + painter = painterResource(id = icon), + contentDescription = null, + tint = Color.Unspecified + ) + } else if (icon is ImageVector) { + Icon( + imageVector = icon, + contentDescription = null, + tint = if (isSelected) CrimsonPrimary else GrayPrimary + ) + } }, label = { Text( diff --git a/app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt b/app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt index 8542ff7..54d3483 100644 --- a/app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt +++ b/app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt @@ -9,6 +9,10 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Person +import androidx.compose.material.icons.outlined.Person +import androidx.compose.material.icons.outlined.Schedule import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.runtime.Composable @@ -18,6 +22,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.dropShadow import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.shadow.Shadow +import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel @@ -65,7 +70,8 @@ fun RootNavigation( Scaffold( modifier = modifier.fillMaxSize(), bottomBar = { - if (navBackStackEntry?.toScreen() is ScoreScreens.GameDetailsPage) { + val currentScreen = navBackStackEntry?.toScreen() + if (currentScreen is ScoreScreens.GameDetailsPage || currentScreen is ScoreScreens.EditProfile) { return@Scaffold } Surface( @@ -110,6 +116,12 @@ sealed class ScoreScreens { @Serializable data class GameScoreSummaryPage(val scoreEvents: String) : ScoreScreens() + @Serializable + data object Profile : ScoreScreens() + + @Serializable + data object EditProfile : ScoreScreens() + ////removed for 2/2026 release // @Serializable // data object HighlightsScreen : ScoreScreens() @@ -124,17 +136,19 @@ fun NavBackStackEntry.toScreen(): ScoreScreens? = "GameDetailsPage" -> toRoute() "ScoresScreen" -> toRoute() "GameScoreSummaryPage" -> toRoute() + "Profile" -> toRoute() + "EditProfile" -> toRoute() //removed for 2/2026 release // "HighlightsScreen" -> toRoute() // "HighlightsSearchScreen" -> toRoute() - else -> throw IllegalArgumentException("Invalid screen") + else -> null } data class NavItem( val screen: ScoreScreens, val label: String, - val unselectedIcon: Int, - val selectedIcon: Int + val unselectedIcon: Any, + val selectedIcon: Any ) val tabs = listOf( @@ -157,4 +171,10 @@ val tabs = listOf( selectedIcon = R.drawable.ic_scores_filled, screen = ScoreScreens.ScoresScreen, ), -) \ No newline at end of file + NavItem( + label = "Profile", + unselectedIcon = Icons.Outlined.Person, + selectedIcon = Icons.Filled.Person, + screen = ScoreScreens.Profile, + ), +) diff --git a/app/src/main/java/com/cornellappdev/score/screen/EditProfileScreen.kt b/app/src/main/java/com/cornellappdev/score/screen/EditProfileScreen.kt new file mode 100644 index 0000000..1961213 --- /dev/null +++ b/app/src/main/java/com/cornellappdev/score/screen/EditProfileScreen.kt @@ -0,0 +1,211 @@ +package com.cornellappdev.score.screen + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.BasicTextField +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ChevronLeft +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.cornellappdev.score.theme.poppinsFamily + +@Composable +fun EditProfileScreen(onBackClick: () -> Unit) { + var name by remember { mutableStateOf("Audrey Wu") } + var username by remember { mutableStateOf("audreywuu") } + + Column( + modifier = Modifier + .fillMaxSize() + .background(Color.White) + ) { + Box( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 16.dp) + ) { + Icon( + imageVector = Icons.Outlined.ChevronLeft, + contentDescription = "Back", + modifier = Modifier + .align(Alignment.CenterStart) + .size(24.dp) + .clickable { onBackClick() } + ) + Text( + text = "Edit profile", + fontSize = 16.sp, + fontWeight = FontWeight.SemiBold, + modifier = Modifier.align(Alignment.Center) + ) + } + HorizontalDivider(color = Color(0xFFF0F0F0)) + + + Spacer(modifier = Modifier.height(24.dp)) + + Column( + modifier = Modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Box( + modifier = Modifier + .size(120.dp) + .border(width = 0.81.dp, color = Color(0xFF1D353E), shape = CircleShape) + .clip(CircleShape) + .background(Color(0xFF7EDAFF)), + contentAlignment = Alignment.Center + ) { + Text("🏓", fontSize = 85.sp) + } + Spacer(modifier = Modifier.height(8.dp)) + Text( + text = "Edit photo", + color = Color(0xFFA5210D), + fontSize = 18.sp, + fontFamily = poppinsFamily, + fontWeight = FontWeight.SemiBold, + lineHeight = 18.sp, + letterSpacing = 0.sp, + textAlign = TextAlign.Center + ) + } + + Spacer(modifier = Modifier.height(32.dp)) + Column( + modifier = Modifier.fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = "Name", + color = Color(0xFF333333), + fontSize = 18.sp, + fontFamily = poppinsFamily, + fontWeight = FontWeight.SemiBold, + lineHeight = 18.sp, + letterSpacing = 0.sp + ) + BasicTextField( + value = name, + onValueChange = { name = it }, + textStyle = TextStyle( + color = Color(0xFF333333), + fontSize = 18.sp, + fontFamily = poppinsFamily, + fontWeight = FontWeight.Normal, + lineHeight = 18.sp, + letterSpacing = 0.sp, + textAlign = TextAlign.End + ), + modifier = Modifier.weight(1f) + ) + } + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = "Username", + color = Color(0xFF333333), + fontSize = 18.sp, + fontFamily = poppinsFamily, + fontWeight = FontWeight.SemiBold, + lineHeight = 18.sp, + letterSpacing = 0.sp + ) + BasicTextField( + value = username, + onValueChange = { username = it }, + textStyle = TextStyle( + color = Color(0xFF333333), + fontSize = 18.sp, + fontFamily = poppinsFamily, + fontWeight = FontWeight.Normal, + lineHeight = 18.sp, + letterSpacing = 0.sp, + textAlign = TextAlign.End + ), + modifier = Modifier.weight(1f) + ) + } + } + + Spacer(modifier = Modifier.weight(1f)) + Button( + onClick = { }, + modifier = Modifier + .align(Alignment.CenterHorizontally) + .padding(bottom = 60.dp) + .width(138.dp) + .height(46.dp), + shape = RoundedCornerShape(50.dp), + colors = ButtonDefaults.buttonColors(containerColor = Color(0xFFA5210D)), + contentPadding = PaddingValues(0.dp) + ) { + Text( + text = "Save", + color = Color.White, + fontSize = 24.sp, + fontFamily = poppinsFamily, + fontWeight = FontWeight.SemiBold, + lineHeight = 24.sp, + letterSpacing = 0.sp, + textAlign = TextAlign.Center, + modifier = Modifier.fillMaxWidth() + ) + } + } +} + + +@Preview(showBackground = true) +@Composable +private fun EditProfileScreenPreview() { + MaterialTheme { + EditProfileScreen(onBackClick = {}) + } +} diff --git a/app/src/main/java/com/cornellappdev/score/screen/ProfileScreen.kt b/app/src/main/java/com/cornellappdev/score/screen/ProfileScreen.kt new file mode 100644 index 0000000..77cfe9c --- /dev/null +++ b/app/src/main/java/com/cornellappdev/score/screen/ProfileScreen.kt @@ -0,0 +1,247 @@ +package com.cornellappdev.score.screen +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ChevronRight +import androidx.compose.material.icons.outlined.Menu +import androidx.compose.material.icons.outlined.Notifications +import androidx.compose.material3.* +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.cornellappdev.score.components.GamesCarousel +import com.cornellappdev.score.util.gameList + +@Composable +fun ProfileScreen( + modifier: Modifier = Modifier, + navigateToEditProfile: () -> Unit = {} +) { + val bookmarkedGames = gameList.take(4) + val recommendedGames = gameList.takeLast(4) + + Column( + modifier = modifier + .fillMaxSize() + .background(Color.White) + ) { + ProfileTopBar( + modifier = Modifier.padding(horizontal = 20.dp) + ) + + Spacer(modifier = Modifier.height(20.dp)) + + ProfileRow( + modifier = Modifier.padding(horizontal = 20.dp), + onEditClick = navigateToEditProfile + ) + + Spacer(modifier = Modifier.height(24.dp)) + + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 20.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = "Bookmarks", + fontSize = 18.sp, + fontWeight = FontWeight.Bold, + color = Color.Black + ) + Row(verticalAlignment = Alignment.CenterVertically) { + Text( + text = "${bookmarkedGames.size} Results", + fontSize = 14.sp, + color = Color.Gray + ) + Icon( + imageVector = Icons.Outlined.ChevronRight, + contentDescription = null, + tint = Color.Gray, + modifier = Modifier.size(18.dp) + ) + } + } + + Spacer(modifier = Modifier.height(12.dp)) + + GamesCarousel( + games = bookmarkedGames, + onClick = { gameId -> /* handle navigation */ } + ) + + Spacer(modifier = Modifier.height(24.dp)) + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 20.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = "Games You Might Like", + fontSize = 18.sp, + fontWeight = FontWeight.Bold, + color = Color.Black + ) + Row(verticalAlignment = Alignment.CenterVertically) { + Text( + text = "${recommendedGames.size} Results", + fontSize = 14.sp, + color = Color.Gray + ) + Icon( + imageVector = Icons.Outlined.ChevronRight, + contentDescription = null, + tint = Color.Gray, + modifier = Modifier.size(18.dp) + ) + } + } + + Spacer(modifier = Modifier.height(12.dp)) + + GamesCarousel( + games = recommendedGames, + onClick = { gameId -> /* handle navigation */ } + ) + } +} + +@Composable +fun ProfileTopBar(modifier: Modifier = Modifier) { + Row( + modifier = modifier + .fillMaxWidth() + .padding(top = 16.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = "Profile", + fontSize = 26.sp, + fontWeight = FontWeight.Bold, + color = Color.Black + ) + + Row( + horizontalArrangement = Arrangement.spacedBy(4.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + imageVector = Icons.Outlined.Notifications, + contentDescription = "Notifications", + tint = Color.Black, + modifier = Modifier.size(24.dp) + ) + + Icon( + imageVector = Icons.Outlined.Menu, + contentDescription = "Menu", + tint = Color.Black, + modifier = Modifier.size(24.dp) + ) + } + } +} + +@Composable +fun ProfileRow( + modifier: Modifier = Modifier, + onEditClick: () -> Unit = {} +) { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = modifier.fillMaxWidth() + ) { + Box( + modifier = Modifier + .size(120.dp) + .border( + width = 0.81.dp, + color = Color(0xFF1D353E), + shape = CircleShape + ) + .clip(CircleShape) + .background(Color(0xFF7EDAFF)), + contentAlignment = Alignment.Center + ) { + Text( + text = "🏓", + fontSize = 72.sp, + lineHeight = 72.sp + ) + } + + Spacer(modifier = Modifier.width(24.dp)) + + Column(verticalArrangement = Arrangement.spacedBy(2.dp)) { + Text( + text = "Audrey Wu", + color = Color(0xFF333333), + fontSize = 18.sp, + fontWeight = FontWeight.W600, + lineHeight = 18.sp, + letterSpacing = 0.sp + ) + Text( + text = "@audreywuu", + color = Color(0xFF333333), + fontSize = 18.sp, + fontWeight = FontWeight.W500, + lineHeight = 18.sp, + letterSpacing = 0.sp + ) + Spacer(modifier = Modifier.height(6.dp)) + EditProfileButton(onClick = onEditClick) + } + } +} + +@Composable +fun EditProfileButton( + modifier: Modifier = Modifier, + onClick: () -> Unit = {} +) { + OutlinedButton( + onClick = onClick, + shape = RoundedCornerShape(100.dp), + colors = ButtonDefaults.outlinedButtonColors( + containerColor = Color.White, + contentColor = Color(0xFF333333) + ), + border = BorderStroke(1.dp, Color(0xFFD1D1D1)), + contentPadding = PaddingValues(horizontal = 12.dp, vertical = 4.dp), + modifier = modifier + .width(97.dp) + .height(32.dp) + ) { + Text( + text = "Edit profile", + fontSize = 12.sp, + fontWeight = FontWeight.Medium, + letterSpacing = 0.sp + ) + } +} + +@Preview(showBackground = true) +@Composable +private fun ProfileScreenPreview() { + MaterialTheme { + ProfileScreen() + } +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index baadf24..3a5a0da 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -19,6 +19,7 @@ material3 = "1.4.0-alpha11" runtime = "1.9.4" ui = "1.9.4" foundation = "1.9.4" +foundationVersion = "1.10.3" [libraries] @@ -35,6 +36,7 @@ androidx-constraintlayout = { group = "androidx.constraintlayout", name = "const androidx-runtime-android = { group = "androidx.compose.runtime", name = "runtime-android", version.ref = "runtimeAndroid" } apollo-runtime = { module = "com.apollographql.apollo:apollo-runtime", version.ref = "apollo" } androidx-foundation = { group = "androidx.compose.foundation", name = "foundation", version.ref = "foundation" } +foundation = { group = "androidx.compose.foundation", name = "foundation", version.ref = "foundationVersion" } [plugins] From d6a14ecf895ecd3a1edc5bebf09a41dc8af5469c Mon Sep 17 00:00:00 2001 From: Mabel Qiu Date: Sun, 12 Apr 2026 15:33:57 -0400 Subject: [PATCH 2/5] Fixed some of the reviews and added profile icon picker --- app/build.gradle.kts | 7 +- .../score/components/GamesCarousel.kt | 74 +++- .../score/components/ProfileGameCarousel.kt | 96 +++++ .../cornellappdev/score/nav/ScoreNavHost.kt | 10 +- .../score/nav/ScoreNavigationBar.kt | 19 +- .../score/nav/root/RootNavigation.kt | 8 +- .../score/screen/EditProfileScreen.kt | 332 ++++++++++++++---- .../score/screen/GameDetailsScreen.kt | 1 + .../score/screen/ProfileScreen.kt | 172 ++++----- .../com/cornellappdev/score/theme/Color.kt | 1 + .../score/viewmodel/GameDetailsViewModel.kt | 4 +- app/src/main/res/drawable/back_arrow.xml | 9 + .../main/res/drawable/badminton_profile.png | Bin 0 -> 9198 bytes .../main/res/drawable/baseball_profile.png | Bin 0 -> 7750 bytes .../main/res/drawable/basketball_profile.png | Bin 0 -> 13144 bytes .../main/res/drawable/billiards_profile.png | Bin 0 -> 9427 bytes app/src/main/res/drawable/bowling_profile.png | Bin 0 -> 9921 bytes .../main/res/drawable/football_profile.png | Bin 0 -> 9493 bytes app/src/main/res/drawable/golf_profile.png | Bin 0 -> 7104 bytes app/src/main/res/drawable/ic_check.xml | 4 + app/src/main/res/drawable/ic_profile.xml | 10 + .../main/res/drawable/ic_profile_filled.xml | 10 + app/src/main/res/drawable/pingpong.png | Bin 0 -> 63273 bytes .../main/res/drawable/pingpong_profile.png | Bin 0 -> 7666 bytes app/src/main/res/drawable/soccer_profile.png | Bin 0 -> 7980 bytes app/src/main/res/drawable/tennis_profile.png | Bin 0 -> 10562 bytes .../main/res/drawable/volleyball_profile.png | Bin 0 -> 12898 bytes .../res/drawable/weightlifting_profile.png | Bin 0 -> 6355 bytes gradle/libs.versions.toml | 6 +- 29 files changed, 545 insertions(+), 218 deletions(-) create mode 100644 app/src/main/java/com/cornellappdev/score/components/ProfileGameCarousel.kt create mode 100644 app/src/main/res/drawable/back_arrow.xml create mode 100644 app/src/main/res/drawable/badminton_profile.png create mode 100644 app/src/main/res/drawable/baseball_profile.png create mode 100644 app/src/main/res/drawable/basketball_profile.png create mode 100644 app/src/main/res/drawable/billiards_profile.png create mode 100644 app/src/main/res/drawable/bowling_profile.png create mode 100644 app/src/main/res/drawable/football_profile.png create mode 100644 app/src/main/res/drawable/golf_profile.png create mode 100644 app/src/main/res/drawable/ic_check.xml create mode 100644 app/src/main/res/drawable/ic_profile.xml create mode 100644 app/src/main/res/drawable/ic_profile_filled.xml create mode 100644 app/src/main/res/drawable/pingpong.png create mode 100644 app/src/main/res/drawable/pingpong_profile.png create mode 100644 app/src/main/res/drawable/soccer_profile.png create mode 100644 app/src/main/res/drawable/tennis_profile.png create mode 100644 app/src/main/res/drawable/volleyball_profile.png create mode 100644 app/src/main/res/drawable/weightlifting_profile.png diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8336525..f8a22cd 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -67,6 +67,9 @@ android { } kotlinOptions { jvmTarget = "1.8" + freeCompilerArgs = freeCompilerArgs + listOf( + "-opt-in=androidx.compose.material3.ExperimentalMaterial3Api" + ) } } @@ -81,7 +84,6 @@ dependencies { implementation(libs.material3) implementation("com.google.dagger:hilt-android:2.51.1") implementation(libs.androidx.foundation) - implementation(libs.foundation) kapt("com.google.dagger:hilt-android-compiler:2.51.1") implementation("androidx.hilt:hilt-navigation-compose:1.0.0") implementation("com.google.accompanist:accompanist-pager:0.24.0-alpha") @@ -104,7 +106,7 @@ dependencies { lintChecks(libs.compose.lint.checks) implementation(platform("com.google.firebase:firebase-bom:34.3.0")) implementation("com.google.firebase:firebase-analytics") - implementation("androidx.compose.material:material-icons-extended:1.6.0") + implementation("androidx.compose.material:material-icons-extended") } apollo { @@ -116,4 +118,3 @@ apollo { } } } - diff --git a/app/src/main/java/com/cornellappdev/score/components/GamesCarousel.kt b/app/src/main/java/com/cornellappdev/score/components/GamesCarousel.kt index 0b47592..178ed15 100644 --- a/app/src/main/java/com/cornellappdev/score/components/GamesCarousel.kt +++ b/app/src/main/java/com/cornellappdev/score/components/GamesCarousel.kt @@ -1,33 +1,76 @@ package com.cornellappdev.score.components +import androidx.compose.foundation.Canvas import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.width -import androidx.compose.foundation.lazy.LazyRow -import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.pager.HorizontalPager +import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.cornellappdev.score.R import com.cornellappdev.score.model.GameCardData import com.cornellappdev.score.theme.CornellRed +import com.cornellappdev.score.theme.CrimsonPrimary +import com.cornellappdev.score.theme.GrayLight import com.cornellappdev.score.util.gameList +@Composable +fun DotIndicator( + pagerState: androidx.compose.foundation.pager.PagerState, + totalPages: Int, + modifier: Modifier = Modifier, + dotSize: Dp = 14.dp, + selectedColor: Color = CrimsonPrimary, + unselectedColor: Color = GrayLight +) { + Row( + modifier = modifier, + horizontalArrangement = Arrangement.spacedBy(32.dp) + ) { + for (i in 0 until totalPages) { + val color = if (i == pagerState.currentPage) selectedColor else unselectedColor + Canvas( + modifier = Modifier + .size(dotSize) + .padding(2.dp) + ) { + drawCircle(color = color) + } + } + } +} + @Composable fun GamesCarousel( games: List, onClick: (String) -> Unit, modifier: Modifier = Modifier, ) { - LazyRow( - modifier = modifier.fillMaxWidth(), - contentPadding = PaddingValues(horizontal = 24.dp), - horizontalArrangement = Arrangement.spacedBy(16.dp) + val pagerState = rememberPagerState(pageCount = { games.size }) + Column( + modifier = modifier + .fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(16.dp, Alignment.Top), ) { - items(games) { game -> + HorizontalPager( + state = pagerState, + modifier = Modifier.fillMaxWidth(), + contentPadding = PaddingValues(horizontal = 24.dp), + pageSpacing = 24.dp + ) { page -> + val game = games[page] FeaturedGameCard( leftTeamLogo = painterResource(R.drawable.cornell_logo), rightTeamLogo = game.teamLogo, @@ -38,12 +81,21 @@ fun GamesCarousel( genderIcon = painterResource(game.genderIcon), sportIcon = painterResource(game.sportIcon), location = game.location, + modifier = Modifier, + headerModifier = Modifier, gradientColor1 = CornellRed, gradientColor2 = game.teamColor, leftScore = game.cornellScore?.toInt(), rightScore = game.otherScore?.toInt(), - onClick = { onClick(game.id) }, - modifier = Modifier.width(300.dp) + onClick = { onClick(game.id) } + ) + } + + Box(modifier = Modifier.fillMaxWidth()) { + DotIndicator( + pagerState = pagerState, + totalPages = games.size, + modifier = Modifier.align(Alignment.Center) ) } } @@ -53,4 +105,4 @@ fun GamesCarousel( @Preview private fun GamesCarouselPreview() = ScorePreview { GamesCarousel(gameList, onClick = {}) -} +} \ No newline at end of file diff --git a/app/src/main/java/com/cornellappdev/score/components/ProfileGameCarousel.kt b/app/src/main/java/com/cornellappdev/score/components/ProfileGameCarousel.kt new file mode 100644 index 0000000..6167402 --- /dev/null +++ b/app/src/main/java/com/cornellappdev/score/components/ProfileGameCarousel.kt @@ -0,0 +1,96 @@ +package com.cornellappdev.score.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ChevronRight +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.dp +import com.cornellappdev.score.R +import com.cornellappdev.score.model.GameCardData +import com.cornellappdev.score.theme.CornellRed +import com.cornellappdev.score.theme.GrayMedium +import com.cornellappdev.score.theme.Style + +@Composable +fun ProfileGameCarousel( + title: String, + games: List, + onClick: (String) -> Unit, + modifier: Modifier = Modifier +) { + Column( + modifier = modifier.fillMaxWidth() + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 20.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = title, + style = Style.heading6 + ) + + Row(verticalAlignment = Alignment.CenterVertically) { + Text( + text = "${games.size} Results", + style = Style.bodyNormalGray + ) + Icon( + imageVector = Icons.Outlined.ChevronRight, + contentDescription = null, + tint = GrayMedium, + modifier = Modifier.size(18.dp) + ) + } + } + + Spacer(modifier = Modifier.height(12.dp)) + + LazyRow( + contentPadding = PaddingValues(horizontal = 20.dp), + horizontalArrangement = Arrangement.spacedBy(12.dp) + ) { + items(games) { game -> + FeaturedGameCard( + leftTeamLogo = painterResource(R.drawable.cornell_logo), + rightTeamLogo = game.teamLogo, + team = game.team, + date = game.dateString, + isLive = game.isLive, + isPast = game.isPast, + genderIcon = painterResource(game.genderIcon), + sportIcon = painterResource(game.sportIcon), + location = game.location, + gradientColor1 = CornellRed, + gradientColor2 = game.teamColor, + leftScore = game.cornellScore?.toInt(), + rightScore = game.otherScore?.toInt(), + onClick = { onClick(game.id) }, + modifier = Modifier.width(241.dp), + headerModifier = Modifier + ) + } + } + + Spacer(modifier = Modifier.height(24.dp)) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cornellappdev/score/nav/ScoreNavHost.kt b/app/src/main/java/com/cornellappdev/score/nav/ScoreNavHost.kt index 29d6009..10ab410 100644 --- a/app/src/main/java/com/cornellappdev/score/nav/ScoreNavHost.kt +++ b/app/src/main/java/com/cornellappdev/score/nav/ScoreNavHost.kt @@ -39,7 +39,8 @@ fun ScoreNavHost(navController: NavHostController) { CompositionLocalProvider(LocalViewModelStoreOwner provides mainScreenViewModelStoreOwner) { HomeScreen(navigateToGameDetails = { navController.navigate(ScoreScreens.GameDetailsPage(it)) - }) + } + ) } } composable { @@ -53,6 +54,9 @@ fun ScoreNavHost(navController: NavHostController) { ProfileScreen( navigateToEditProfile = { navController.navigate(ScoreScreens.EditProfile) + }, + navigateToGameDetails = { gameId -> + navController.navigate(ScoreScreens.GameDetailsPage(gameId)) } ) } @@ -63,8 +67,10 @@ fun ScoreNavHost(navController: NavHostController) { } ) } - composable { + composable { backStackEntry -> + val route = backStackEntry.toRoute() GameDetailsScreen( + gameId = route.gameId, onBackArrow = { navController.navigateUp() }, diff --git a/app/src/main/java/com/cornellappdev/score/nav/ScoreNavigationBar.kt b/app/src/main/java/com/cornellappdev/score/nav/ScoreNavigationBar.kt index 2b2494f..bc9374a 100644 --- a/app/src/main/java/com/cornellappdev/score/nav/ScoreNavigationBar.kt +++ b/app/src/main/java/com/cornellappdev/score/nav/ScoreNavigationBar.kt @@ -40,19 +40,12 @@ fun ScoreNavigationBar( ), icon = { val icon = if (isSelected) item.selectedIcon else item.unselectedIcon - if (icon is Int) { - Icon( - painter = painterResource(id = icon), - contentDescription = null, - tint = Color.Unspecified - ) - } else if (icon is ImageVector) { - Icon( - imageVector = icon, - contentDescription = null, - tint = if (isSelected) CrimsonPrimary else GrayPrimary - ) - } + + Icon( + painter = painterResource(id = icon), + contentDescription = null, + tint = Color.Unspecified + ) }, label = { Text( diff --git a/app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt b/app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt index 54d3483..8358719 100644 --- a/app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt +++ b/app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt @@ -147,8 +147,8 @@ fun NavBackStackEntry.toScreen(): ScoreScreens? = data class NavItem( val screen: ScoreScreens, val label: String, - val unselectedIcon: Any, - val selectedIcon: Any + val unselectedIcon: Int, + val selectedIcon: Int ) val tabs = listOf( @@ -173,8 +173,8 @@ val tabs = listOf( ), NavItem( label = "Profile", - unselectedIcon = Icons.Outlined.Person, - selectedIcon = Icons.Filled.Person, + unselectedIcon = R.drawable.ic_profile, + selectedIcon = R.drawable.ic_profile_filled, screen = ScoreScreens.Profile, ), ) diff --git a/app/src/main/java/com/cornellappdev/score/screen/EditProfileScreen.kt b/app/src/main/java/com/cornellappdev/score/screen/EditProfileScreen.kt index 1961213..580a251 100644 --- a/app/src/main/java/com/cornellappdev/score/screen/EditProfileScreen.kt +++ b/app/src/main/java/com/cornellappdev/score/screen/EditProfileScreen.kt @@ -1,5 +1,6 @@ package com.cornellappdev.score.screen +import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable @@ -9,23 +10,32 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.BasicTextField import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.ChevronLeft +import androidx.compose.material.icons.filled.Check +import androidx.compose.material.icons.filled.Close import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.Text +import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -34,48 +44,98 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.cornellappdev.score.theme.poppinsFamily +import com.cornellappdev.score.R +import com.cornellappdev.score.theme.BorderDark +import com.cornellappdev.score.theme.CrimsonPrimary +import com.cornellappdev.score.theme.GrayLight +import com.cornellappdev.score.theme.GrayMedium +import com.cornellappdev.score.theme.GrayPrimary +import com.cornellappdev.score.theme.Style +import com.cornellappdev.score.theme.Wash +import com.cornellappdev.score.theme.White @Composable fun EditProfileScreen(onBackClick: () -> Unit) { var name by remember { mutableStateOf("Audrey Wu") } var username by remember { mutableStateOf("audreywuu") } + var currentAvatar by remember { + mutableStateOf(AvatarOption(R.drawable.pingpong_profile)) + } + var showAvatarPicker by remember { mutableStateOf(false) } + + Box(modifier = Modifier.fillMaxSize()) { + EditProfileContent( + name = name, + onNameChange = { name = it }, + username = username, + onUsernameChange = { username = it }, + currentAvatar = currentAvatar, + onBackClick = onBackClick, + onEditPhotoClick = { showAvatarPicker = true }, + onSaveClick = { /* Handle save */ } + ) + + if (showAvatarPicker) { + AvatarPickerBottomSheet( + onDismiss = { showAvatarPicker = false }, + onAvatarSelected = { + currentAvatar = it + showAvatarPicker = false + } + ) + } + } +} +@Composable +fun EditProfileContent( + name: String, + onNameChange: (String) -> Unit, + username: String, + onUsernameChange: (String) -> Unit, + currentAvatar: AvatarOption, + onBackClick: () -> Unit, + onEditPhotoClick: () -> Unit, + onSaveClick: () -> Unit +) { Column( modifier = Modifier .fillMaxSize() - .background(Color.White) + .background(White) ) { Box( modifier = Modifier .fillMaxWidth() - .padding(horizontal = 16.dp, vertical = 16.dp) + .padding(horizontal = 4.dp, vertical = 4.dp) ) { - Icon( - imageVector = Icons.Outlined.ChevronLeft, - contentDescription = "Back", - modifier = Modifier - .align(Alignment.CenterStart) - .size(24.dp) - .clickable { onBackClick() } - ) + IconButton( + onClick = onBackClick, + modifier = Modifier.align(Alignment.CenterStart) + ) { + Icon( + painter = painterResource(id = R.drawable.back_arrow), + contentDescription = "Back", + modifier = Modifier.size(24.dp) + ) + } + Text( text = "Edit profile", - fontSize = 16.sp, - fontWeight = FontWeight.SemiBold, + style = Style.heading2.copy( + fontSize = 18.sp, + color = GrayPrimary + ), modifier = Modifier.align(Alignment.Center) ) } - HorizontalDivider(color = Color(0xFFF0F0F0)) - + HorizontalDivider(color = Wash) Spacer(modifier = Modifier.height(24.dp)) Column( @@ -85,27 +145,33 @@ fun EditProfileScreen(onBackClick: () -> Unit) { Box( modifier = Modifier .size(120.dp) - .border(width = 0.81.dp, color = Color(0xFF1D353E), shape = CircleShape) + .border(width = 0.81.dp, color = BorderDark, shape = CircleShape) .clip(CircleShape) - .background(Color(0xFF7EDAFF)), + .background(White), contentAlignment = Alignment.Center ) { - Text("🏓", fontSize = 85.sp) + Image( + painter = painterResource(id = currentAvatar.imageRes), + contentDescription = "Profile photo", + modifier = Modifier.fillMaxSize(), + contentScale = ContentScale.Crop + ) } + Spacer(modifier = Modifier.height(8.dp)) + Text( text = "Edit photo", - color = Color(0xFFA5210D), - fontSize = 18.sp, - fontFamily = poppinsFamily, - fontWeight = FontWeight.SemiBold, - lineHeight = 18.sp, - letterSpacing = 0.sp, - textAlign = TextAlign.Center + style = Style.heading6.copy(color = CrimsonPrimary), + modifier = Modifier + .clip(RoundedCornerShape(8.dp)) + .clickable { onEditPhotoClick() } + .padding(horizontal = 8.dp, vertical = 4.dp) ) } Spacer(modifier = Modifier.height(32.dp)) + Column( modifier = Modifier.fillMaxWidth(), verticalArrangement = Arrangement.spacedBy(16.dp) @@ -119,28 +185,20 @@ fun EditProfileScreen(onBackClick: () -> Unit) { ) { Text( text = "Name", - color = Color(0xFF333333), - fontSize = 18.sp, - fontFamily = poppinsFamily, - fontWeight = FontWeight.SemiBold, - lineHeight = 18.sp, - letterSpacing = 0.sp + style = Style.heading6 ) + BasicTextField( value = name, - onValueChange = { name = it }, - textStyle = TextStyle( - color = Color(0xFF333333), - fontSize = 18.sp, - fontFamily = poppinsFamily, - fontWeight = FontWeight.Normal, - lineHeight = 18.sp, - letterSpacing = 0.sp, + onValueChange = onNameChange, + textStyle = Style.heading5.copy( + color = GrayPrimary, textAlign = TextAlign.End ), modifier = Modifier.weight(1f) ) } + Row( modifier = Modifier .fillMaxWidth() @@ -150,23 +208,14 @@ fun EditProfileScreen(onBackClick: () -> Unit) { ) { Text( text = "Username", - color = Color(0xFF333333), - fontSize = 18.sp, - fontFamily = poppinsFamily, - fontWeight = FontWeight.SemiBold, - lineHeight = 18.sp, - letterSpacing = 0.sp + style = Style.heading6 ) + BasicTextField( value = username, - onValueChange = { username = it }, - textStyle = TextStyle( - color = Color(0xFF333333), - fontSize = 18.sp, - fontFamily = poppinsFamily, - fontWeight = FontWeight.Normal, - lineHeight = 18.sp, - letterSpacing = 0.sp, + onValueChange = onUsernameChange, + textStyle = Style.heading5.copy( + color = GrayPrimary, textAlign = TextAlign.End ), modifier = Modifier.weight(1f) @@ -175,32 +224,181 @@ fun EditProfileScreen(onBackClick: () -> Unit) { } Spacer(modifier = Modifier.weight(1f)) + Button( - onClick = { }, + onClick = onSaveClick, modifier = Modifier .align(Alignment.CenterHorizontally) .padding(bottom = 60.dp) .width(138.dp) .height(46.dp), shape = RoundedCornerShape(50.dp), - colors = ButtonDefaults.buttonColors(containerColor = Color(0xFFA5210D)), + colors = ButtonDefaults.buttonColors( + containerColor = CrimsonPrimary, + disabledContainerColor = GrayLight + ), contentPadding = PaddingValues(0.dp) ) { Text( text = "Save", - color = Color.White, - fontSize = 24.sp, - fontFamily = poppinsFamily, - fontWeight = FontWeight.SemiBold, - lineHeight = 24.sp, - letterSpacing = 0.sp, - textAlign = TextAlign.Center, + style = Style.title.copy( + color = White, + textAlign = TextAlign.Center + ), modifier = Modifier.fillMaxWidth() ) } } } +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun AvatarPickerBottomSheet( + onDismiss: () -> Unit, + onAvatarSelected: (AvatarOption) -> Unit +) { + var selectedAvatar by remember { mutableStateOf(null) } + + val avatars = listOf( + AvatarOption(R.drawable.pingpong_profile), + AvatarOption(R.drawable.soccer_profile), + AvatarOption(R.drawable.tennis_profile), + AvatarOption(R.drawable.badminton_profile), + AvatarOption(R.drawable.billiards_profile), + AvatarOption(R.drawable.basketball_profile), + AvatarOption(R.drawable.bowling_profile), + AvatarOption(R.drawable.volleyball_profile), + AvatarOption(R.drawable.golf_profile), + AvatarOption(R.drawable.weightlifting_profile), + AvatarOption(R.drawable.baseball_profile), + AvatarOption(R.drawable.football_profile) + ) + + ModalBottomSheet( + onDismissRequest = onDismiss, + sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true), + containerColor = White, + dragHandle = null + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + ) { + Box( + modifier = Modifier + .size(32.dp) + .border(1.dp, GrayLight, CircleShape) + .clip(CircleShape) + .clickable { onDismiss() }, + contentAlignment = Alignment.Center + ) { + Icon( + imageVector = Icons.Default.Close, + contentDescription = "Close", + modifier = Modifier.size(16.dp), + tint = GrayMedium + ) + } + + Spacer(modifier = Modifier.height(16.dp)) + + AvatarIconGrid( + avatars = avatars, + selectedAvatar = selectedAvatar, + onAvatarSelected = { selectedAvatar = it } + ) + + Spacer(modifier = Modifier.height(24.dp)) + + Button( + onClick = { + selectedAvatar?.let(onAvatarSelected) + }, + enabled = selectedAvatar != null, + modifier = Modifier + .align(Alignment.CenterHorizontally) + .padding(bottom = 16.dp) + .width(138.dp) + .height(46.dp), + shape = RoundedCornerShape(50.dp), + colors = ButtonDefaults.buttonColors( + containerColor = CrimsonPrimary, + disabledContainerColor = GrayLight + ), + contentPadding = PaddingValues(0.dp) + ) { + Text( + text = "Save", + style = Style.title.copy( + color = White, + textAlign = TextAlign.Center + ), + modifier = Modifier.fillMaxWidth() + ) + } + + + Spacer(modifier = Modifier.height(16.dp)) + } + } +} + +@Composable +fun AvatarIconGrid( + avatars: List, + selectedAvatar: AvatarOption?, + onAvatarSelected: (AvatarOption) -> Unit +) { + LazyVerticalGrid( + columns = GridCells.Fixed(3), + horizontalArrangement = Arrangement.spacedBy(16.dp), + verticalArrangement = Arrangement.spacedBy(16.dp), + modifier = Modifier.fillMaxWidth() + ) { + items(avatars) { avatar -> + val isSelected = selectedAvatar == avatar + + Box( + modifier = Modifier + .aspectRatio(1f) + .clip(CircleShape) + .clickable { onAvatarSelected(avatar) }, + contentAlignment = Alignment.Center + ) { + Image( + painter = painterResource(id = avatar.imageRes), + contentDescription = null, + modifier = Modifier.fillMaxSize(), + contentScale = ContentScale.Crop + ) + if (isSelected) { + Box( + modifier = Modifier + .fillMaxSize() + .background( + color = White.copy(alpha = 0.45f), + shape = CircleShape + ), + contentAlignment = Alignment.Center + ) { + + Icon( + imageVector = Icons.Default.Check, + contentDescription = "Selected", + modifier = Modifier.size(40.dp), + tint = GrayPrimary + ) + } + } + } + } + } +} + +data class AvatarOption( + val imageRes: Int +) @Preview(showBackground = true) @Composable @@ -208,4 +406,4 @@ private fun EditProfileScreenPreview() { MaterialTheme { EditProfileScreen(onBackClick = {}) } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/cornellappdev/score/screen/GameDetailsScreen.kt b/app/src/main/java/com/cornellappdev/score/screen/GameDetailsScreen.kt index 001f500..9af8246 100644 --- a/app/src/main/java/com/cornellappdev/score/screen/GameDetailsScreen.kt +++ b/app/src/main/java/com/cornellappdev/score/screen/GameDetailsScreen.kt @@ -58,6 +58,7 @@ import java.time.LocalDate @Composable fun GameDetailsScreen( + gameId: String, gameDetailsViewModel: GameDetailsViewModel = hiltViewModel(), onBackArrow: () -> Unit = {}, navigateToGameScoreSummary: (List) -> Unit diff --git a/app/src/main/java/com/cornellappdev/score/screen/ProfileScreen.kt b/app/src/main/java/com/cornellappdev/score/screen/ProfileScreen.kt index 77cfe9c..20d314b 100644 --- a/app/src/main/java/com/cornellappdev/score/screen/ProfileScreen.kt +++ b/app/src/main/java/com/cornellappdev/score/screen/ProfileScreen.kt @@ -1,31 +1,54 @@ package com.cornellappdev.score.screen + import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.border -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.ChevronRight import androidx.compose.material.icons.outlined.Menu import androidx.compose.material.icons.outlined.Notifications -import androidx.compose.material3.* +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.OutlinedButton +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color -import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.cornellappdev.score.components.GamesCarousel +import com.cornellappdev.score.R +import com.cornellappdev.score.components.ProfileGameCarousel +import com.cornellappdev.score.theme.GrayLight +import com.cornellappdev.score.theme.GrayPrimary +import com.cornellappdev.score.theme.Style +import com.cornellappdev.score.theme.White import com.cornellappdev.score.util.gameList @Composable fun ProfileScreen( modifier: Modifier = Modifier, - navigateToEditProfile: () -> Unit = {} + navigateToEditProfile: () -> Unit = {}, + navigateToGameDetails: (String) -> Unit = {} ) { val bookmarkedGames = gameList.take(4) val recommendedGames = gameList.takeLast(4) @@ -33,7 +56,7 @@ fun ProfileScreen( Column( modifier = modifier .fillMaxSize() - .background(Color.White) + .background(White) ) { ProfileTopBar( modifier = Modifier.padding(horizontal = 20.dp) @@ -48,75 +71,16 @@ fun ProfileScreen( Spacer(modifier = Modifier.height(24.dp)) - Row( - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 20.dp), - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically - ) { - Text( - text = "Bookmarks", - fontSize = 18.sp, - fontWeight = FontWeight.Bold, - color = Color.Black - ) - Row(verticalAlignment = Alignment.CenterVertically) { - Text( - text = "${bookmarkedGames.size} Results", - fontSize = 14.sp, - color = Color.Gray - ) - Icon( - imageVector = Icons.Outlined.ChevronRight, - contentDescription = null, - tint = Color.Gray, - modifier = Modifier.size(18.dp) - ) - } - } - - Spacer(modifier = Modifier.height(12.dp)) - - GamesCarousel( + ProfileGameCarousel( + title = "Bookmarks", games = bookmarkedGames, - onClick = { gameId -> /* handle navigation */ } + onClick = { gameId -> navigateToGameDetails(gameId) } ) - Spacer(modifier = Modifier.height(24.dp)) - Row( - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 20.dp), - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically - ) { - Text( - text = "Games You Might Like", - fontSize = 18.sp, - fontWeight = FontWeight.Bold, - color = Color.Black - ) - Row(verticalAlignment = Alignment.CenterVertically) { - Text( - text = "${recommendedGames.size} Results", - fontSize = 14.sp, - color = Color.Gray - ) - Icon( - imageVector = Icons.Outlined.ChevronRight, - contentDescription = null, - tint = Color.Gray, - modifier = Modifier.size(18.dp) - ) - } - } - - Spacer(modifier = Modifier.height(12.dp)) - - GamesCarousel( + ProfileGameCarousel( + title = "Games You Might Like", games = recommendedGames, - onClick = { gameId -> /* handle navigation */ } + onClick = { gameId -> navigateToGameDetails(gameId) } ) } } @@ -132,9 +96,10 @@ fun ProfileTopBar(modifier: Modifier = Modifier) { ) { Text( text = "Profile", - fontSize = 26.sp, - fontWeight = FontWeight.Bold, - color = Color.Black + style = Style.title.copy( + fontSize = 26.sp, + color = GrayPrimary + ) ) Row( @@ -144,14 +109,14 @@ fun ProfileTopBar(modifier: Modifier = Modifier) { Icon( imageVector = Icons.Outlined.Notifications, contentDescription = "Notifications", - tint = Color.Black, + tint = GrayPrimary, modifier = Modifier.size(24.dp) ) Icon( imageVector = Icons.Outlined.Menu, contentDescription = "Menu", - tint = Color.Black, + tint = GrayPrimary, modifier = Modifier.size(24.dp) ) } @@ -167,43 +132,24 @@ fun ProfileRow( verticalAlignment = Alignment.CenterVertically, modifier = modifier.fillMaxWidth() ) { - Box( - modifier = Modifier - .size(120.dp) - .border( - width = 0.81.dp, - color = Color(0xFF1D353E), - shape = CircleShape - ) - .clip(CircleShape) - .background(Color(0xFF7EDAFF)), - contentAlignment = Alignment.Center - ) { - Text( - text = "🏓", - fontSize = 72.sp, - lineHeight = 72.sp - ) - } - + Image( + painter = painterResource(id = R.drawable.pingpong_profile), + contentDescription = "Profile image", + modifier = Modifier.size(100.dp), + contentScale = ContentScale.Crop + ) Spacer(modifier = Modifier.width(24.dp)) Column(verticalArrangement = Arrangement.spacedBy(2.dp)) { Text( text = "Audrey Wu", - color = Color(0xFF333333), - fontSize = 18.sp, - fontWeight = FontWeight.W600, - lineHeight = 18.sp, - letterSpacing = 0.sp + style = Style.heading6 ) Text( text = "@audreywuu", - color = Color(0xFF333333), - fontSize = 18.sp, - fontWeight = FontWeight.W500, - lineHeight = 18.sp, - letterSpacing = 0.sp + style = Style.heading5.copy( + color = GrayPrimary + ) ) Spacer(modifier = Modifier.height(6.dp)) EditProfileButton(onClick = onEditClick) @@ -220,10 +166,10 @@ fun EditProfileButton( onClick = onClick, shape = RoundedCornerShape(100.dp), colors = ButtonDefaults.outlinedButtonColors( - containerColor = Color.White, - contentColor = Color(0xFF333333) + containerColor = White, + contentColor = GrayPrimary ), - border = BorderStroke(1.dp, Color(0xFFD1D1D1)), + border = BorderStroke(1.dp, GrayLight), contentPadding = PaddingValues(horizontal = 12.dp, vertical = 4.dp), modifier = modifier .width(97.dp) @@ -231,9 +177,9 @@ fun EditProfileButton( ) { Text( text = "Edit profile", - fontSize = 12.sp, - fontWeight = FontWeight.Medium, - letterSpacing = 0.sp + style = Style.labelsMedium.copy( + color = GrayPrimary + ) ) } } @@ -244,4 +190,4 @@ private fun ProfileScreenPreview() { MaterialTheme { ProfileScreen() } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/cornellappdev/score/theme/Color.kt b/app/src/main/java/com/cornellappdev/score/theme/Color.kt index a4f8fa5..db5d7a5 100644 --- a/app/src/main/java/com/cornellappdev/score/theme/Color.kt +++ b/app/src/main/java/com/cornellappdev/score/theme/Color.kt @@ -18,6 +18,7 @@ val DarkBlue = Color(0x011f5b) val saturatedGreen = Color(0xFF55B63C) val SpotColor = Color(0x12000000) val AmbientColor = Color(0x12000000) +val BorderDark = Color(0xFF1D353E) //placeholders, will be replaced once we get backend data val CornellRed = Color(0x66B31B1B) diff --git a/app/src/main/java/com/cornellappdev/score/viewmodel/GameDetailsViewModel.kt b/app/src/main/java/com/cornellappdev/score/viewmodel/GameDetailsViewModel.kt index 1b69f30..669ba10 100644 --- a/app/src/main/java/com/cornellappdev/score/viewmodel/GameDetailsViewModel.kt +++ b/app/src/main/java/com/cornellappdev/score/viewmodel/GameDetailsViewModel.kt @@ -24,7 +24,7 @@ class GameDetailsViewModel @Inject constructor( loadedState = ApiResponse.Loading ) ) { - private val gameId: String = checkNotNull(savedStateHandle["gameId"]) + private val gameId: String = savedStateHandle.toRoute().gameId init { asyncCollect(scoreRepository.currentGamesFlow) { response -> @@ -43,4 +43,4 @@ class GameDetailsViewModel @Inject constructor( applyMutation { copy(loadedState = ApiResponse.Loading) } scoreRepository.getGameById(gameId) } -} \ No newline at end of file +} diff --git a/app/src/main/res/drawable/back_arrow.xml b/app/src/main/res/drawable/back_arrow.xml new file mode 100644 index 0000000..a30295f --- /dev/null +++ b/app/src/main/res/drawable/back_arrow.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/badminton_profile.png b/app/src/main/res/drawable/badminton_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..3b1229f2a600f372bdf313e6a9f18d7c0bb85f53 GIT binary patch literal 9198 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 Ef+$L}yZ`_I literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/baseball_profile.png b/app/src/main/res/drawable/baseball_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..2de0c5ddfe52b1869f8bee21dfefe287135ae2e7 GIT binary patch literal 7750 zcmV-M9=YL(P)hstFwberVDNw`>6#L*-TLlC+Kq8>>u?Ae&6cQ?{ECCD>mfW7- z$-KiPCS)@APN3*{xDT0`J9FQA&U?21Iq!RuAvz`ma@SpV_0SpITbbPl0i1HmDRRacXT;3- zsuF_XSiXF@eDTE>d8$o0dj03ejvbpLN12YAKrlu7_wOH2uU@@A?c2BS)U8`L(*iW0 zx(UH>%%49$Pfg(Pl$4YlHEnrv6sXz-a>pHabgEIK#!adPeLHmMkbxkMh7iglOxv<$ z%jB)M-oo5XOioT7UfqJJHi7)+H^0eJK|H5|=yB<#mkMU-SSEbVn{U3!|J5p(gbM`I zq)vLM3Si)WgCNQhg8A3K{)Nw}7QrM`AZnfloOt4i!>+vY%8ZU3JIa4Eseh4o-gzf) z>(;HqH8Pth38I7u#F?iHFTBvq)3M?s{1QH9_Uzf1vK-Zxeu>bQ8WJ#}6^$A-dimB{ zZ*6zpdFP1^T#gswUNE^Dh-9hr?|b^`rxz_+v}nErNP!6iUvbu1XFbxhXU}2%`t?g~ z+_9g;?`|d2Djqf6n^-q{EA+MmI;6lHC#g~SVO z7)gcknC2M?6$V0p5Cq4@jhkiW%y;G8ci%Nwe9M+CQdCrA%uG#96@_O^5S+_*5sU(v z_P>^W?R{n|+4V&iT_hJ@e6jrC2S12h%Y83e@IexjL3!3m!O5Ze@}5|}6Vph5Lo@>) zr9Uo-Aeh1dqxbFGCvU$sLne%$AoCY2(ARr)#%D;KI%&paEx*d%y?gC@oR3hV34uT) zZd&{@n~o4E=ki&0cD7u5?X_~l4L67eCU!2ri(nH)pvALh&AR7_C!QEp*}0Vp1izs< z#?t%lyDuYXkg%*Eo_XeJ88c?Atk2&dEn2iN6SQ;Z4%xMPhh%1EO1pOLq*JF((zb0| zY2CWDnI_B;%)}I7);4e6YzJoT(@#H@#fulqS6_W)g41Bcv|+=B4R+0|uDVJdeDFbO z*|MdLhu?7886*Kpjur&BNv`9a(l*;0Jor9u-n_Y<-i#LyDKorPt5$iVN00W-KmUABO`WHKiKh{erxVRf zOH1=~(s?^~?zHn&i##=XUeL69^=c1ZiXT!_)pz>z>0XeevoLbQD^{%V&OZBWV~Wmv zuVu@Vm0@+fKE1E@-g$e53T=Pnd(lkdH)1*Xj{Dn@YK;ncu-C9*Lr?vST^GUd_r!@4 zBiBlVQ2zPPe|opye)~X)hcH#ch7DV%_Sy@IqM5^tWwvTGklfs2TG#Vl=Hh`Q(#LV;E2G-n~t$plB@)g5c%Qp+k3qj7wEX)$6&B zKKjTDirkFDBwTUD6(#_M>pivW#*jDOcq4KyjNm*d9s$InIc_}p`T1V2UcEfc86x9R z|7F?>sl)ezB#jm^U5`~s7-+{Mk38Z9MegP`Lh?>K?KCqN+`L9Yo))q^b?EjvH}7V0 zyxLHeBbwPSz4Vf4%c-ZHY6lbM{rBIu&oo%@f+Th9UPTFGx!I9MBtwG=afw`rXviVR z2Z%U`c60{Hi!Z(?Pe1*%g{Xv{oaZ8(MCAt28a4X*I$3#J`2*Pz+*t#vi$#+hM*lt&@Xx644B;DoO8~x1dZ2dhyrhxOO(}$ zqeWbwaX47z?YG~yoQHgd%>L&;|G9OYsGo_PZYgoF9ov}sc*!TBM0tiI}|vJqD) zf#}70Tyn`J;+Gt=AAIn4rVZ)!(>3c(k)=zQ8n%QzJ{AQLouz{SXoxEGlcD8Jn>H~# zEGP|uXr)yvQ7SJ9l^M`bzYT5949%N2Pm#`tbtar9`}Xda=FM74^X4bXe*?jEI`6@{ z+O}M?z-zt)%O;DqZh4f znsVwXrz>3kwQ0|>swG|+aRwjz>tFvWFTC)g3g-m#eXU!!RlIGyeE8vf6N)=GUV_(j z{=<9sUMOlHH?bze4>4=F5mcQz1+VcJ3W2BzsHcJ|QYYEL>KL4dHu=4&ASt?5a`VkM z%WJQ_W_6VvJGLv3*+|E|$Nb8zx7-%k*wGTDKJIlyAgosMD-dpE{rdHa*p9J*fAPgy zdH(rl<-J)mWb>BIQY$4@0GKr?G&6vv1Zk72Lgk^lUKn}q-@m_TqG$y!P~$7Fyi&^n z&uU;&OMPLgDgrYO{MCKjQIG4-DM~)n6FiMv$T`Y44h+MK{sh2Z*j^++y z6k2KQopDA-PZ{Y2h4aCCm$^F)>Eu^CAj+y_wq)WIgMR<}-mD5%75<&bnV?#Sxf9T#L)K#cNwC-b(6+RCiGHB2s9qSje zeaBaF{srCDIGibI-+=Y*$8vz~Ob3B?3`q^hS035De9dm^ms0^Xp&#T3jOp zHxCmiDv@*nQIHr;nlwrN@sEEPLnstsuU%-F$b^x?muAYMpr-ufCqJ>;H^NcSlTcK& zc43o+dm#64zHwKIMuKK$@Q@4W8aJ&le$oqXP$Idi-q2pJ%Y5Se1LX3et1 zC(WHZ*Jc_uZ)Q0&h?(U@%^qeMA+cUle)z*5+PSVSPKlP1tJYvFTuv0Z@sNpAo9AfO zthp3wc%GV?reXR%QS2&m9?cZ|t#=|xm{)zTN6!nbMo$U(?|=Who#!_=Vf8Vx2&sMV zRW9b=Ir{H{=v5+kn800ij@~7A;z2=8bb;ioytH$_SacxkN=@m_eW%CIo)$ zw%cx#ty{kmEg9Gv5x;~|cN_6t63$|LQ^o;eu;iJWKmNu(9v&O=t7-Qm;ti$ zaOPPddEpRO>)G~t=gysS@4fe$xtlOyf}yHj0-M*O$H02@Et|JUa?KQJ-yvIWzNKH} z9M`Lb&(rWiqC2L(-diYb)vE9t^nL}QAqZ9{YnB;4zgt+)-ii9-3miCEo)2)0aQ2qh zG^}w`m^5pbfoaFoj17dL4W}Gv0q#5po8{|0n9>p583t?zj8965rTH=0_2#;&k zORuNQXsC6Y!+tN?{Q)YLg-E<&PfH5*Bb|?!Yoac{#12Oxwm6bF$=w{Cfv7jkWsr{9 zv3{SPTTB9zOXE4hHF*zOUQyK zD{g^6+z=5H3?!GpLB}$?i^FZ35X+~zY3wLq9^?cPWcVB1sF1fVUzvHxCX*}5IZcS3 zPzWRx`Zfs35e`+&guw&9ge+?Mb?6KR^(VhzDL^bCYb44k+9y+9pQ>hIzcf0rnZ37m zZJs4&z#Evdpt?O^AVOche3_cqbuwl0G`(h1^ATK=-00kM&$XUnn2ZMS851r=tDOf) z45M42_4gQ~gLyEwehCXv6C3G=7`%%}aB#6g(wz6pU;IKQPo662^)fZ|%(57NZ{c3K z@x~ie$c3z}un-yYYreQ1`A^rb-K6-Cr%_!C&9pQ1{RUbhcwVusZC0~ELkTb-@GZ;{ zj4wOIyeNUV<_*7uKtg_h$VE*Eq^eA#=^;5e#lCy!&_PSRk~F}op|AN(G%rZP-lNe> zoaAJpsFJ)0#+HoXkbUmVE z4aPK$*TT>KqJxGl*+QJ!De~~29yX@+?c2AMukl0t4h1I=g-<^IRR5o+`O^Z`?n81# z?<+JqY^^y^Ps67S!PQ7AUy%gHQC2<3OE75&&)uh;=aY~HCd-#Vm|a9D49=Bpp;$6* zYV89D4zQ(aBStg@uI?6K&`DBxDg%r{!xq2)C|}8%E`Dgl+-NktllB z&zm>b%t@j84Tq~0Ct&dmjCKOf$|_l;LosdY)Hh096I!);joq7g0{VB{Wdxf!$FW#pBSW6q2jGfk*OG(gRJd5g?+SO;|i;R6u{5vEHL<0V(UglqYJ9Xqoc^~Hw(G`gFPg%HBDY12&Q zxiMhzM3T#q$d_og;QBOzfAGNv5huN3pQ5kw!y8im>4fbGm|Lt#o zi@d*9L*Lr9>$nkr>w75*M$-2Sx`59iWHj}Aj>J^X zr9puD2mezGShsGS)v>FSF2DS8^C8%OAR9Dw!GZ;nt%3e`l zN7MWgITE{Xhtvk<_{Cwc$8OhYR3Bebkuydsw5D#%r>Ov+!z=@K53id@DD>{kDc3=x z>5QRr$V%KBZ@f_+ee_WoJ$h70)Kq31#Rlbwm2y|AK$w77h9CXtN8*>TQf!4DVut~C zcNQOn?WZtB*o$)lMlX*Xqp`O*ak@<0VjWZ-^AYson6l)BHyGeL2n9dDL}CoUCQX|( zRRlQQm|p^6MfC)z?+Dcl$yYjwR($rEeGd~0IO&(z0v%bHp;!C;zF#f5`s%CAu2N{C z>kldqWF&$i;bT_eH((BV%*P*pY~7A@J-Uv@L}>~W$X##5h!HksNBa-#mjV6nmLd(o zMYSQMb#`+48dMDxa>-P9W!aLYvP-cmdT7^GX8d+H`h7icnOD00~~71 zRv4I~ve6c^kc@Wx`0-Zu z!ldF?JQ~8Kr2YXho_clCWaiA7rsdotX3j5#gDR^Vn?Q6RlW{732zz|ZHP;xN&A@4z zi=N>QfMksby|XmReWq$ZWXKTfHlcr(khyc`&K9*Kn&{3)qhUO)M-M&pkd2+$&g2|B zcC3xVp}E`>pDoGFH3!Ule2(w)TOtT6L+Ph9(5U67SCu9-)(x@=fR=Hse^*UXslHwH z5!OW4p+g5-!`G)zAA8?5&}p=1J+_JL?SFIu$Nn>=~49z+M(nx^19skfu*_zs-9bN((XCv$fBOCtP-7cO|=&^K(}Bukbq!A(ff zfg+0xyL9U++timXQ7xv;^u71q)A43Xmo8oOdr9)?C!fir7hVXj7b#Rg^!XBK-p5$O zPi2_AaN$CpXHsef)npbn#!Id#VEFLi#(Z*%zx?GdW)`ru2m_TzP%wphw);*rI-JO! zEPj`3uFYF3GiJ?_8f<5q6tdEj&IChu2i$XyoYm!Qv+IPyW5$e@DO09Oi{@GK)KgDM z!v-g6n7mGYJ7};6+G$xH-0;yfIBb*#emqN2S83;thnmo1li_0tWtEq$U!oO=u9a?OW6{rD64Tr>6- zEl!pXKlsQJ-VGbR)KFK8a4OW7UV6d4;-^Cf3!;f}-s6uy9@$H))UT;2nc_!F+}b-T zeXfE?1rEj&^Aqx7(g-ur6e5~L_g}ej5y?%THeC^cJe}F~^v26;co*Gi9A7j}0;#$Vv@Bo_um#WaBhH#EN7cjjX{M@MXL5v|UFHdG`;IL`y7G-F{BI_~YX= zR&Qm^%*?VbUAoDh(+EEnFVYcdvskn2;*g;rl@hWb z3TvX{`M(h(B}W4iqD5d9>i?Hrc3C7*^h0RJ=+UDmsx$9b_Oo)ut#FTtw0OQ`x64+>H?|g>Aw%xdka(o6Y9$xJG!R0Pn`AV|ko0=>Et*NLnSA)>lNgtx zw5nN!VW_1*v7{Y(pnb*qS*m^q#GqthP01n~iAfl0g7nl>g+($l>dWsQd{CC>F0&{x zS2J^<9)#gqg8UMjVwR^J;oB^q?z-!)QMcZD>j1xtK^5pfe7ibw&DL!RH(@zB0wKHdArQ@gFr$+uO)6JApbD>`OdR&wYp)gfE$?Ci5DHK` z*cG*Cy8Id`5IJ(>2=y~#ttFF#Ft`rdLajTsmZYhfOV!sYIxB0X@Vd4|NoZ8vw7T|Q z4P%n?53vcue3cyTW<06INitUpRJY%LyX@Yx+q4xw#7ssQE?@FX@RH|PRiqupuZlh( z;!@11NSWD-ex`WIm1+@6dU}0Z**fiwHx(Ijn&%$haRY7tzAKB;|0jsYQS z-wc_<4*wqSCB@UpcvxUwcwEiYaZ~YoR1t+&UwKuUG;Lz9DJjp=Ox~>s4r&q6j2Sa9 zf%j-+l~d66J|PxGct4Rr?MQJ~Sv z%lM3-o)$!2^UO2PKwiU4FTQ&Wd#c(A)7O2j%?ASj#=7R;TCK=jCIXv zN#O(&Kjm6l`7IZBdlYO??mqF!{(MkAUX3iuF5H3fkQh+0>t8CE|fDWdS?P3CpFa zzXN|W(_tJ;hS`|1=*Lw!*adBHf)Apt8y0QoP466 zvQst@!*ns@K#7m^8Xo9^Fvg4-6W7xa;(}Gb ze<)bRV@ORjmxd-_v130JbjF(kn!Lv9)NYcJbc(M`4t8fw*Axs54(^1`M1#&Xg0K9 z!GgCn`r5U0>C$e;vtOa&_rw!V6aa^4(l-obTmquN(^C*){E7m2Jc=QUtp0e>7N-@8 zhvg`0aY-!LR8=XV9cnyOOzY)CFTVKVtjhM$I@XCEDy^#*C{Q_EwW8AJ5ynfw12|En z+LDXI*U&gq%b}fEuHd(>Qr(1kVmn(!pGT`!TzRD8QV^8b9?mENa#46=n8F!1v2-nn zj+R6cf}mALi)J~Bm-P!Gf{KNzO(2e(U{q6Xq6kHW?pSgD_z0R1=-yntdiC@4sQF3q z;-P96h$95U17vt+36II3IvB)u=T#+yKtC6PP~b9`{$^TgV|}`F&~(%U5=}fmL!tA& z3YA~LhQbJj=q$*(OEiHJ)8d0!V!^9s*sRT%tVN_8Im&cQ2qc=qPcG}ke)L)m?8L6y z2nL^nX#-u3H86njXaLX#TEJ@rpjwclA1~8zd~$X9hFIyC6G&O2QpxVyszIID*H*%t z)~m3xv?|ChMpgoV@!=k_0xe7xgg4d6(<5KMo5uzTtjRxGrYKhW5B+8Qcg})|mH+?% M07*qoM6N<$g52N&n*aa+ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/basketball_profile.png b/app/src/main/res/drawable/basketball_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..23eda19885c603466bd4c8322df8e42c97f764ab GIT binary patch literal 13144 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 Z{4a*Ufr3NXW7+@!002ovPDHLkV1io+NJ0Pr literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/bowling_profile.png b/app/src/main/res/drawable/bowling_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..a6b77701b78b776133bae767b40d62a0a7ae756c GIT binary patch literal 9921 zcmV;yCO+ATP)7$A({s=6?1f$2iyI_JUCm}!E~F^7Ta`|CwnU>?l1gDQA2RUrdM+|nDk&vV zLFk#7z^Pmg{kdEwN5$};pMqg@|LM-1-MEJ2no!6ix7@N#bKUzn*bj&T)-*L?V_Vyt z2mVq;6mx2N8v8~@a4eh6G_yMwMRgR3A{Tp^#o_0}%KaXv*Wc=(3a*7Vke3$Kb2E+pdG z_EIs=oH!xwZoBEaU%k?bxnc_WTvu18p=sZuBDUSPVgyNETryqScDB@fZ#XQ;5BXQ@7D8|5Ll+WLM^B0?AvG4u*b=PgXfAwm##A0~2 ziJbGDix;Cg8tpor&p&W|TifK$fq~10%r1+C)ZEkEOP6lDZ{^BsCPoAmi7_vnJSnbh zhv|8rz8uz4cMB1#SP+YS=d&9(uD^515}3M<_ln51h|Ar&Xi?|hv9X6~E#+MU1Fxcv zQa6Q2thjm6qCdQ6$&#;p`i2{#?TG~5t0ESE+rouW$8kQ~mPn-O!hVE0NnKo4)kS^x zp*3r|?q0SGKTq;PUmu=4awJ0+c6U8oSYU;SG8)3+7k+#5=FY{*Bz_)6GXMX%Z(k-` zCY~}!RprSla-Zj)G9V*NS z=`04y`>s+}xm>12RnXSdh`X0A$46TiVN*PI-tS!wQF%&F&*R_Rz57dZIet#(B6P?- zix)rs(Au@QT*A6Hgk+HceTB3C&yV-u^-K?9(HJR<1l^L2l2ztGQJCQr!jU-aWEy5P zf`}RA;8P`<2e(o}*(#u7myj#u;1wp}*%soahHzMeP6bX+X;{#d#OH6>jQbl>NKmCblWe*B$|eaGLg1@SL$*^<5-B;jmDJUKOmC-&||c6uBdv3=O~ zkjqtIB-)YgSc|5P<%p-+V8&bF8B~H{fb<2g!c|k9`Tz}sR>9Z0Scr#maSWxYVN4EZ zFgbV}#oQQDF=>7Pm29C@w(;9{+=b7ywID{tTn>v7Qu1p%cg`uuzvFK+ZoKdZ?|a|2 zdIxc@`VeL8<*fbJFFcRw`~)Jg227Xfmb^IP9V@YT&1R(2ZLp09@)cKo)|SENe>w-8 zqpqIIUr*wLC*SD$O5(${W02^QjES48pg@I;o_GU;{m0MBp{-o4|Sd-mM@cE`PK9`gCkn;-t=l`9{WhJ$*FAS4N{7N7s-fdlxX zmtI2H48d~@l#VFvDy>+oS9B(6$XhWusx z;84s*Zl zKkrn}vmPRK6t;Q-uMAd_7ukGPNE!K-E%ne4dsqBv4ZNn^<9g5{^iUJpjeI^@A7lntP9m(^ZP8# zLDX=OFp1y}zJi{EFCh{sA`vk$GBAn%@v)ELgJFGU^3+3Sxvmu#LtPiOklPk5`r}_+ zvu4|h#zxdj+^RDEs!+ghe*amtC7NJWawtUFu<@>k(7Nt6WQ!a`u>urTpmy~T1F;}0 zVk+HJZb+-TBTW-GRSh0|$ZOx($YYjMl-MAHDjrQfquWYJHZ8Jjh0(Zh4LVnCLT)6B z93ge8IflPGup7NRi+kHzXVe~4EmBXR>yPdn8HrwuvcI50#5$HGliNSJem&|XwVC!< z{{X)J{EJAn7#N+*W8tcQicRl(2v(>86D3=nk)~JZo+3&a2DPKpxe3&T0=*)dA2+Ih zwOOyvf1E2it&~cxLT6EQxe`Lzjbh=NbudVh9`DQ0#UycbWB@y|Q}`%LxV3KzsuZac zF`jH)-`M!=R|f~P=bzmL#L)G}9$L2!^^%%09yxjpfBmzU(VUKAWIBfRTR(}VUH4)z z&)8ux!K)ZVRuM$CBy5v$gL#Cb8>kp2qk;^DhkA%1id8_&7WKf?@^C^HMl2J}%WlWE zdp?6{S`G&S$H)5cz|Pl|t3{p8K$<Wb*yV@+Abfeht!nu?*<0(^sYCM zOvN$G;JWdyhmmgS!c=jZk(xo3Y!nMLU@Omuiu^(n3)ihiZ_iOg>E5#CY5c=j9>2C^VO??+3GhAHZ0E|x#;49D zAkR~X#E##%{`#(Zv~kt~_+$ zDr(4h(mQ$HU;c;Z(bO8laG`>m-v6)QH7NDTJGb0HJO7ndwLV&*$x(3`@U^fB zo92|yj?z*zWEfMXQYpN@p@F$jF!Uu>ax9x&zpkibO69)=c735f8`rKTA9_48zn34Pyv3t%KXJ40$(% zbSi?W{$0rSA0SE*C3`-)RS;O_lf)XC+l1zxyuMT~ulXo#cGy<4sleQ%0h+l0tt&R8 z;F`3U2>#d0JFt_9Y^a*m2N7wdwRQc`+3%gD5MJbCo9d7R)_9>$@9IWNQv;@`fR1&y zGGG!~7A+N2UD6wxLQN%13>-m>TvM5`rES?}q?X=_*eq9?{Mc}JkC*(5Ar;>GH{MHXq=W`X+%$c( zW^-oq;yoG23Rzn!h$NxbNchXRGR^Ef*0?~`I>dF9of1NlKb-YT%*pv3t|PPDRL{@k zAR_Z|DZWx%C(QFJqcP3jwjIQhixF>LOC|xNccSDGskCsGQL#^C7k7;!NKvZORBgt#HZRUB{` zJPYHe5DQPE!JLFOep1orHWd^%8F-zPvMg~`GLJRp4vaQ%%s5Olf|Q}5;_>_4aFvd) zVBSDg@<~pHIN9b12QEjdCcc0cYov(^T|D{9PV~6Jvv^sC!Haxg*3bGPtCi}Z5c$Gy z6)f1K%8SzlbgsVxk;V>^e13-QDBS2N4$!U8)o}3I7jHtI=qpKvH-GXVtmAtzc5o+( zW5-FgJILiLSh#!*3Upt}x;WTnMx9X9L8Cc^QvV)|9DWhmldqCWX8l8q7}u4J3oOjOI(U@R&Eu|cq)GAOuQ`4!uExWF?jkU%2NY` zgFLn{%0u!nBQ_?B8ah^PLrdo^R0s)0tw=CH2A6e^-1t81d*M5n?t24PwilC(MZHJ% zz#&3wTi6M!r1>*=9+OznFrKL_v{K=uD2ywbEJilElw#Mfm?0ccK%u=#q@_ zghq?N%^&<2nwH*MW#)KmJ*FKC#wjMaG0ZbXk5Td+lf&* z5&X%?zUr~_7wH$SRNa<};5_B~#dLy-gwyXFI*JtenlaA&=4Cgs08}Oe!GJ9JgBS7H zSSh*kwWA3k!r*R%ku8L=`lgR#<>qM&Pah%09wo`Qh~p5&XsJLZmSe(%&0?Ggk%c|J z_c<(1TCi+FWs;Lk?S#|W36%2#SQv9K*z-CTEZagK5S`~}iDlV}EoPYFOy=+Mdx{=e z=tMKoR}1v=5dLvL6WFCou!Qb*z9Pt$W!_ElTumSPu&yO_Xk6$nTj(1+jWS_wGi%ox z2TBItbbT($(JkLc@0`>HL_S~nuG_72#IMer&SvN3s#jP}r)=I2g)9ojH>?qTLR z8WmzmLdtWt`TenUJ98$FbsP=P=7WJ?DgH?em*={4tuIO@J5dMu{`e$P4N*)vWN{bY zPQ{eyuIy^HR3?_j2})GY&AQ($(2SRgNLttc@to*AvEoLQ)@ZL9}H9+{yijhl?2KeUT72#T=9fj8!>Zj}f6Yp}Bn}3Iewg zK&lp^`M8i1f)z}<+cGCfh=|J?73RRk8~HpIOQ4&lh*5aD-YLx&ow7AWP}!BsG4Rn% z5F$2kAndZE>f7gwrrwue=@JTunV2-2IqZ6FJ4z$Fv7mu*f{ECIa0DHZ3MLNjz=_wN zK|?~^MTD`WLgm=FZp%lIFNIN}n~JfPfyx+zu0{9d;#9VX^_%Z!skT9}$w9?0WJyGk z?iRO7-MBDQEet6p0f&h_#S(&u>{21R(3#Y1sz*o35t^*dL`)AwkW4R7?#k0H3~;0& z!ILDB{}_*H=-a=GT;32V36Hh)Fl>f2E4~ENWOq{uU?B4GW z_E{LMn~^QWNYiWNnxZI>HoxP(Uq`rgB|pzHumajaL{mz2tL0z6YH274?2>gb7)K;m zd8s#pAVOdzZogB(-g?wNcAh$=PCgN9rn_KL=(sBQg)UI&lZ$gbzez#3tbx-9$)tuj z$@=IEwok(_69n&If_=op5tmH8^Iv z357iA8%qF@B{X56Bta5HmnUmi7{y38i<|Y^R$Y}#MR~1Oegczp*}@J)=eed*jDo|m zTu+#0CjyGp2J)_>_$ecn=1hvKB9I~chWTfKuWKPtk|UtT$4Pq(gL7 z=n2)XX_nLs#xI~6KFn2?#2IImV2ur;l_lNASQ!PDb3Gy{-J}wX5Us+bGKj7`AMuDk z7Xr{^P>nE`iFhRzy@>0~5`%w%=M%0@i1`nc#1EC+65)v(hKe7WPXUqViiBe-rlgVy zj0DU_L>Cf60xN_?7K~4ft7={>LWRiSav)vhm(HD`%GlN4D2qTgXIDoD>m-F~DxrWp zOSeP)uVCQlPf-~^$~uWla#8Y{8yGh#ipcXgGo==y`n5D^iZc|0>}a$cey2cfomOHQ z6-C?3mxk8_TGP_JQjTncrre(y#33n6o$R25bgZ^GRpYnN#Pg>gZn0!hNeV2#FoZwWe_Fl*n027FdEk(J7tlUCt@nP z7%%8pxb{x0+x!tsF%R*}w=&}|+o$ksUWDRB9g88XH?xopAC1S{b zAR6Z!<;NJW`b(xBY##>M{VpVX6!LkXI1DrK)KhuSN?$Q3qyVXzVYKA$g zQDKtx3pdn`BfCcd(vvx@oV@5EAh%Urs1>O`gF6%U0N0n9Wa$dy;&oNaz_b%YOB!+0Uh61&c zAf)iV^uve5?J(O9OFUu_57k^8?OHwhFpnF5J81_vO+6hJQiK(49I~MB9*|_rWT$!T~9vC(-f0;E*eJ8w6}TZ z{H>Y4r^rgzo2|~-J%e+BvECey!&%4q4ck)hcS+GqsWpq|HpSJNN_EmSjw@)g2#e+D zmH=Fq2z8N>sG5=8JA+7+!6>d4UdoE4EN7UlRxx=B8)&RWFg5#zK~^1b(L@RC-tSw z>Z>KQ6(Wm91?3fp_$Fb7g(*0n50gecRcLd{bZowLL;@&ei~*fvwO8U(Mz%~1D(hnj z0;UvU+cdQ4ew56{YS8xEKH=3m3+vM`T|bdQwEY2A&rO7g>?X!eBTO)1TT-zk9A(fB z)k@DizD$^}QBh`onwAmbgbbEni&2O!2%WXe={hLn_BK}PN`8rUVzdttA?0S^Zx!`u zwfx~)vX*MBsh%s#^(anH(p`B%b3 z(yfOaXGhQ&BC;VKW05FC-bq)>2~w;rqL7~MHzzSrj|^s51e3(W zRkV!ar4_^LR4a!jAueC#iNJ&bHp18(pvgf*ycB=2TbH$Nvb!?^N|I4%l%iICxpO6gh-|@;t5o*Na~~FH zTDNSq9aQdVXhfM5N|N>Mk)yAYn;|8yMfe~KD^xjoCRg*W4I3f(s1}0?=#Z}ZN}h$X zLx@MEsX|ko?`N#qsIG~Jdfy1yqkMn`K+Q?{%5yYV z)m&sH)#T7oL_q6c9C>8L@|mOOD>C+f+TDFdAtD9aeoA~<5RnU6NwjgtniW)thKa!w ztojYB1)VBclpI70M!?OMTE48kqs^V6QG6%F0p{eB9fM9}4l>uM5T=Ly<#N({RYg`a zYfXgmSM}zQsut#^r1z_WMd=3InNA0`4!K=M?e&?|l5XqOfdK@O+MxXY%1%t?3TR3i zIK1m`kz^KY=}9<*l!}x5m5*y>$hvKXB6^{ z?(QA?M@G7X(kMa*uA~AU+;9UC7H3#~2q$`8U}=}7PdCDgt<()@`JmdV?r#FOZbst6Fs$!VNg~<_~!>eRN$ZTFHDC zX1<-sui46-cv4%}+$vwJsbo*OSt_3ICZ)VQIy#8ViG7He{wge2RR+)hR)Olaud75)qUaSTh;P|pwQ%*r-nQ`YP zk!R0E6>_VwS8XUGU_n`eZ-G*OkCOgySwI>Z>cik*FUdmb4zZLq>9y6ip5I|v`_5W* z(3L!e+DgV)^Y1?luPo5CjO$w#<7?~I2HsCg(u@~Qo!b8OJ$t@A`~CAE&n@lkgXHEv zCrfsNNNvEkk(U4QbRIco@D__#L#GZS9B+paX;4g_)KF~I!lV0b|E^y^^{SiAoOzt{ z{i=v13q0jtP1SH99Uu{YE^M&e>*UaX>Ig=MP7_7t)q)?f8jaOI-8HICt=b~0RN$Od z0y8WF@raAU=y8-LdKhQ&Omw68!5!~Y*A}p!1%G+)Af^k22hZJr<~)VS-W#jZ>1}J8 zn>&MAiB?@)|KP$7{O`HXh58rf?WCQ;`@4(ub7N1*oZRbM*~4v&+xy zM9qIcq`Rv5Kpd1|xXK!)CI>Ot-;3d$3go(F#KIcJM-IapKY<3lj3V=t=RWjdER-FJfWX%A7jM3aVyX1tg|=t9sG=X) zy!r9Z-gx5|H`Zxq2f2tz$HBe-_!7y?A{2y)CXrsU88(qvp;V@_La=2c0a}gY#nf^% zT`WgO)lD$SR#?NX*s7CIm{$qb(uO1}dKFCY{24F6L3SW@&bmT<=8S5E06DjiDmrPh zP#6hLhT#+Y;aL5&TIrS2@#I~1V-ZcU9?B3DOLw*Xo4a>^`a=JH(eEeX`pVz;^knPN zNLOtLLL<%nxnH^q?TIGAK=4?P9zOa8O5^=#jK>vSZ|V_*4528br$d^m$sRbOKoXTC z01a|YQ4UgA)Fa#&l_u7t)`56#wfAXmzef)q8OlgKix zF`PQ|GUvk}mEoW<5yKDee7~;@&kL*!8OtA?IFXT?i(TxPi}DzPxNc}^Dci35;pCZb8E4zCv@O7*=0-es>Lf3kgKbS> zoP{m%@yS>c7Jtrmq)#|bQr1uepJKq(Z0GFP{e?f8r_YcawJyRlzvnLu5~@b5grl$a zR}m`;Q@Qbwh2rD@#xgq*E)No&IaG#?e|yud_=9!pQ0q(#Y8fKZRq_}6_U-s)clX=w zaQ%)%EV{cpj|5{8@n z4k~>`b2I+W);n+q2}2bxG!4P+!gp2wb=R(JrBb=~LV(DdKhsj&$5_g(;9LEM;RiH!QuBBvJ#8m)xz@Yf7#T9-&wUv-C5zC8&)q( zo<4RA2S!JKkFM(3cRF^?6F^YcudZ41#k-d-MZIM*fBhWu|ipuS`BH+R#dp`?4YUHtyPx-IMsa+B~g@hDpKzVQAwT=R+p)I zsHnVjEP{JlTk+4AEXJy8W5VU?g*is5CVzU7g)qbzx`aSr&Q>^R09y0MtJCNUFoSR9BY$rP4z z;9Hqlr_3vV+gEkVqusl+lZC?Nz2#9&esNQK78BLnH%#=Gd_(Nao1R?&p2~+u2gTt~H8mEZ-K3P3{>U z-uhmSE3%g3&$_#_LWhtn{L1XT+k;A76(S-GvBZ@Z`}(?=sdY+L|6Z|{npOPGp+h@_ zD4Yv7b*XY$QH4=;$vAN$aX6`l1c2VYH*9;)xMU^iMQe3e%5j`t&+uhiW_W(%#Q zTLM0zanrt$k*@Y+vMzgbT}cu5^p^(?;JHlZ30lR2Z&zHZhg^PArz%3Z7@GE#HBC*Q zx^Lx5tVsvngy^!0DB_35kK^dX#Ey{XeYze9YA$lc6jGC#VrVI!x|fQPO@yzN;9u>v zg>-KonV9&t>$=;6Bzg0ZE3S~5h+-J(w~;b`Om34Q-7WRLf#qC8lpxD6L=n<#p0}*0 zI6WSp>)oB}Emut;vqkQo;c42#3DbPPY$z;>5p=fXGTkOz)>Fzd0BKm0#WJ!sMwVlI z<1)vGxyUu4kl7+kGXHexx_-ZGfiAmli(+JNVcFnI*yXtb0~vU+09l7G>-glgC_pWc zaoxR4=)QNQV#8eJnp4QRB9%&;3SzaROVjmER-)88fVgRPMrFT9&r8d$c(U)8>LJs# zY{|B>YEvCe%ka=%&vi4r&(h$Y1sRvN$4a(;uvQs>p<-h*T(|!Ni+iQzMT{XN zj1kyYeA`Z zA6bejw+aoPa%9tQ{HJm>)(0>p7{?6-POSGvMxT}$H6cufBH&l|eF^JtorijS#;{~6 z+9zkjyP+B1$g*O~Xh|6rAspm6EV%oTi}BV4lRv#G>Ufy$LC@@bc;9Zoce1V6MWl3N zgcva)y=2_^@DjW^zce#Br%w{tt`I5BM9TG}A!S5_d``yEF&3l@n-I1ctfoFEQC~YU`X`T>-hJv6ZH`0gFY3L8FjJ0J5A`7=pmV zB0#5nkU{laO;16RWJpwaPbQPl4Gj|~7UR+D%kP-${p*nG@LX4U@B>WU>BC)v9VZX= zB1y+0N)pCSMlzTLzGou%rpcVC=f*j z$&^U<0tzQgf<&1?UCFjJ{Z6;lu9Dr6Gs<4FUm5kS$TQG`R@OIKB`D{T~1@W=2-n< z$0UT5;?$1;{;kwJ-48}eYKEZPy~n7L4z2=Gf9Yrj{-}hoblfx-@8JZ3 ziAWg`R0(>(US|Kh?Ylo&@js6(2nPQIw%Hxd2w8cBhL-FU%ChYE)@2uBX@w0!Jc{;Y z44qwJ2s-`E5@1cyW5M(x4fKi_{om(O^1X$uYk)}k?uE19AW!O{*LJ~GJPU7csl)ka zOomOdB9$akNOc(`5!@uq@00n932cQ##A0zNJ%q!n$FYH5wH@=xnVWieE30_;!7Lru zo`#J$L14e0iHMb)>-k>u^(!y>?tRM*(&HL=NYkAGVdbso;OUzxaZ!n%bblvWVkAb% zC{299G}b))8cBmL@cq$0gO7=bb|ge6I(@acVex6W_2LSIS}1OFWD_a-NF8ag%R1Cl zl2NDpaLoy5PGA)k?G3W_ zR{rk`Pydgum2bSi!BbRHY9wP(;kVZ;z#nd1jH$VC)CRiHWjMh`SJwC^*lCEl5hTv@ zmfTcgbdX^ZOp8D^g``O*_0!o}i{*vOrOs6n9um`C>zF zkZa6=3)>QNqVRts080sXZ}xWg_v7%dUAc7H_@_tu>;+{6v=^uT_D6GZ0*HX7`N zMM1<@LpG%X-(ETof#y0S9K~3@tr<~@RiG*+5eb3pk)%+Z0`qeO&A@2Dt+aIZD+WGy z2q6?3U47l0@oi`uXuKa$fA*VieE+`1GiIEohrI{Hhn6qEeczaisJ9M*IL$~_7v}H_ zrcq@WBkE)_4tXpXY!OuWTN`le;&S|G$uvYrY6M3P-rQD?7>$~uNNEC1h1dJ(;)sN! zAK#ykYMX$$1E1?BgqH-&%t!a6af~|#l5wAO`+wf~yGLhDntX~b`n$xx-F+<Oz30~qLPCo#g4AFdMv->41AZef}!?3Fzf|*ziJN>lsval>O>)X zC1?rreME~+%4}F3)8T|}#d@xC zP<-mXOOX?AL@+`{1Ty9}3g-A%k4`}x3#_`5Z01SnkqjsnvLm&)dFga~XX)wik|&mO zmEzScO$eo|5G@|E8|-zFGp#6^#8YY%ppwR3UK`W*cRwLk0p;V_f7|Cxy;1So+wXqx ze@-hco~Rd4F7}CEd=+v>1Hx>WWzyHACUl4yY(i$om~4c=Dv2l|n4 zm3N+V`Hla!WYWwE-5zNZAN%Pg5SzM)48^n+hLIVWI2?j$N79dZeA!Z@$UX#G>v79P zmH7U})9Ep(FLH@L++9a849xGB<#t3RadeiQ)fSIEFXiLEO+v_4PC2t=d@F%Hg$uHm z{OsAgCR8lclWpzd@9+2uj93dft)!;pOiIL&5Ds}v5<|8kF1ny8WK+ELxbC9a_`xNo zkWJYS-QqIcUDNGNQZ8i-z)SdeT_ry@2_c8^3-gN5fpI{Tv;ya)Ry3UPU{bTd?`swB z`BnwW)nk8c8c9}hh8$RI`PJ-{$)AsYQnhMUwF`&0pM zHNJQ8Of0|XO!(T{p>q^Zncp0@BaAV?*H1+qFLLF_<~JkzQ9?E>Tnz>F*+=5+ik?no;&}p__v*nFG)9I!7ZG^5b9J3E@{$y&uW(i$L~^(<7W%lmwOPCo0-o+i@!;ByS~`I2iF$9;*jMxwbJ`j==RM zD%X_rW051pT*ugT!5{=pJ zi}~dRkYZu;#b{e?E5-L;WKz}nC~!MW4ofFIiTX5y$KZMSm4yD-eI>Pre;HP=0K(lu5QrmOWDwG z#gBDL1|7l!q!B4`nbPut6I=KD>F+E=0^RsxMScy&2sw7MDqG3FeCip6XvR38ODS{w z?BP{Qi%QE-nWf;m`IF!elRuy0GO32XvN*e;$Ae)W%QwwbQEV(C$idCOdksHYwHLpB zz8ap2OR(a(S}gk6-|^Jz`;nKGLk>(7DY*xOMVWnPX3og1CDq6B;2^1UqSn_2gZ$L| z+&uCKH;$QvOv^$C?^eNt6nN~Jjn4a|`M7mpPwpr-LQMlf( zMg$~|d(Lzlf{_mENXK(J!%g0RJvSRAC0TfJPZ(GJ>=~@C?m|}S3~a9Vn$Zl^1L^Yy z_u>W!2+S-#6GN)b8}5PEPYFz_t-GC0eTwSq!WiLnGNZh8h)ClwWqKaQ#9J5)ny5+- z|LyI|OD0ajlspd>omz}=Qa97;!U#ej!Ayr!<&H+oMye=6L1b9yz*9dw6Gfy3B`Zz2 zxC)C^$7DHzyOu9PC=#ITfCUyUHE1+v9QN2C7f7|F(A*h>KS7Cjic#jwst9>fz9_~B zg(|qXQeZ0Ug~bRWgJ9`+zi|2an>KHk<6Z6e+PO2JN4@0lD-iX#S!)>1az{Qg$(@;Y z6`p(#Ty{#6r^q9UBr(ZTh&j_MDW-{1Wsi(^%t?b+gwygZRD$IWSdu8Jkqd)Rl6I9z zDvb2wBuP{_5=B#Y54wl~BObx@Nd*T-8x#%%ds^fa7Kn5{o6@WoYQIu^*asD*ix$*{nw5B7O!doP$V39Bs0YDcRti0%jlv?SF%p%4Xg z(wOgy!n+%ZiZlcZIts9K>{sU$zVOmpB}wup&zn_-TqV+58a2!sgJAX{4?fw1-V&_H zs)~wHIZivC{KpP#(<<@!^Hq3uLkRc3v>DIsOu~{?21mRGfBN~AaCFx~%__jkxA&qs zWv2+JpbT;|k1__u&se`3j~ve7Na~`B2SpoD!CXaax(h~%%D7gvw6{^p z#EQ1Ah*?3LS#hd2FiCBl2rDnb>@%@^_VvlDc#Re+QoRCKa9}Pn-A_%=oid%6+ znNk``oNP}I0-7DCyPL72T@sUH@F)G+(s%|QC;t&yp{`X{utHKHJp9MjK+MjCVlF7tUxL&A;y!i zAVc6UTrW&?zqes?3FXo;tK0#X#H~5(RSkub^zY>!TZ`zRn8kwbumq3O3QyDz!!sMt zuGv8|--bkjW;Nf^PfhG4J@v+|8~eAuxXxs6iwe#JN+a zA`tE%SJg2DRh6!pGi?eL0D^)o$qjDQM4OF#bghXi6-(~l4j0-aHN~s(v(O@ z7@S+6%+x7o;(@2P;f>7=_-HTL49^58p(gzIPnV&URLV^cyogRpiidkBey0>VSsNlu zF(dBYwg?RBKv3F7GYN%`)uv@;pO}c4)G&f% z_t3Gsse7i4+{Pl0f{9Mu?AA!3_Wt&QKku+B>oGC+FkQf0>Jm=XgjeBWBk5n^YZp?F76u7Fn#Ikvl-{7OhT3s=SibkL z9ORKjDLsGX+0(J0ycm&05>`^U@$OE1bJWo`Aj-rC>@#lm>st-ezQ}Dr|Nqwj5}O)t-&wqI{gu{p{*Ys4E72tY0)l_|~_= zjSQepIep^(+Io=<>--7%2uBm-weW8l%6!$#_8ghDImH3C?0nq)=!ad3lvaCn@qnE)Un6|^TE3zFQ?W%^|VKdi^v{3T1 zm0}PM2EYBSf7(|Zs~+(#4TFJq7~*?M3ZT6!oEcARqfeSfqquk(xKz_DNb)rPC4LSaMO`pgt5Fss9DIb1*!xwSUlo;;2WighWVa19Y z<{+#6Lww`BS#<7ry209vGmHpoh{jstAQx^-Gq zAqltMcx~(K&}#=WrLHK6%)Jv{_OjY*I!^)`kYc ztagZ|ZiNu`R z>LLjZF@HP4;RwYDR`YpY$H6u6qn|%*y18juCMQ6ZxEABYnvHwV5oO8XJXrz`*@1?D zj@`}VrA5QyP1k<4zOw73YF;LR451}}Jl+aj

1;lUSwjs$T-m1^pJ?i3YsCKTkr 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/golf_profile.png b/app/src/main/res/drawable/golf_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..3429a7c25636f5a550a44eac425475a6dd369301 GIT binary patch literal 7104 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 + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_profile.xml b/app/src/main/res/drawable/ic_profile.xml new file mode 100644 index 0000000..40c739b --- /dev/null +++ b/app/src/main/res/drawable/ic_profile.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_profile_filled.xml b/app/src/main/res/drawable/ic_profile_filled.xml new file mode 100644 index 0000000..00d13a6 --- /dev/null +++ b/app/src/main/res/drawable/ic_profile_filled.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/pingpong.png b/app/src/main/res/drawable/pingpong.png new file mode 100644 index 0000000000000000000000000000000000000000..31a283f5319e61af90021027b27a15a937299946 GIT binary patch literal 63273 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�JX(HB~VUlR`C?L_|CK!4Iy{-cqmZ)u^Bh_f0 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/soccer_profile.png b/app/src/main/res/drawable/soccer_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..94af83f1a0b9b6496b03356a108c8b6719b5a911 GIT binary patch literal 7980 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 Qk^lez07*qoM6N<$f?KpJYybcN literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/volleyball_profile.png b/app/src/main/res/drawable/volleyball_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..c5d38ff7585d2145723560d12fa487d22a0f0a4f GIT binary patch literal 12898 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≷e9-&%&(V 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 M07*qoM6N<$f+)TP?f?J) literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/weightlifting_profile.png b/app/src/main/res/drawable/weightlifting_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..643b22a3202b571aa5f47861dc7b3b73f42a7856 GIT binary patch literal 6355 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 VqE=?NAqD^d002ovPDHLkV1iU42lM~{ literal 0 HcmV?d00001 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3a5a0da..d111f3a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -18,8 +18,8 @@ apollo = "4.1.1" material3 = "1.4.0-alpha11" runtime = "1.9.4" ui = "1.9.4" -foundation = "1.9.4" foundationVersion = "1.10.3" +material3Version = "1.4.0" [libraries] @@ -35,8 +35,8 @@ androidx-activity = { group = "androidx.activity", name = "activity", version.re androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" } androidx-runtime-android = { group = "androidx.compose.runtime", name = "runtime-android", version.ref = "runtimeAndroid" } apollo-runtime = { module = "com.apollographql.apollo:apollo-runtime", version.ref = "apollo" } -androidx-foundation = { group = "androidx.compose.foundation", name = "foundation", version.ref = "foundation" } -foundation = { group = "androidx.compose.foundation", name = "foundation", version.ref = "foundationVersion" } +androidx-foundation = { group = "androidx.compose.foundation", name = "foundation", version.ref = "foundationVersion" } +androidx-material3 = { group = "androidx.compose.material3", name = "material3", version.ref = "material3Version" } [plugins] From f931b201c5b68faf69ce87b90d60303317a43c2e Mon Sep 17 00:00:00 2001 From: Emil Jiang <77295343+EmilJiang@users.noreply.github.com> Date: Wed, 25 Mar 2026 10:35:27 -0400 Subject: [PATCH 3/5] Fixed BaseBall Scoring and IsLive (#102) * git issue fix * advanced fitler first iteration * center icon * google-services.json * fix scrollable * pagination * changes for baseball scores * Delete app/src/google-services.json --- app/build.gradle.kts | 4 ++-- app/src/main/graphql/Games.graphql | 1 + .../com/cornellappdev/score/model/Game.kt | 16 +++++++++----- .../score/model/ScoreRepository.kt | 10 ++++++++- .../cornellappdev/score/util/GameDataUtil.kt | 22 +++++++++++++------ 5 files changed, 38 insertions(+), 15 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f8a22cd..bd87c32 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -11,7 +11,7 @@ if (secretsPropertiesFile.exists()) { plugins { alias(libs.plugins.androidApplication) alias(libs.plugins.jetbrainsKotlinAndroid) version "1.9.10" - alias(libs.plugins.apollo) + id("com.apollographql.apollo") version "4.0.0" id("kotlin-kapt") id("com.google.dagger.hilt.android") id("org.jetbrains.kotlin.plugin.compose") version "2.0.0" // this version matches your Kotlin version @@ -100,7 +100,7 @@ dependencies { androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1") - implementation(libs.apollo.runtime) + implementation("com.apollographql.apollo:apollo-runtime:4.0.0") implementation("io.coil-kt.coil3:coil-compose:3.1.0") implementation("io.coil-kt.coil3:coil-network-okhttp:3.1.0") lintChecks(libs.compose.lint.checks) diff --git a/app/src/main/graphql/Games.graphql b/app/src/main/graphql/Games.graphql index 0af8c70..66fe3c6 100644 --- a/app/src/main/graphql/Games.graphql +++ b/app/src/main/graphql/Games.graphql @@ -2,6 +2,7 @@ query Games{ games{ id date + time city sport team{ diff --git a/app/src/main/java/com/cornellappdev/score/model/Game.kt b/app/src/main/java/com/cornellappdev/score/model/Game.kt index d6c93d7..6074d76 100644 --- a/app/src/main/java/com/cornellappdev/score/model/Game.kt +++ b/app/src/main/java/com/cornellappdev/score/model/Game.kt @@ -20,6 +20,7 @@ data class Game( val id: String, val teamName: String, val teamLogo: String, + val time: String?, val teamColor: Color, val gender: String, val sport: String, @@ -146,7 +147,7 @@ data class TeamScore( // Aggregated game data showing scores for both teams data class GameData( val teamScores: Pair -){ +) { val maxPeriods: Int get() = maxOf( @@ -250,7 +251,11 @@ fun Game.toGameCardData(): GameCardData { date = parseDateOrNull(date), dateString = parseDateOrNull(date)?.format(outputFormatter) ?: date, - isLive = (LocalDate.now() == parseDateOrNull(date)), + isLive = parseDateTimeOrNull(date, time ?: "")?.let { startTime -> + val now = LocalDateTime.now() + val endTime = startTime.plusHours(2) + now.isAfter(startTime) && now.isBefore(endTime) + } ?: false, isPast = isPast, location = city, gender = gender, @@ -290,14 +295,15 @@ fun GameDetailsGame.toGameCardData(): DetailsCardData { scoreBreakdown = scoreBreakdown, team1 = TeamBoxScore("Cornell"), team2 = TeamBoxScore(team?.name ?: ""), - sport = sport + sport = sport, + result = result ?: "" ), scoreEvent = boxScore?.toScoreEvents(team?.image ?: "") ?: emptyList(), daysUntilGame = daysUntil, hoursUntilGame = hoursUntil, - homeScore = convertScores(scoreBreakdown?.getOrNull(0), sport).second + homeScore = convertScores(scoreBreakdown?.getOrNull(0), sport, result ?: "").second ?: parsedScores?.first ?: 0, - oppScore = convertScores(scoreBreakdown?.getOrNull(1), sport).second + oppScore = convertScores(scoreBreakdown?.getOrNull(1), sport, result ?: "").second ?: parsedScores?.second ?: 0 ) } diff --git a/app/src/main/java/com/cornellappdev/score/model/ScoreRepository.kt b/app/src/main/java/com/cornellappdev/score/model/ScoreRepository.kt index 2b84524..1e9d91b 100644 --- a/app/src/main/java/com/cornellappdev/score/model/ScoreRepository.kt +++ b/app/src/main/java/com/cornellappdev/score/model/ScoreRepository.kt @@ -4,6 +4,7 @@ import android.util.Log import com.apollographql.apollo.ApolloClient import com.cornellappdev.score.util.isValidSport import com.cornellappdev.score.util.parseColor +import com.cornellappdev.score.util.parseResultScore import com.example.score.GameByIdQuery import com.example.score.GamesQuery import com.example.score.PagedGamesQuery @@ -75,6 +76,7 @@ class ScoreRepository @Inject constructor( id = game.id ?: "", // Should never be null teamLogo = it, teamName = game.team.name, + time = game.time, teamColor = parseColor(game.team.color).copy(alpha = 0.4f * 255), gender = if (game.gender == "Mens") "Men's" else "Women's", sport = game.sport, @@ -133,11 +135,15 @@ class ScoreRepository @Inject constructor( .mapNotNull { graphqlGame -> val scores = graphqlGame.result?.split(",")?.getOrNull(1)?.split("-") val cornellScore = scores?.getOrNull(0)?.toNumberOrNull() - val otherScore = scores?.getOrNull(1)?.toNumberOrNull() + ?: parseResultScore(graphqlGame.result)?.first + val otherScore = scores?.getOrNull(1)?.toNumberOrNull() ?: parseResultScore( + graphqlGame.result + )?.second graphqlGame.team?.image?.let { imageUrl -> Game( id = graphqlGame.id ?: "", teamLogo = imageUrl, + time = graphqlGame.time, teamName = graphqlGame.team.name, teamColor = parseColor(graphqlGame.team.color).copy(alpha = 0.4f * 255), gender = if (graphqlGame.gender == "Mens") "Men's" else "Women's", @@ -171,6 +177,7 @@ class ScoreRepository @Inject constructor( * `currentGamesFlow` to be observed. */ fun getGameById(id: String) = appScope.launch { + Log.d("ScoreRepository", "Fetching game with id: $id") _currentGameFlow.value = ApiResponse.Loading try { val result = @@ -181,6 +188,7 @@ class ScoreRepository @Inject constructor( result.getOrNull()?.game?.let { _currentGameFlow.value = ApiResponse.Success(it.toGameDetails()) + } ?: _currentGameFlow.update { ApiResponse.Error } } catch (e: Exception) { Log.e("ScoreRepository", "Error fetching game with id: ${id}: ", e) diff --git a/app/src/main/java/com/cornellappdev/score/util/GameDataUtil.kt b/app/src/main/java/com/cornellappdev/score/util/GameDataUtil.kt index a25e9ee..2da4dbb 100644 --- a/app/src/main/java/com/cornellappdev/score/util/GameDataUtil.kt +++ b/app/src/main/java/com/cornellappdev/score/util/GameDataUtil.kt @@ -1,5 +1,6 @@ package com.cornellappdev.score.util +import android.util.Log import com.cornellappdev.score.model.GameData import com.cornellappdev.score.model.TeamBoxScore import com.cornellappdev.score.model.TeamScore @@ -17,7 +18,7 @@ import com.cornellappdev.score.model.TeamScore * @return a pair where the first value is a list of parsed period scores and the second is the total score (or null if invalid) */ // TODO: ASK ABOUT OT. Other sports might be added. -fun convertScores(scoreList: List?, sport: String): Pair, Int?> { +fun convertScores(scoreList: List?, sport: String, result: String): Pair, Int?> { if (scoreList == null || scoreList.size < 2) return Pair(emptyList(), null) var scoresByPeriod = scoreList @@ -31,7 +32,12 @@ fun convertScores(scoreList: List?, sport: String): Pair, Int } if (sport.lowercase() == "baseball") { - scoresByPeriod = scoresByPeriod.take(9) + val scoreParsed = result.split("(") + scoresByPeriod = if (scoreParsed.size > 1) { + scoresByPeriod.take(6) + } else { + scoresByPeriod.take(9) + } val totalScore = scoresByPeriod.sum() return Pair(scoresByPeriod, totalScore) } @@ -56,14 +62,15 @@ fun toGameData( scoreBreakdown: List?>?, team1: TeamBoxScore, team2: TeamBoxScore, - sport: String + sport: String, + result: String, ): GameData { val (team1Scores, team1Total) = scoreBreakdown?.getOrNull(0)?.let { - convertScores(it, sport) + convertScores(it, sport, result) } ?: (emptyList() to null) val (team2Scores, team2Total) = scoreBreakdown?.getOrNull(1)?.let { - convertScores(it, sport) + convertScores(it, sport, result) } ?: (emptyList() to null) val team1Score = @@ -90,11 +97,12 @@ fun parseResultScore(result: String?): Pair? { if (parts.size != 2) return null val scorePart = parts[1].split("-") + val secondScorePartEdge = scorePart[1].split("(") if (scorePart.size != 2) return null val homeScore = scorePart[0].toIntOrNull() - val oppScore = scorePart[1].toIntOrNull() - + val oppScore = secondScorePartEdge[0].toIntOrNull() + Log.d("HIHI", oppScore.toString()) if (homeScore != null && oppScore != null) { return Pair(homeScore, oppScore) } else { From d02c83797df601957af3cc5c444113ae9e54f269 Mon Sep 17 00:00:00 2001 From: Mabel Qiu Date: Mon, 20 Apr 2026 13:29:20 -0400 Subject: [PATCH 4/5] profile work --- .../score/screen/EditProfileScreen.kt | 7 +++---- app/src/main/res/drawable/upload.xml | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/drawable/upload.xml diff --git a/app/src/main/java/com/cornellappdev/score/screen/EditProfileScreen.kt b/app/src/main/java/com/cornellappdev/score/screen/EditProfileScreen.kt index 580a251..5fe691b 100644 --- a/app/src/main/java/com/cornellappdev/score/screen/EditProfileScreen.kt +++ b/app/src/main/java/com/cornellappdev/score/screen/EditProfileScreen.kt @@ -260,6 +260,7 @@ fun AvatarPickerBottomSheet( var selectedAvatar by remember { mutableStateOf(null) } val avatars = listOf( + AvatarOption(R.drawable.upload), AvatarOption(R.drawable.pingpong_profile), AvatarOption(R.drawable.soccer_profile), AvatarOption(R.drawable.tennis_profile), @@ -270,8 +271,7 @@ fun AvatarPickerBottomSheet( AvatarOption(R.drawable.volleyball_profile), AvatarOption(R.drawable.golf_profile), AvatarOption(R.drawable.weightlifting_profile), - AvatarOption(R.drawable.baseball_profile), - AvatarOption(R.drawable.football_profile) + AvatarOption(R.drawable.baseball_profile) ) ModalBottomSheet( @@ -395,11 +395,10 @@ fun AvatarIconGrid( } } } - +// TODO: support uploaded profile photos later data class AvatarOption( val imageRes: Int ) - @Preview(showBackground = true) @Composable private fun EditProfileScreenPreview() { diff --git a/app/src/main/res/drawable/upload.xml b/app/src/main/res/drawable/upload.xml new file mode 100644 index 0000000..c43a7e6 --- /dev/null +++ b/app/src/main/res/drawable/upload.xml @@ -0,0 +1,19 @@ + + + + + + + From e525d284febc7761818126f9d049e9fd2887b1b1 Mon Sep 17 00:00:00 2001 From: Mabel Qiu Date: Tue, 21 Apr 2026 10:45:32 -0400 Subject: [PATCH 5/5] Move profile nav to top right on home screen --- .../cornellappdev/score/nav/ScoreNavHost.kt | 10 ++-- .../score/nav/root/RootNavigation.kt | 6 --- .../cornellappdev/score/screen/HomeScreen.kt | 46 +++++++++++++++---- app/src/main/res/drawable/profile_ic.xml | 21 +++++++++ 4 files changed, 64 insertions(+), 19 deletions(-) create mode 100644 app/src/main/res/drawable/profile_ic.xml diff --git a/app/src/main/java/com/cornellappdev/score/nav/ScoreNavHost.kt b/app/src/main/java/com/cornellappdev/score/nav/ScoreNavHost.kt index 10ab410..43e2f28 100644 --- a/app/src/main/java/com/cornellappdev/score/nav/ScoreNavHost.kt +++ b/app/src/main/java/com/cornellappdev/score/nav/ScoreNavHost.kt @@ -37,9 +37,13 @@ fun ScoreNavHost(navController: NavHostController) { ) { composable { CompositionLocalProvider(LocalViewModelStoreOwner provides mainScreenViewModelStoreOwner) { - HomeScreen(navigateToGameDetails = { - navController.navigate(ScoreScreens.GameDetailsPage(it)) - } + HomeScreen( + navigateToGameDetails = { + navController.navigate(ScoreScreens.GameDetailsPage(it)) + }, + navigateToProfile = { + navController.navigate(ScoreScreens.Profile) + } ) } } diff --git a/app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt b/app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt index 8358719..81909eb 100644 --- a/app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt +++ b/app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt @@ -171,10 +171,4 @@ val tabs = listOf( selectedIcon = R.drawable.ic_scores_filled, screen = ScoreScreens.ScoresScreen, ), - NavItem( - label = "Profile", - unselectedIcon = R.drawable.ic_profile, - selectedIcon = R.drawable.ic_profile_filled, - screen = ScoreScreens.Profile, - ), ) diff --git a/app/src/main/java/com/cornellappdev/score/screen/HomeScreen.kt b/app/src/main/java/com/cornellappdev/score/screen/HomeScreen.kt index 1536efa..6485962 100644 --- a/app/src/main/java/com/cornellappdev/score/screen/HomeScreen.kt +++ b/app/src/main/java/com/cornellappdev/score/screen/HomeScreen.kt @@ -53,12 +53,19 @@ import com.cornellappdev.score.util.gameList import com.cornellappdev.score.util.sportSelectionList import com.cornellappdev.score.viewmodel.HomeUiState import com.cornellappdev.score.viewmodel.HomeViewModel +import androidx.compose.foundation.Image +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.size +import androidx.compose.ui.draw.clip +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.ui.unit.dp @OptIn(ExperimentalMaterial3Api::class) @Composable fun HomeScreen( homeViewModel: HomeViewModel = hiltViewModel(), - navigateToGameDetails: (String) -> Unit = {} + navigateToGameDetails: (String) -> Unit = {}, + navigateToProfile: () -> Unit = {} ) { val uiState = homeViewModel.collectUiStateValue() var showBottomSheet by remember { mutableStateOf(false) } @@ -83,8 +90,9 @@ fun HomeScreen( onGenderSelected = { homeViewModel.onGenderSelected(it) }, onSportSelected = { homeViewModel.onSportSelected(it) }, navigateToGameDetails = navigateToGameDetails, + navigateToProfile = navigateToProfile, onRefresh = { homeViewModel.onRefresh() }, - onAdvancedFilterClick = { showBottomSheet = true } + onAdvancedFilterClick = { showBottomSheet = true }, ) } } @@ -112,6 +120,7 @@ private fun HomeContent( onSportSelected: (SportSelection) -> Unit, onRefresh: () -> Unit, navigateToGameDetails: (String) -> Unit = {}, + navigateToProfile: () -> Unit = {}, onAdvancedFilterClick: () -> Unit ) { ScorePullToRefreshBox(isRefreshing = uiState.loadedState == ApiResponse.Loading, onRefresh) { @@ -120,6 +129,7 @@ private fun HomeContent( onGenderSelected, onSportSelected, navigateToGameDetails, + navigateToProfile, onAdvancedFilterClick ) } @@ -132,23 +142,37 @@ private fun HomeLazyColumn( onGenderSelected: (GenderDivision) -> Unit, onSportSelected: (SportSelection) -> Unit, navigateToGameDetails: (String) -> Unit, + navigateToProfile: () -> Unit, onAdvancedFilterClick: () -> Unit ) { LazyColumn(contentPadding = PaddingValues(top = 24.dp)) { - if (uiState.filteredGames.isNotEmpty()) { - item { + item { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { Text( text = "Upcoming", style = heading1, - color = GrayPrimary, + color = GrayPrimary + ) + + Image( + painter = painterResource(id = R.drawable.profile_ic), + contentDescription = "Profile", modifier = Modifier - .fillMaxWidth() - .padding(start = 24.dp) + .size(28.dp) + .clip(CircleShape) + .clickable { navigateToProfile() } ) } - item { - Spacer(Modifier.height(16.dp)) - } + } + + item { + Spacer(Modifier.height(16.dp)) } if (uiState.filteredGames.isNotEmpty()) { item { @@ -242,6 +266,7 @@ private fun HomeScreenPreview() = ScorePreview { onGenderSelected = {}, onSportSelected = {}, onRefresh = {}, + navigateToProfile = {}, onAdvancedFilterClick = {} ) } @@ -260,6 +285,7 @@ private fun HomeScreenEmptyStatePreview() = ScorePreview { onGenderSelected = {}, onSportSelected = {}, onRefresh = {}, + navigateToProfile = {}, onAdvancedFilterClick = {} ) } diff --git a/app/src/main/res/drawable/profile_ic.xml b/app/src/main/res/drawable/profile_ic.xml new file mode 100644 index 0000000..56d022e --- /dev/null +++ b/app/src/main/res/drawable/profile_ic.xml @@ -0,0 +1,21 @@ + + + + +