Skip to content

Commit 8f28127

Browse files
committed
Feat: 설명서 화면 네비게이션 연결
1 parent b85f82f commit 8f28127

File tree

9 files changed

+71
-2
lines changed

9 files changed

+71
-2
lines changed

app/src/main/java/com/threegap/bitnagil/MainNavHost.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import androidx.navigation.compose.composable
88
import androidx.navigation.toRoute
99
import com.threegap.bitnagil.navigation.home.HomeNavHost
1010
import com.threegap.bitnagil.presentation.emotion.EmotionScreenContainer
11+
import com.threegap.bitnagil.presentation.guide.GuideScreenContainer
1112
import com.threegap.bitnagil.presentation.login.LoginScreenContainer
1213
import com.threegap.bitnagil.presentation.onboarding.OnBoardingScreenContainer
1314
import com.threegap.bitnagil.presentation.onboarding.OnBoardingViewModel
@@ -112,6 +113,11 @@ fun MainNavHost(
112113
),
113114
)
114115
},
116+
navigateToGuide = {
117+
navigator.navController.navigate(Route.Guide) {
118+
launchSingleTop = true
119+
}
120+
},
115121
navigateToRegisterRoutine = { routineId ->
116122
navigator.navController.navigate(Route.WriteRoutine(routineId = routineId))
117123
},
@@ -241,5 +247,15 @@ fun MainNavHost(
241247
},
242248
)
243249
}
250+
251+
composable<Route.Guide> {
252+
GuideScreenContainer(
253+
navigateToBack = {
254+
if (navigator.navController.previousBackStackEntry != null) {
255+
navigator.navController.popBackStack()
256+
}
257+
},
258+
)
259+
}
244260
}
245261
}

app/src/main/java/com/threegap/bitnagil/Route.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,7 @@ sealed interface Route {
4141

4242
@Serializable
4343
data object Withdrawal : Route
44+
45+
@Serializable
46+
data object Guide : Route
4447
}

