Skip to content

Commit 799a900

Browse files
authored
Merge pull request #105 from Stack-Knowledge/feature/104_mission_loading_screen
🔀 :: (#104) Mission Loading Screen
2 parents 7968c9b + 613c768 commit 799a900

File tree

4 files changed

+100
-56
lines changed

4 files changed

+100
-56
lines changed

feature/mission/src/main/java/com/stackkowledge/mission/EntireMissionScreen.kt

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.stackkowledge.mission
22

3-
import android.util.Log
43
import androidx.activity.ComponentActivity
54
import androidx.compose.foundation.background
65
import androidx.compose.foundation.layout.Box
@@ -21,10 +20,9 @@ import com.minstone.ui.navigation.StackKnowledgeBottomNavigation
2120
import com.stackknowledge.design_system.component.topbar.StackKnowledgeTopBar
2221
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
2322
import com.stackkowledge.mission.component.EntireMissionList
24-
import com.stackkowledge.mission.viewmodel.uistate.GetMissionUiState
2523
import com.stackkowledge.mission.viewmodel.MissionViewModel
24+
import com.stackkowledge.mission.viewmodel.uistate.GetMissionUiState
2625
import enumdatatype.Authority
27-
import java.util.UUID
2826

2927
@Composable
3028
internal fun EntireMissionRoute(
@@ -68,14 +66,10 @@ private fun EntireMissionScreen(
6866
.fillMaxSize()
6967
) {
7068
StackKnowledgeTopBar()
71-
if (missionUiState is GetMissionUiState.Success) {
72-
val mission = missionUiState.missionResponseModel
73-
EntireMissionList(
74-
missionList = mission,
75-
onClick = { onItemClick(it) },
76-
)
77-
}
78-
Log.e("testt", missionUiState.toString())
69+
EntireMissionList(
70+
getMissionUiState = missionUiState,
71+
onClick = { onItemClick(it) },
72+
)
7973
}
8074
Box(
8175
modifier = Modifier.align(alignment = Alignment.BottomCenter),

feature/mission/src/main/java/com/stackkowledge/mission/component/EntireMissionList.kt

Lines changed: 45 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.padding
1010
import androidx.compose.foundation.lazy.grid.GridCells
1111
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
1212
import androidx.compose.foundation.lazy.grid.itemsIndexed
13+
import androidx.compose.material3.Text
1314
import androidx.compose.runtime.Composable
1415
import androidx.compose.runtime.getValue
1516
import androidx.compose.ui.Alignment
@@ -21,12 +22,13 @@ import androidx.hilt.navigation.compose.hiltViewModel
2122
import androidx.lifecycle.compose.collectAsStateWithLifecycle
2223
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
2324
import com.stackkowledge.mission.viewmodel.MissionViewModel
25+
import com.stackkowledge.mission.viewmodel.uistate.GetMissionUiState
2426
import remote.response.mission.MissionResponseModel
2527

2628
@Composable
2729
fun EntireMissionList(
2830
modifier: Modifier = Modifier,
29-
missionList: List<MissionResponseModel>,
31+
getMissionUiState: GetMissionUiState,
3032
onClick: (String) -> Unit,
3133
) {
3234
StackKnowledgeAndroidTheme { colors, _ ->
@@ -36,29 +38,55 @@ fun EntireMissionList(
3638
.fillMaxSize()
3739
.padding(bottom = 116.dp)
3840
) {
39-
LazyVerticalGrid(
40-
modifier = Modifier
41-
.fillMaxSize()
42-
.background(color = colors.WHITE),
43-
columns = GridCells.Fixed(2),
44-
contentPadding = PaddingValues(
45-
start = 16.dp,
46-
top = 16.dp,
47-
),
48-
) {
49-
itemsIndexed(missionList) { _, item ->
41+
when (getMissionUiState) {
42+
is GetMissionUiState.Success -> {
43+
val missionList = getMissionUiState.missionResponseModel
44+
LazyVerticalGrid(
45+
modifier = Modifier
46+
.fillMaxSize()
47+
.background(color = colors.WHITE),
48+
columns = GridCells.Fixed(2),
49+
contentPadding = PaddingValues(
50+
start = 16.dp,
51+
top = 16.dp,
52+
),
53+
) {
54+
items(missionList.size) { index ->
55+
Box(
56+
contentAlignment = Alignment.Center
57+
) {
58+
EntireMissionItem(
59+
name = missionList[index].user.name,
60+
title = missionList[index].title,
61+
point = missionList[index].point,
62+
onClick = { onClick(missionList[index].id) },
63+
)
64+
}
5065

66+
}
67+
}
68+
}
69+
70+
is GetMissionUiState.Error -> {
5171
Box(
72+
modifier = Modifier.fillMaxSize(),
5273
contentAlignment = Alignment.Center
5374
) {
54-
EntireMissionItem(
55-
name = item.user.name,
56-
title = item.title,
57-
point = item.point,
58-
onClick = { onClick(item.id) },
75+
Text(
76+
text = "문제가 존재하지 않아요!"
5977
)
6078
}
79+
}
6180

81+
is GetMissionUiState.Loading -> {
82+
Box(
83+
modifier = Modifier.fillMaxSize(),
84+
contentAlignment = Alignment.Center
85+
) {
86+
Text(
87+
text = "문제 리스트 불러오는 중.."
88+
)
89+
}
6290
}
6391
}
6492
}

feature/score-mission/src/main/java/com/stackknowledge/score_mission/SolvedMissionScreen.kt

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package com.stackknowledge.score_mission
22

3-
import android.util.Log
43
import androidx.activity.ComponentActivity
54
import androidx.compose.foundation.background
65
import androidx.compose.foundation.layout.Box
76
import androidx.compose.foundation.layout.Column
87
import androidx.compose.foundation.layout.fillMaxSize
9-
import androidx.compose.material3.Surface
108
import androidx.compose.runtime.Composable
119
import androidx.compose.runtime.LaunchedEffect
1210
import androidx.compose.runtime.getValue
@@ -16,7 +14,6 @@ import androidx.compose.runtime.setValue
1614
import androidx.compose.ui.Alignment
1715
import androidx.compose.ui.Modifier
1816
import androidx.compose.ui.platform.LocalContext
19-
import androidx.compose.ui.tooling.preview.Preview
2017
import androidx.hilt.navigation.compose.hiltViewModel
2118
import androidx.lifecycle.compose.collectAsStateWithLifecycle
2219
import com.minstone.ui.navigation.StackKnowledgeBottomNavigation
@@ -67,15 +64,11 @@ private fun SolvedMissionScreen(
6764
.fillMaxSize()
6865
) {
6966
StackKnowledgeTopBar()
70-
if (scoreMissionListUiState is GetScoreMissionListUiState.Success) {
71-
val scoreMission = scoreMissionListUiState.getSolveMissionResponseModel
72-
SolvedMissionList(
73-
scoreMission = scoreMission,
74-
onClick = { onItemClick() },
75-
intentId = { intentId(it) }
76-
)
77-
Log.e("ScoreMissionListScreen", scoreMission.toString())
78-
}
67+
SolvedMissionList(
68+
getScoreMissionListUiState = scoreMissionListUiState,
69+
onClick = { onItemClick() },
70+
intentId = { intentId(it) }
71+
)
7972
}
8073
Box(
8174
modifier = Modifier.align(alignment = Alignment.BottomCenter),

feature/score-mission/src/main/java/com/stackknowledge/score_mission/component/SolvedMissionList.kt

Lines changed: 45 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,15 @@ import androidx.compose.foundation.layout.padding
1313
import androidx.compose.foundation.lazy.grid.GridCells
1414
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
1515
import androidx.compose.foundation.lazy.grid.itemsIndexed
16+
import androidx.compose.material3.Text
1617
import androidx.compose.runtime.Composable
1718
import androidx.compose.ui.Alignment
1819
import androidx.compose.ui.Modifier
1920
import androidx.compose.ui.tooling.preview.Preview
2021
import androidx.compose.ui.unit.dp
2122
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
23+
import com.stackknowledge.score_mission.viewmodel.uistate.GetScoreMissionListUiState
24+
import com.stackknowledge.score_mission.viewmodel.uistate.ScoreMissionUiState
2225
import remote.request.user.ScoreRequestModel
2326
import remote.response.user.GetSolveMissionListModel
2427
import remote.response.user.GetSolveMissionResponseModel
@@ -27,7 +30,7 @@ import java.util.UUID
2730
@Composable
2831
fun SolvedMissionList(
2932
modifier: Modifier = Modifier,
30-
scoreMission: GetSolveMissionResponseModel,
33+
getScoreMissionListUiState: GetScoreMissionListUiState,
3134
onClick: () -> Unit,
3235
intentId: (String) -> Unit,
3336
) {
@@ -39,24 +42,50 @@ fun SolvedMissionList(
3942
.fillMaxHeight()
4043
.padding(bottom = 116.dp)
4144
) {
42-
LazyVerticalGrid(
43-
modifier = modifier.fillMaxSize(),
44-
columns = GridCells.Fixed(2),
45-
contentPadding = PaddingValues(
46-
start = 16.dp,
47-
top = 16.dp,
48-
),
49-
) {
50-
itemsIndexed(scoreMission.response) {_, item ->
45+
when (getScoreMissionListUiState) {
46+
is GetScoreMissionListUiState.Success -> {
47+
val scoreMissionList = getScoreMissionListUiState.getSolveMissionResponseModel
48+
LazyVerticalGrid(
49+
modifier = modifier.fillMaxSize(),
50+
columns = GridCells.Fixed(2),
51+
contentPadding = PaddingValues(
52+
start = 16.dp,
53+
top = 16.dp,
54+
),
55+
) {
56+
itemsIndexed(scoreMissionList.response) { _, item ->
57+
Box(
58+
contentAlignment = Alignment.Center
59+
) {
60+
SolvedMissionItem(
61+
name = item.user.name,
62+
title = item.title,
63+
point = item.point,
64+
onClick = { onClick() },
65+
intentId = { intentId(item.solveId) }
66+
)
67+
}
68+
}
69+
}
70+
}
71+
is GetScoreMissionListUiState.Error -> {
72+
Box(
73+
modifier = Modifier.fillMaxSize(),
74+
contentAlignment = Alignment.Center
75+
) {
76+
Text(
77+
text = "채점할 문제가 존재하지 않아요!"
78+
)
79+
}
80+
}
81+
82+
is GetScoreMissionListUiState.Loading -> {
5183
Box(
84+
modifier = Modifier.fillMaxSize(),
5285
contentAlignment = Alignment.Center
5386
) {
54-
SolvedMissionItem(
55-
name = item.user.name,
56-
title = item.title,
57-
point = item.point,
58-
onClick = { onClick() },
59-
intentId = { intentId(item.solveId) }
87+
Text(
88+
text = "채점할 문제를 불러오는 중.."
6089
)
6190
}
6291
}

0 commit comments

Comments
 (0)