Skip to content

Commit d0a8ca2

Browse files
authored
Merge pull request #112 from Stack-Knowledge/feature/97-main-page-list-click-event-handing
🔀 :: (#97) - main page list click event handing
2 parents b8b1092 + 280e237 commit d0a8ca2

File tree

8 files changed

+48
-16
lines changed

8 files changed

+48
-16
lines changed

app/src/main/java/com/stackknowledge/navigation/StackKnowledgeNavHost.kt

+17-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.stackknowledge.navigation
33
import androidx.compose.runtime.Composable
44
import androidx.compose.ui.Modifier
55
import androidx.navigation.compose.NavHost
6+
import com.minstone.ui.navigation.NavigateType
67
import com.stackknowledge.login.navigation.loginScreen
78
import com.stackknowledge.login.navigation.navigateToLogin
89
import com.stackknowledge.login.navigation.roleCheckRoute
@@ -11,10 +12,13 @@ import com.stackknowledge.main.navigation.mainPageRoute
1112
import com.stackknowledge.main.navigation.mainScreen
1213
import com.stackknowledge.main.navigation.navigateToMain
1314
import com.stackknowledge.navigation.util.bottomNavigationNavigate
15+
import com.stackknowledge.ranking.navigation.navigateToRanking
16+
import com.stackknowledge.ranking.navigation.navigateToTeacherRanking
1417
import com.stackknowledge.ranking.navigation.rankingScreen
1518
import com.stackknowledge.ranking.navigation.teacherRankingScreen
1619
import com.stackknowledge.score_mission.navigation.gradingAnswerScreen
1720
import com.stackknowledge.score_mission.navigation.navigateToGradingAnswer
21+
import com.stackknowledge.score_mission.navigation.navigateToSolvedMission
1822
import com.stackknowledge.score_mission.navigation.solvedMissionScreen
1923
import com.stackknowledge.shop.navigation.shopRoute
2024
import com.stackknowledge.shop.navigation.shopScreen
@@ -25,8 +29,10 @@ import com.stackkowledge.mission.navigation.createMissionRoute
2529
import com.stackkowledge.mission.navigation.createMissionScreen
2630
import com.stackkowledge.mission.navigation.entireMissionRoute
2731
import com.stackkowledge.mission.navigation.entireMissionScreen
32+
import com.stackkowledge.mission.navigation.navigateToEntireMission
2833
import com.stackkowledge.mission.navigation.navigateToResolveMission
2934
import com.stackkowledge.mission.navigation.resolveMissionScreen
35+
import enumdatatype.Authority
3036

3137
@Composable
3238
fun StackKnowledgeNavHost(
@@ -46,7 +52,17 @@ fun StackKnowledgeNavHost(
4652
onRoleClick = navController::navigateToLogin
4753
)
4854
mainScreen(
49-
onNavigate = { role, navType -> bottomNavigationNavigate(role, navController, navType) }
55+
onNavigate = { role, navType, index ->
56+
if (index != null) {
57+
if (navType == NavigateType.MISSION.value) {
58+
if (role == Authority.ROLE_STUDENT) navController.navigateToEntireMission()
59+
else navController.navigateToSolvedMission()
60+
} else {
61+
if (role == Authority.ROLE_STUDENT) navController.navigateToRanking()
62+
else navController.navigateToTeacherRanking()
63+
}
64+
} else bottomNavigationNavigate(role, navController, navType)
65+
},
5066
)
5167
createMissionScreen(
5268
onNavigate = { role, navType -> bottomNavigationNavigate(role, navController, navType) },

core/ui/src/main/java/com/minstone/ui/navigation/StackKnowledgeBottomNavigation.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import androidx.compose.foundation.layout.Row
1111
import androidx.compose.foundation.layout.Spacer
1212
import androidx.compose.foundation.layout.fillMaxWidth
1313
import androidx.compose.foundation.layout.height
14+
import androidx.compose.material3.NavigationBar
1415
import androidx.compose.material3.Text
1516
import androidx.compose.runtime.Composable
1617
import androidx.compose.ui.Alignment
@@ -56,7 +57,7 @@ fun StackKnowledgeBottomNavigation(
5657
)
5758

5859
navItems.forEachIndexed { index, (iconRes, navigateType, stringResId) ->
59-
if (index != 2 || role == Authority.ROLE_TEACHER) { // 로그인 로직 적용후 변경
60+
if (index != 2 || role == Authority.ROLE_TEACHER) {
6061
BottomNavigationComponent(
6162
modifier = modifier
6263
.weight(1f)

feature/main/src/main/java/com/stackknowledge/main/MainPageScreen.kt

+9-6
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import androidx.compose.ui.Modifier
2121
import androidx.compose.ui.unit.dp
2222
import androidx.hilt.navigation.compose.hiltViewModel
2323
import androidx.lifecycle.compose.collectAsStateWithLifecycle
24+
import com.minstone.ui.navigation.NavigateType
2425
import com.minstone.ui.navigation.StackKnowledgeBottomNavigation
2526
import com.stackknowledge.design_system.component.dialog.JoinWaitingDialog
2627
import com.stackknowledge.design_system.component.dialog.StackKnowledgeDialog
@@ -37,7 +38,7 @@ import enumdatatype.Authority
3738

3839
@Composable
3940
internal fun MainPageRoute(
40-
onNavigate: (Authority, String) -> Unit,
41+
onNavigate: (Authority, String, Int?) -> Unit,
4142
viewModel: MainViewModel = hiltViewModel()
4243
) {
4344
var role by remember { mutableStateOf(Authority.ROLE_TEACHER) } //로그인 로직 적용후 변경
@@ -48,7 +49,7 @@ internal fun MainPageRoute(
4849
role = role,
4950
getMissionUiState = getMissionUiState,
5051
getRankingUiState = getRankingUiState,
51-
onNavigate = { navType -> onNavigate(role, navType) },
52+
onNavigate = { navType, index -> onNavigate(role, navType, index) },
5253
initMain = {
5354
with(viewModel) {
5455
getMission()
@@ -64,7 +65,7 @@ private fun MainPageScreen(
6465
role: Authority,
6566
getMissionUiState: GetMissionUiState,
6667
getRankingUiState: GetRankingUiState,
67-
onNavigate: (String) -> Unit,
68+
onNavigate: (String, Int?) -> Unit,
6869
initMain: () -> Unit,
6970
) {
7071
val scrollState = rememberScrollState()
@@ -91,11 +92,13 @@ private fun MainPageScreen(
9192
StackKnowledgePager()
9293
Spacer(modifier = modifier.height(28.dp))
9394
MissionList(
94-
getMissionUiState = getMissionUiState
95+
getMissionUiState = getMissionUiState,
96+
onClick = { onNavigate(NavigateType.MISSION.value, it) }
9597
)
9698
Spacer(modifier = modifier.height(20.dp))
9799
RankingList(
98-
getRankingUiState = getRankingUiState
100+
getRankingUiState = getRankingUiState,
101+
onClick = { onNavigate(NavigateType.RANKING.value, it) }
99102
)
100103
}
101104
}
@@ -112,7 +115,7 @@ private fun MainPageScreen(
112115
modifier = Modifier,
113116
role = role
114117
) {
115-
onNavigate(it)
118+
onNavigate(it, null)
116119
}
117120
}
118121
}

feature/main/src/main/java/com/stackknowledge/main/component/MissionList.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import remote.response.mission.MissionResponseModel
3131
fun MissionList(
3232
modifier: Modifier = Modifier,
3333
getMissionUiState: GetMissionUiState,
34+
onClick: (Int) -> Unit,
3435
) {
3536
StackKnowledgeAndroidTheme { colors, typography ->
3637
Column(
@@ -75,7 +76,8 @@ fun MissionList(
7576
MissionListItem(
7677
teacherName = list[index].user.name,
7778
title = list[index].title,
78-
point = list[index].point.toString()
79+
point = list[index].point.toString(),
80+
onClick = { onClick(index) },
7981
)
8082
Spacer(modifier = modifier.width(16.dp))
8183
}

feature/main/src/main/java/com/stackknowledge/main/component/MissionListItem.kt

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.stackknowledge.main.component
22

33
import androidx.compose.foundation.background
4+
import androidx.compose.foundation.clickable
45
import androidx.compose.foundation.layout.Box
56
import androidx.compose.foundation.layout.Column
67
import androidx.compose.foundation.layout.Row
@@ -24,6 +25,7 @@ fun MissionListItem(
2425
teacherName: String,
2526
title: String,
2627
point: String,
28+
onClick: () -> Unit,
2729
) {
2830
StackKnowledgeAndroidTheme { colors, typography ->
2931
Box(
@@ -33,7 +35,8 @@ fun MissionListItem(
3335
.background(
3436
color = colors.WHITE,
3537
shape = RoundedCornerShape(20.dp)
36-
),
38+
)
39+
.clickable(onClick = onClick),
3740
contentAlignment = Alignment.Center
3841
) {
3942
Column(
@@ -77,6 +80,7 @@ fun MissionListItemPre() {
7780
MissionListItem(
7881
teacherName = "미소쌤",
7982
title = "북학파의 배경",
80-
point = "1000"
83+
point = "1000",
84+
onClick = {}
8185
)
8286
}

feature/main/src/main/java/com/stackknowledge/main/component/RankingList.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import enumdatatype.Authority
2626
fun RankingList(
2727
modifier: Modifier = Modifier,
2828
getRankingUiState: GetRankingUiState,
29+
onClick: (Int) -> Unit,
2930
) {
3031
StackKnowledgeAndroidTheme { colors, _ ->
3132
Column(
@@ -69,7 +70,8 @@ fun RankingList(
6970
RankingListItem(
7071
profileImage = list[index].user.profileImage,
7172
name = list[index].user.name,
72-
point = list[index].cumulatePoint.toString()
73+
point = list[index].cumulatePoint.toString(),
74+
onClick = { onClick(index) },
7375
)
7476
}
7577
if (index < 3) {

feature/main/src/main/java/com/stackknowledge/main/component/RankingListItem.kt

+6-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.stackknowledge.main.component
22

33
import androidx.compose.foundation.Image
44
import androidx.compose.foundation.background
5+
import androidx.compose.foundation.clickable
56
import androidx.compose.foundation.layout.Box
67
import androidx.compose.foundation.layout.Column
78
import androidx.compose.foundation.layout.Row
@@ -29,6 +30,7 @@ fun RankingListItem(
2930
profileImage: String?,
3031
name: String,
3132
point: String,
33+
onClick: () -> Unit,
3234
) {
3335
StackKnowledgeAndroidTheme { colors, typography ->
3436
Box(
@@ -38,7 +40,8 @@ fun RankingListItem(
3840
.background(
3941
color = colors.WHITE,
4042
shape = RoundedCornerShape(20.dp)
41-
),
43+
)
44+
.clickable(onClick = onClick),
4245
contentAlignment = Alignment.Center
4346
) {
4447
Column(
@@ -98,6 +101,7 @@ fun RankingListItemPre() {
98101
RankingListItem(
99102
profileImage = "",
100103
name = "미소쌤",
101-
point = "1000"
104+
point = "1000",
105+
onClick = {}
102106
)
103107
}

feature/main/src/main/java/com/stackknowledge/main/navigation/MainNavigation.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ fun NavController.navigateToMain(navOptions: NavOptions? = null) {
1414
}
1515

1616
fun NavGraphBuilder.mainScreen(
17-
onNavigate: (Authority, String) -> Unit,
17+
onNavigate: (Authority, String, Int?) -> Unit,
1818
) {
1919
composable(route = mainPageRoute) {
2020
MainPageRoute(
21-
onNavigate = onNavigate
21+
onNavigate = onNavigate,
2222
)
2323
}
2424
}

0 commit comments

Comments
 (0)