app/src/main/java/com/threegap/bitnagil/navigation/home/HomeNavHost.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ fun HomeNavHost(
3939
navigateToOnBoarding: () -> Unit,
4040
navigateToNotice: () -> Unit,
4141
navigateToQnA: () -> Unit,
42+
navigateToGuide: () -> Unit,
4243
navigateToRegisterRoutine: (String?) -> Unit,
4344
navigateToEmotion: () -> Unit,
4445
) {
@@ -62,6 +63,7 @@ fun HomeNavHost(
6263
) {
6364
composable(HomeRoute.Home.route) {
6465
HomeScreenContainer(
66+
navigateToGuide = navigateToGuide,
6567
navigateToRegisterRoutine = {
6668
navigateToRegisterRoutine(null)
6769
},
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24"
5+
android:viewportHeight="24">
6+
<path
7+
android:fillColor="#00000000"
8+
android:pathData="M9.1,9.047C9.19,8.787 9.48,8.627 9.63,8.397C9.78,8.167 9.84,7.877 10.05,7.697C10.26,7.517 10.51,7.377 10.76,7.267C11.01,7.157 11.31,7.277 11.58,7.237C11.85,7.197 12.09,7.047 12.36,7.077C12.63,7.107 12.86,7.247 13.11,7.347C13.37,7.457 13.79,7.297 14.01,7.467C14.23,7.637 14.32,7.987 14.48,8.207C14.64,8.427 14.52,8.777 14.62,9.037C14.72,9.297 15.07,9.477 15.09,9.757C15.11,10.037 14.78,10.267 14.73,10.537C14.68,10.807 14.95,11.177 14.82,11.427C14.69,11.677 14.34,11.767 14.15,11.967C13.96,12.167 13.93,12.577 13.69,12.727C13.45,12.877 13.14,12.967 12.88,13.037C12.62,13.107 12.23,12.977 11.95,12.977C11.82,13.457 12.24,13.497 12.24,13.997M12.02,21.067C11.76,21.067 11.5,20.857 11.25,20.837C11,20.817 10.71,20.927 10.46,20.887C10.21,20.847 9.95,20.767 9.7,20.697C9.45,20.627 9.27,20.347 9.02,20.257C8.77,20.167 8.49,20.207 8.25,20.097C8.01,19.987 7.82,19.807 7.6,19.667C7.38,19.527 6.96,19.687 6.75,19.537C6.54,19.387 6.43,19.077 6.23,18.907C6.03,18.737 6.03,18.367 5.84,18.177C5.65,17.987 5.26,18.007 5.09,17.807C4.92,17.607 5.02,17.207 4.87,16.997C4.72,16.787 4.26,16.777 4.13,16.547C4,16.317 4.09,15.977 3.98,15.737C3.87,15.497 3.49,15.367 3.4,15.127C3.31,14.887 3.27,14.607 3.2,14.347C3.13,14.087 3.3,13.787 3.25,13.527C3.2,13.267 2.88,13.047 2.86,12.777C2.84,12.507 3.32,12.237 3.32,11.977C3.32,11.717 2.94,11.437 2.96,11.177C2.98,10.917 3.32,10.697 3.37,10.437C3.42,10.177 3.37,9.917 3.45,9.667C3.53,9.417 3.67,9.197 3.76,8.957C3.85,8.717 3.54,8.297 3.65,8.057C3.76,7.817 4.07,7.667 4.2,7.437C4.33,7.207 4.74,7.167 4.89,6.957C5.04,6.747 4.96,6.367 5.13,6.167C5.3,5.967 5.45,5.737 5.63,5.557C5.81,5.377 5.96,5.127 6.16,4.957C6.36,4.787 6.73,4.837 6.94,4.687C7.15,4.537 7.25,4.197 7.47,4.057C7.69,3.917 7.95,3.827 8.19,3.707C8.43,3.587 8.63,3.357 8.87,3.267C9.11,3.177 9.46,3.367 9.71,3.297C9.96,3.227 10.19,3.037 10.45,2.997C10.71,2.957 10.99,3.057 11.25,3.037C11.51,3.017 11.77,3.067 12.03,3.067C12.29,3.067 12.56,2.907 12.82,2.937C13.08,2.967 13.31,3.227 13.56,3.267C13.81,3.307 14.08,3.277 14.34,3.347C14.6,3.417 14.88,3.387 15.12,3.477C15.36,3.567 15.62,3.647 15.86,3.757C16.1,3.867 16.39,3.897 16.62,4.027C16.85,4.157 16.84,4.647 17.06,4.797C17.28,4.947 17.62,4.917 17.82,5.077C18.02,5.237 18.04,5.597 18.22,5.787C18.4,5.977 18.76,5.987 18.93,6.187C19.1,6.387 19.4,6.497 19.55,6.707C19.7,6.917 19.8,7.177 19.93,7.407C20.06,7.637 20.03,7.947 20.14,8.187C20.25,8.427 20.52,8.597 20.61,8.847C20.7,9.097 20.58,9.407 20.65,9.657C20.72,9.907 20.82,10.147 20.87,10.407C20.92,10.667 20.87,10.927 20.89,11.187C20.91,11.447 21.14,11.697 21.14,11.967C21.14,12.237 20.76,12.467 20.74,12.727C20.72,12.987 20.88,13.257 20.83,13.517C20.78,13.777 20.74,14.027 20.67,14.277C20.6,14.527 20.47,14.757 20.38,15.007C20.29,15.257 20.1,15.447 19.99,15.677C19.88,15.907 20.04,16.287 19.91,16.517C19.78,16.747 19.45,16.847 19.3,17.057C19.15,17.267 18.98,17.457 18.81,17.657C18.64,17.857 18.7,18.267 18.51,18.447C18.32,18.627 17.9,18.557 17.7,18.727C17.5,18.897 17.54,19.377 17.32,19.527C17.1,19.677 16.64,19.437 16.42,19.577C16.2,19.717 16.18,20.247 15.94,20.357C15.7,20.467 15.42,20.527 15.17,20.617C14.92,20.707 14.65,20.767 14.4,20.837C14.15,20.907 13.83,20.677 13.57,20.717C13.31,20.757 13.08,20.967 12.82,20.997C12.56,21.027 12.29,21.037 12.03,21.037L12.02,21.067ZM12.12,16.947C12.12,16.947 12.02,16.967 11.98,17.007C11.94,17.047 11.98,17.147 11.95,17.117C11.92,17.087 11.94,17.037 11.96,16.997C12.01,16.927 12.08,16.917 12.11,16.947H12.12Z"
9+
android:strokeWidth="2"
10+
android:strokeColor="#ffffff"
11+
android:strokeLineCap="round"
12+
android:strokeLineJoin="round" />
13+
<path
14+
android:fillColor="#ffffff"
15+
android:pathData="M11.223,17.035a0.875,0.951 0,1 0,1.75 0a0.875,0.951 0,1 0,-1.75 0z" />
16+
</vector>

presentation/src/main/java/com/threegap/bitnagil/presentation/home/HomeScreen.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,18 @@ import java.time.LocalDate
4040
@Composable
4141
fun HomeScreenContainer(
4242
viewModel: HomeViewModel = hiltViewModel(),
43+
navigateToGuide: () -> Unit,
4344
navigateToRegisterRoutine: () -> Unit,
4445
navigateToEmotion: () -> Unit,
4546
) {
4647
val uiState by viewModel.stateFlow.collectAsStateWithLifecycle()
4748

4849
viewModel.sideEffectFlow.collectAsEffect { sideEffect ->
4950
when (sideEffect) {
51+
is HomeSideEffect.NavigateToGuide -> {
52+
navigateToGuide()
53+
}
54+
5055
is HomeSideEffect.NavigateToRegisterRoutine -> {
5156
navigateToRegisterRoutine()
5257
}
@@ -82,6 +87,9 @@ fun HomeScreenContainer(
8287
onSubRoutineCompletionToggle = { routineId, subRoutineIndex, isCompleted ->
8388
viewModel.toggleSubRoutineCompletion(routineId, subRoutineIndex, isCompleted)
8489
},
90+
onHelpClick = {
91+
viewModel.sendIntent(HomeIntent.OnHelpClick)
92+
},
8593
onRegisterRoutineClick = {
8694
viewModel.sendIntent(HomeIntent.OnRegisterRoutineClick)
8795
},
@@ -102,6 +110,7 @@ private fun HomeScreen(
102110
onNextWeekClick: () -> Unit,
103111
onRoutineCompletionToggle: (String, Boolean) -> Unit,
104112
onSubRoutineCompletionToggle: (String, Int, Boolean) -> Unit,
113+
onHelpClick: () -> Unit,
105114
onRegisterRoutineClick: () -> Unit,
106115
onRegisterEmotionClick: () -> Unit,
107116
onShowMoreRoutinesClick: () -> Unit,
@@ -198,6 +207,7 @@ private fun HomeScreen(
198207
userName = uiState.userNickname,
199208
todayEmotion = uiState.todayEmotion,
200209
collapsibleHeaderState = collapsibleHeaderState,
210+
onHelpClick = onHelpClick,
201211
onRegisterEmotion = onRegisterEmotionClick,
202212
)
203213
}
@@ -213,6 +223,7 @@ private fun HomeScreenPreview() {
213223
onNextWeekClick = {},
214224
onRoutineCompletionToggle = { _, _ -> },
215225
onSubRoutineCompletionToggle = { _, _, _ -> },
226+
onHelpClick = {},
216227
onRegisterRoutineClick = {},
217228
onRegisterEmotionClick = {},
218229
onShowMoreRoutinesClick = {},

presentation/src/main/java/com/threegap/bitnagil/presentation/home/HomeViewModel.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,11 @@ class HomeViewModel @Inject constructor(
110110
state.copy(todayEmotion = intent.emotion)
111111
}
112112

113+
is HomeIntent.OnHelpClick -> {
114+
sendSideEffect(HomeSideEffect.NavigateToGuide)
115+
null
116+
}
117+
113118
is HomeIntent.OnRegisterEmotionClick -> {
114119
sendSideEffect(HomeSideEffect.NavigateToEmotion)
115120
null

presentation/src/main/java/com/threegap/bitnagil/presentation/home/component/template/CollapsibleHomeHeader.kt

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import androidx.compose.animation.core.tween
55
import androidx.compose.foundation.layout.Arrangement
66
import androidx.compose.foundation.layout.Box
77
import androidx.compose.foundation.layout.Column
8+
import androidx.compose.foundation.layout.PaddingValues
89
import androidx.compose.foundation.layout.Row
10+
import androidx.compose.foundation.layout.Spacer
911
import androidx.compose.foundation.layout.aspectRatio
1012
import androidx.compose.foundation.layout.fillMaxWidth
1113
import androidx.compose.foundation.layout.height
@@ -30,6 +32,7 @@ import coil3.request.crossfade
3032
import com.threegap.bitnagil.designsystem.BitnagilTheme
3133
import com.threegap.bitnagil.designsystem.R
3234
import com.threegap.bitnagil.designsystem.component.atom.BitnagilIcon
35+
import com.threegap.bitnagil.designsystem.component.atom.BitnagilIconButton
3336
import com.threegap.bitnagil.presentation.home.component.atom.EmotionRegisterButton
3437
import com.threegap.bitnagil.presentation.home.model.TodayEmotionUiModel
3538
import com.threegap.bitnagil.presentation.home.util.CollapsibleHeaderState
@@ -40,6 +43,7 @@ fun CollapsibleHomeHeader(
4043
userName: String,
4144
todayEmotion: TodayEmotionUiModel?,
4245
collapsibleHeaderState: CollapsibleHeaderState,
46+
onHelpClick: () -> Unit,
4347
onRegisterEmotion: () -> Unit,
4448
modifier: Modifier = Modifier,
4549
) {
@@ -64,13 +68,22 @@ fun CollapsibleHomeHeader(
6468
modifier = Modifier
6569
.fillMaxWidth()
6670
.height(collapsibleHeaderState.collapsedHeaderHeight)
67-
.statusBarsPadding(),
71+
.statusBarsPadding()
72+
.padding(start = 16.dp, end = 4.dp),
6873
verticalAlignment = Alignment.CenterVertically,
6974
) {
7075
BitnagilIcon(
7176
id = R.drawable.ic_logo,
7277
tint = BitnagilTheme.colors.coolGray50,
73-
modifier = Modifier.padding(start = 16.dp),
78+
)
79+
80+
Spacer(modifier = Modifier.weight(1f))
81+
82+
BitnagilIconButton(
83+
id = R.drawable.ic_help_circle,
84+
onClick = onHelpClick,
85+
paddingValues = PaddingValues(12.dp),
86+
tint = null,
7487
)
7588
}
7689

@@ -129,6 +142,7 @@ private fun CollapsibleHomeHeaderPreview() {
129142
userName = "대현",
130143
todayEmotion = null,
131144
collapsibleHeaderState = rememberCollapsibleHeaderState(),
145+
onHelpClick = {},
132146
onRegisterEmotion = {},
133147
)
134148
}

presentation/src/main/java/com/threegap/bitnagil/presentation/home/model/HomeIntent.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ sealed class HomeIntent : MviIntent {
1212
data class OnRoutineCompletionToggle(val routineId: String, val isCompleted: Boolean) : HomeIntent()
1313
data class OnSubRoutineCompletionToggle(val routineId: String, val subRoutineIndex: Int, val isCompleted: Boolean) : HomeIntent()
1414
data object RoutineToggleCompletionFailure : HomeIntent()
15+
data object OnHelpClick : HomeIntent()
1516
data object OnRegisterEmotionClick : HomeIntent()
1617
data object OnRegisterRoutineClick : HomeIntent()
1718
data object OnPreviousWeekClick : HomeIntent()

presentation/src/main/java/com/threegap/bitnagil/presentation/home/model/HomeSideEffect.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.threegap.bitnagil.presentation.common.mviviewmodel.MviSideEffect
55
sealed interface HomeSideEffect : MviSideEffect {
66
data class ShowToast(val message: String) : HomeSideEffect
77
data class ShowToastWithIcon(val message: String) : HomeSideEffect
8+
data object NavigateToGuide : HomeSideEffect
89
data object NavigateToRegisterRoutine : HomeSideEffect
910
data object NavigateToEmotion : HomeSideEffect
1011
}

0 commit comments

Comments
 (0)