From 0948c263fd7241b2d26ed4b36152d4da14c564ef Mon Sep 17 00:00:00 2001 From: GSM-Minseok Date: Tue, 9 Jul 2024 10:14:42 +0900 Subject: [PATCH 1/4] :sparkles: :: Add ranking list click navigation --- .../ui/navigation/StackKnowledgeBottomNavigation.kt | 3 ++- .../java/com/stackknowledge/main/component/RankingList.kt | 4 +++- .../com/stackknowledge/main/component/RankingListItem.kt | 8 ++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/core/ui/src/main/java/com/minstone/ui/navigation/StackKnowledgeBottomNavigation.kt b/core/ui/src/main/java/com/minstone/ui/navigation/StackKnowledgeBottomNavigation.kt index 37db4f80..cfb414dc 100644 --- a/core/ui/src/main/java/com/minstone/ui/navigation/StackKnowledgeBottomNavigation.kt +++ b/core/ui/src/main/java/com/minstone/ui/navigation/StackKnowledgeBottomNavigation.kt @@ -11,6 +11,7 @@ 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.material3.NavigationBar import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -56,7 +57,7 @@ fun StackKnowledgeBottomNavigation( ) navItems.forEachIndexed { index, (iconRes, navigateType, stringResId) -> - if (index != 2 || role == Authority.ROLE_TEACHER) { // 로그인 로직 적용후 변경 + if (index != 2 || role == Authority.ROLE_TEACHER) { BottomNavigationComponent( modifier = modifier .weight(1f) diff --git a/feature/main/src/main/java/com/stackknowledge/main/component/RankingList.kt b/feature/main/src/main/java/com/stackknowledge/main/component/RankingList.kt index 521d9e6c..80dfee42 100644 --- a/feature/main/src/main/java/com/stackknowledge/main/component/RankingList.kt +++ b/feature/main/src/main/java/com/stackknowledge/main/component/RankingList.kt @@ -26,6 +26,7 @@ import enumdatatype.Authority fun RankingList( modifier: Modifier = Modifier, getRankingUiState: GetRankingUiState, + onClick: (Int) -> Unit, ) { StackKnowledgeAndroidTheme { colors, _ -> Column( @@ -69,7 +70,8 @@ fun RankingList( RankingListItem( profileImage = list[index].user.profileImage, name = list[index].user.name, - point = list[index].cumulatePoint.toString() + point = list[index].cumulatePoint.toString(), + onClick = { onClick(index) }, ) } if (index < 3) { diff --git a/feature/main/src/main/java/com/stackknowledge/main/component/RankingListItem.kt b/feature/main/src/main/java/com/stackknowledge/main/component/RankingListItem.kt index 29dd92f9..016ca80a 100644 --- a/feature/main/src/main/java/com/stackknowledge/main/component/RankingListItem.kt +++ b/feature/main/src/main/java/com/stackknowledge/main/component/RankingListItem.kt @@ -2,6 +2,7 @@ package com.stackknowledge.main.component import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -29,6 +30,7 @@ fun RankingListItem( profileImage: String?, name: String, point: String, + onClick: () -> Unit, ) { StackKnowledgeAndroidTheme { colors, typography -> Box( @@ -38,7 +40,8 @@ fun RankingListItem( .background( color = colors.WHITE, shape = RoundedCornerShape(20.dp) - ), + ) + .clickable(onClick = onClick), contentAlignment = Alignment.Center ) { Column( @@ -98,6 +101,7 @@ fun RankingListItemPre() { RankingListItem( profileImage = "", name = "미소쌤", - point = "1000" + point = "1000", + onClick = {} ) } From 4387072edd767d40bc1880138ed4a613a01a39fe Mon Sep 17 00:00:00 2001 From: GSM-Minseok Date: Tue, 9 Jul 2024 11:08:13 +0900 Subject: [PATCH 2/4] :sparkles: :: Add mission list click navigation --- .../java/com/stackknowledge/main/component/MissionList.kt | 4 +++- .../com/stackknowledge/main/component/MissionListItem.kt | 8 ++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/feature/main/src/main/java/com/stackknowledge/main/component/MissionList.kt b/feature/main/src/main/java/com/stackknowledge/main/component/MissionList.kt index a23386fd..6fec813f 100644 --- a/feature/main/src/main/java/com/stackknowledge/main/component/MissionList.kt +++ b/feature/main/src/main/java/com/stackknowledge/main/component/MissionList.kt @@ -31,6 +31,7 @@ import remote.response.mission.MissionResponseModel fun MissionList( modifier: Modifier = Modifier, getMissionUiState: GetMissionUiState, + onClick: (Int) -> Unit, ) { StackKnowledgeAndroidTheme { colors, typography -> Column( @@ -75,7 +76,8 @@ fun MissionList( MissionListItem( teacherName = list[index].user.name, title = list[index].title, - point = list[index].point.toString() + point = list[index].point.toString(), + onClick = { onClick(index) }, ) Spacer(modifier = modifier.width(16.dp)) } diff --git a/feature/main/src/main/java/com/stackknowledge/main/component/MissionListItem.kt b/feature/main/src/main/java/com/stackknowledge/main/component/MissionListItem.kt index 951be70d..78aee8f9 100644 --- a/feature/main/src/main/java/com/stackknowledge/main/component/MissionListItem.kt +++ b/feature/main/src/main/java/com/stackknowledge/main/component/MissionListItem.kt @@ -1,6 +1,7 @@ package com.stackknowledge.main.component import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -24,6 +25,7 @@ fun MissionListItem( teacherName: String, title: String, point: String, + onClick: () -> Unit, ) { StackKnowledgeAndroidTheme { colors, typography -> Box( @@ -33,7 +35,8 @@ fun MissionListItem( .background( color = colors.WHITE, shape = RoundedCornerShape(20.dp) - ), + ) + .clickable(onClick = onClick), contentAlignment = Alignment.Center ) { Column( @@ -77,6 +80,7 @@ fun MissionListItemPre() { MissionListItem( teacherName = "미소쌤", title = "북학파의 배경", - point = "1000" + point = "1000", + onClick = {} ) } From 4e7ac3b1bb3835e60ec1ba7b123d427d3aa1d577 Mon Sep 17 00:00:00 2001 From: GSM-Minseok Date: Tue, 9 Jul 2024 11:09:38 +0900 Subject: [PATCH 3/4] :sparkles: :: Add handing main navigate --- .../com/stackknowledge/main/MainPageScreen.kt | 15 +++++++++------ .../main/navigation/MainNavigation.kt | 4 ++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/feature/main/src/main/java/com/stackknowledge/main/MainPageScreen.kt b/feature/main/src/main/java/com/stackknowledge/main/MainPageScreen.kt index 647091a4..e713bb2e 100644 --- a/feature/main/src/main/java/com/stackknowledge/main/MainPageScreen.kt +++ b/feature/main/src/main/java/com/stackknowledge/main/MainPageScreen.kt @@ -21,6 +21,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.minstone.ui.navigation.NavigateType import com.minstone.ui.navigation.StackKnowledgeBottomNavigation import com.stackknowledge.design_system.component.dialog.JoinWaitingDialog import com.stackknowledge.design_system.component.dialog.StackKnowledgeDialog @@ -37,7 +38,7 @@ import enumdatatype.Authority @Composable internal fun MainPageRoute( - onNavigate: (Authority, String) -> Unit, + onNavigate: (Authority, String, Int?) -> Unit, viewModel: MainViewModel = hiltViewModel() ) { var role by remember { mutableStateOf(Authority.ROLE_TEACHER) } //로그인 로직 적용후 변경 @@ -48,7 +49,7 @@ internal fun MainPageRoute( role = role, getMissionUiState = getMissionUiState, getRankingUiState = getRankingUiState, - onNavigate = { navType -> onNavigate(role, navType) }, + onNavigate = { navType, index -> onNavigate(role, navType, index) }, initMain = { with(viewModel) { getMission() @@ -64,7 +65,7 @@ private fun MainPageScreen( role: Authority, getMissionUiState: GetMissionUiState, getRankingUiState: GetRankingUiState, - onNavigate: (String) -> Unit, + onNavigate: (String, Int?) -> Unit, initMain: () -> Unit, ) { val scrollState = rememberScrollState() @@ -91,11 +92,13 @@ private fun MainPageScreen( StackKnowledgePager() Spacer(modifier = modifier.height(28.dp)) MissionList( - getMissionUiState = getMissionUiState + getMissionUiState = getMissionUiState, + onClick = { onNavigate(NavigateType.MISSION.value, it) } ) Spacer(modifier = modifier.height(20.dp)) RankingList( - getRankingUiState = getRankingUiState + getRankingUiState = getRankingUiState, + onClick = { onNavigate(NavigateType.RANKING.value, it) } ) } } @@ -112,7 +115,7 @@ private fun MainPageScreen( modifier = Modifier, role = role ) { - onNavigate(it) + onNavigate(it, null) } } } diff --git a/feature/main/src/main/java/com/stackknowledge/main/navigation/MainNavigation.kt b/feature/main/src/main/java/com/stackknowledge/main/navigation/MainNavigation.kt index 4d48a9f8..7f71a6ff 100644 --- a/feature/main/src/main/java/com/stackknowledge/main/navigation/MainNavigation.kt +++ b/feature/main/src/main/java/com/stackknowledge/main/navigation/MainNavigation.kt @@ -14,11 +14,11 @@ fun NavController.navigateToMain(navOptions: NavOptions? = null) { } fun NavGraphBuilder.mainScreen( - onNavigate: (Authority, String) -> Unit, + onNavigate: (Authority, String, Int?) -> Unit, ) { composable(route = mainPageRoute) { MainPageRoute( - onNavigate = onNavigate + onNavigate = onNavigate, ) } } \ No newline at end of file From 43a7b2c4f2ec05643e09027491b40b02002332f0 Mon Sep 17 00:00:00 2001 From: GSM-Minseok Date: Tue, 9 Jul 2024 11:10:00 +0900 Subject: [PATCH 4/4] :sparkles: :: Add handing main navigate --- .../navigation/StackKnowledgeNavHost.kt | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/stackknowledge/navigation/StackKnowledgeNavHost.kt b/app/src/main/java/com/stackknowledge/navigation/StackKnowledgeNavHost.kt index 3caf3949..be6cae2d 100644 --- a/app/src/main/java/com/stackknowledge/navigation/StackKnowledgeNavHost.kt +++ b/app/src/main/java/com/stackknowledge/navigation/StackKnowledgeNavHost.kt @@ -3,6 +3,7 @@ package com.stackknowledge.navigation import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.compose.NavHost +import com.minstone.ui.navigation.NavigateType import com.stackknowledge.login.navigation.loginScreen import com.stackknowledge.login.navigation.navigateToLogin import com.stackknowledge.login.navigation.roleCheckRoute @@ -11,10 +12,13 @@ import com.stackknowledge.main.navigation.mainPageRoute import com.stackknowledge.main.navigation.mainScreen import com.stackknowledge.main.navigation.navigateToMain import com.stackknowledge.navigation.util.bottomNavigationNavigate +import com.stackknowledge.ranking.navigation.navigateToRanking +import com.stackknowledge.ranking.navigation.navigateToTeacherRanking import com.stackknowledge.ranking.navigation.rankingScreen import com.stackknowledge.ranking.navigation.teacherRankingScreen import com.stackknowledge.score_mission.navigation.gradingAnswerScreen import com.stackknowledge.score_mission.navigation.navigateToGradingAnswer +import com.stackknowledge.score_mission.navigation.navigateToSolvedMission import com.stackknowledge.score_mission.navigation.solvedMissionScreen import com.stackknowledge.shop.navigation.shopScreen import com.stackknowledge.shop.navigation.teacherShopScreen @@ -23,8 +27,10 @@ import com.stackkowledge.mission.navigation.createMissionRoute import com.stackkowledge.mission.navigation.createMissionScreen import com.stackkowledge.mission.navigation.entireMissionRoute import com.stackkowledge.mission.navigation.entireMissionScreen +import com.stackkowledge.mission.navigation.navigateToEntireMission import com.stackkowledge.mission.navigation.navigateToResolveMission import com.stackkowledge.mission.navigation.resolveMissionScreen +import enumdatatype.Authority @Composable fun StackKnowledgeNavHost( @@ -44,7 +50,17 @@ fun StackKnowledgeNavHost( onRoleClick = navController::navigateToLogin ) mainScreen( - onNavigate = { role, navType -> bottomNavigationNavigate(role, navController, navType) } + onNavigate = { role, navType, index -> + if (index != null) { + if (navType == NavigateType.MISSION.value) { + if (role == Authority.ROLE_STUDENT) navController.navigateToEntireMission() + else navController.navigateToSolvedMission() + } else { + if (role == Authority.ROLE_STUDENT) navController.navigateToRanking() + else navController.navigateToTeacherRanking() + } + } else bottomNavigationNavigate(role, navController, navType) + }, ) createMissionScreen( onNavigate = { role, navType -> bottomNavigationNavigate(role, navController, navType) },