From 407de972b80e636659f7d3d3050a6ab24e19bad6 Mon Sep 17 00:00:00 2001 From: heejik Date: Fri, 26 Sep 2025 01:11:16 +0900 Subject: [PATCH 1/7] =?UTF-8?q?=EC=9E=A5=EB=B6=80=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4=20"=EC=B4=88=EB=8C=80=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EB=B0=9B=EC=95=98=EC=96=B4=EC=9A=94"=20UI=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agency/register/AgencyRegisterScreen.kt | 3 +++ .../view/AgencyRegisterContentView.kt | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterScreen.kt b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterScreen.kt index 7f2aa15e..36aabad7 100644 --- a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterScreen.kt +++ b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterScreen.kt @@ -116,6 +116,9 @@ fun AgencyRegisterScreen( agencyName = state.agencyName, onAgencyNameChange = viewModel::changeAgencyName, changeNameTextFieldIsError = viewModel::changeNameTextFieldIsError, + // heejik: todo + visibleInviteCode = true, + onClickInviteCode = {} ) } val canRegister = state.agencyName.text.isNotEmpty() && state.nameTextFieldIsError.not() diff --git a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/view/AgencyRegisterContentView.kt b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/view/AgencyRegisterContentView.kt index dd770151..dec52d8a 100644 --- a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/view/AgencyRegisterContentView.kt +++ b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/view/AgencyRegisterContentView.kt @@ -1,9 +1,11 @@ package com.moneymong.moneymong.feature.agency.register.view +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.text.KeyboardActions import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -14,15 +16,18 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.text.input.TextFieldValue +import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.moneymong.moneymong.design_system.component.textfield.MDSTextField import com.moneymong.moneymong.design_system.component.textfield.util.MDSTextFieldIcons import com.moneymong.moneymong.design_system.component.textfield.util.withRequiredMark +import com.moneymong.moneymong.design_system.theme.Body1 import com.moneymong.moneymong.design_system.theme.Body3 import com.moneymong.moneymong.design_system.theme.Gray05 import com.moneymong.moneymong.design_system.theme.Gray10 @@ -34,6 +39,8 @@ internal fun AgencyResisterContentView( agencyName: TextFieldValue, onAgencyNameChange: (TextFieldValue) -> Unit, changeNameTextFieldIsError: (Boolean) -> Unit, + visibleInviteCode: Boolean, + onClickInviteCode: () -> Unit ) { Column(modifier = modifier) { TitleView() @@ -43,6 +50,20 @@ internal fun AgencyResisterContentView( onAgencyNameChange = onAgencyNameChange, changeIsError = changeNameTextFieldIsError ) + Spacer(modifier = Modifier.height(7.dp)) + + if (visibleInviteCode) { + Text( + modifier = Modifier + .align(Alignment.CenterHorizontally) + .clickable(onClick = onClickInviteCode) + .padding(8.dp), + text = "초대코드를 받았어요 >", + style = Body1, + color = Gray05, + textDecoration = TextDecoration.Underline + ) + } } } @@ -119,5 +140,7 @@ private fun AgencyResisterContentViewPreview() { agencyName = TextFieldValue("동아리"), onAgencyNameChange = {}, changeNameTextFieldIsError = {}, + visibleInviteCode = true, + onClickInviteCode = {} ) } \ No newline at end of file From 50b70da1124ddf1de96ed7e95a0ca07c82809425 Mon Sep 17 00:00:00 2001 From: heejik Date: Fri, 26 Sep 2025 16:14:39 +0900 Subject: [PATCH 2/7] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20->=20=EC=9E=A5=EB=B6=80=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=ED=95=98=EA=B8=B0=20=ED=99=94=EB=A9=B4=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=9D=B4=EB=8F=99=ED=96=88=EC=9D=84=20=EB=95=8C=EB=A7=8C=20?= =?UTF-8?q?=EC=B4=88=EB=8C=80=EC=BD=94=EB=93=9C=20=EB=B0=9B=EC=95=98?= =?UTF-8?q?=EC=96=B4=EC=9A=94=20visible=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../navigation/AgencyRegisterNavigation.kt | 27 ++++++++++++++++--- .../agency/register/AgencyRegisterScreen.kt | 3 +-- .../agency/register/AgencyRegisterState.kt | 1 + .../register/AgencyRegisterViewModel.kt | 7 ++++- .../moneymong/home/HomeBottomTabs.kt | 1 - .../moneymong/moneymong/home/HomeScreen.kt | 4 ++- 6 files changed, 34 insertions(+), 9 deletions(-) diff --git a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/navigation/AgencyRegisterNavigation.kt b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/navigation/AgencyRegisterNavigation.kt index 535a7feb..bde416a5 100644 --- a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/navigation/AgencyRegisterNavigation.kt +++ b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/navigation/AgencyRegisterNavigation.kt @@ -1,25 +1,44 @@ package com.moneymong.moneymong.feature.agency.navigation +import androidx.lifecycle.SavedStateHandle import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions +import androidx.navigation.NavType import androidx.navigation.compose.composable +import androidx.navigation.navArgument import com.moneymong.moneymong.feature.agency.register.AgencyRegisterScreen const val agencyRegisterRoute = "agencyRegister_route" +const val VISIBLE_INVITE_CODE = "VisibleInviteCode" +const val agencyRegisterRouteWithArgs = "${agencyRegisterRoute}/{${VISIBLE_INVITE_CODE}}" fun NavController.navigateAgencyRegister( - navOptions: NavOptions? = null + navOptions: NavOptions? = null, + visibleInviteCode: Boolean = false, ) { - navigate(agencyRegisterRoute, navOptions) + navigate("${agencyRegisterRoute}/${visibleInviteCode}", navOptions) } fun NavGraphBuilder.agencyRegisterScreen( navigateToLedger: () -> Unit ) { composable( - route = agencyRegisterRoute, + route = agencyRegisterRouteWithArgs, + arguments = listOf(navArgument(VISIBLE_INVITE_CODE) { + type = NavType.BoolType + defaultValue = false + }) ) { - AgencyRegisterScreen(navigateToLedger = navigateToLedger,) + AgencyRegisterScreen( + navigateToLedger = navigateToLedger, + ) } +} + + +internal class AgencyRegisterArgs(val visibleInviteCode: Boolean) { + constructor(savedStateHandle: SavedStateHandle) : this( + visibleInviteCode = checkNotNull(savedStateHandle[VISIBLE_INVITE_CODE]) + ) } \ No newline at end of file diff --git a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterScreen.kt b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterScreen.kt index 36aabad7..d2aadab8 100644 --- a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterScreen.kt +++ b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterScreen.kt @@ -116,8 +116,7 @@ fun AgencyRegisterScreen( agencyName = state.agencyName, onAgencyNameChange = viewModel::changeAgencyName, changeNameTextFieldIsError = viewModel::changeNameTextFieldIsError, - // heejik: todo - visibleInviteCode = true, + visibleInviteCode = state.visibleInviteCode, onClickInviteCode = {} ) } diff --git a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterState.kt b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterState.kt index 36eacc93..9e94f939 100644 --- a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterState.kt +++ b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterState.kt @@ -11,4 +11,5 @@ data class AgencyRegisterState( val nameTextFieldIsError: Boolean = false, val visibleOutDialog: Boolean = false, val visibleErrorDialog: Boolean = false, + val visibleInviteCode: Boolean = false ) : State \ No newline at end of file diff --git a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterViewModel.kt b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterViewModel.kt index 9e935ee5..efae2fb6 100644 --- a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterViewModel.kt +++ b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterViewModel.kt @@ -1,10 +1,12 @@ package com.moneymong.moneymong.feature.agency.register import androidx.compose.ui.text.input.TextFieldValue +import androidx.lifecycle.SavedStateHandle import com.moneymong.moneymong.android.BaseViewModel import com.moneymong.moneymong.common.error.MoneyMongError import com.moneymong.moneymong.domain.usecase.agency.RegisterAgencyUseCase import com.moneymong.moneymong.domain.usecase.agency.SaveAgencyIdUseCase +import com.moneymong.moneymong.feature.agency.navigation.AgencyRegisterArgs import com.moneymong.moneymong.model.agency.AgencyRegisterRequest import dagger.hilt.android.lifecycle.HiltViewModel import org.orbitmvi.orbit.annotation.OrbitExperimental @@ -16,9 +18,12 @@ import javax.inject.Inject @HiltViewModel class AgencyRegisterViewModel @Inject constructor( + savedStateHandle: SavedStateHandle, private val registerAgencyUseCase: RegisterAgencyUseCase, private val saveAgencyIdUseCase: SaveAgencyIdUseCase -) : BaseViewModel(AgencyRegisterState()) { +) : BaseViewModel( + state = AgencyRegisterState(visibleInviteCode = AgencyRegisterArgs(savedStateHandle).visibleInviteCode) +) { fun navigateToLedger() = eventEmit(sideEffect = AgencyRegisterSideEffect.NavigateToLedger) diff --git a/feature/home/src/main/java/com/moneymong/moneymong/home/HomeBottomTabs.kt b/feature/home/src/main/java/com/moneymong/moneymong/home/HomeBottomTabs.kt index 6a703b26..ce330dc4 100644 --- a/feature/home/src/main/java/com/moneymong/moneymong/home/HomeBottomTabs.kt +++ b/feature/home/src/main/java/com/moneymong/moneymong/home/HomeBottomTabs.kt @@ -2,7 +2,6 @@ package com.moneymong.moneymong.home import androidx.annotation.DrawableRes import androidx.annotation.StringRes -import com.moneymong.moneymong.feature.agency.navigation.agencyRoute import com.moneymong.moneymong.feature.mymong.navigation.mymongRoute import com.moneymong.moneymong.ledger.navigation.ledgerRouteWithArgs diff --git a/feature/home/src/main/java/com/moneymong/moneymong/home/HomeScreen.kt b/feature/home/src/main/java/com/moneymong/moneymong/home/HomeScreen.kt index 46b909fb..e7bc2281 100644 --- a/feature/home/src/main/java/com/moneymong/moneymong/home/HomeScreen.kt +++ b/feature/home/src/main/java/com/moneymong/moneymong/home/HomeScreen.kt @@ -127,7 +127,9 @@ fun HomeScreen( // sign loginScreen( navigateToLedger = homeNavController::navigateLedger, - navigateToAgencyRegister = homeNavController::navigateAgencyRegister + navigateToAgencyRegister = { + homeNavController.navigateAgencyRegister(visibleInviteCode = true) + } ) signUpScreen( From 73c35645d66ec56102ae6a00639e3aee16dd25fd Mon Sep 17 00:00:00 2001 From: heejik Date: Fri, 26 Sep 2025 16:28:24 +0900 Subject: [PATCH 3/7] =?UTF-8?q?=EC=9E=A5=EB=B6=80=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4=20"=EC=B4=88=EB=8C=80=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EB=A5=BC=20=EB=B0=9B=EC=95=98=EC=96=B4=EC=9A=94=20>"=20?= =?UTF-8?q?=ED=81=B4=EB=A6=AD=20=EC=9D=B4=EB=B2=A4=ED=8A=B8=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/agency/navigation/AgencyRegisterNavigation.kt | 4 +++- .../feature/agency/register/AgencyRegisterScreen.kt | 8 +++++++- .../feature/agency/register/AgencyRegisterSideEffect.kt | 2 ++ .../feature/agency/register/AgencyRegisterViewModel.kt | 6 +++++- .../main/java/com/moneymong/moneymong/home/HomeScreen.kt | 3 ++- 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/navigation/AgencyRegisterNavigation.kt b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/navigation/AgencyRegisterNavigation.kt index bde416a5..f3e5c231 100644 --- a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/navigation/AgencyRegisterNavigation.kt +++ b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/navigation/AgencyRegisterNavigation.kt @@ -21,7 +21,8 @@ fun NavController.navigateAgencyRegister( } fun NavGraphBuilder.agencyRegisterScreen( - navigateToLedger: () -> Unit + navigateToLedger: () -> Unit, + navigateToAgencyJoin: () -> Unit, ) { composable( route = agencyRegisterRouteWithArgs, @@ -32,6 +33,7 @@ fun NavGraphBuilder.agencyRegisterScreen( ) { AgencyRegisterScreen( navigateToLedger = navigateToLedger, + navigateToAgencyJoin = navigateToAgencyJoin ) } } diff --git a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterScreen.kt b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterScreen.kt index d2aadab8..92c7327d 100644 --- a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterScreen.kt +++ b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterScreen.kt @@ -42,6 +42,7 @@ fun AgencyRegisterScreen( modifier: Modifier = Modifier, viewModel: AgencyRegisterViewModel = hiltViewModel(), navigateToLedger: () -> Unit, + navigateToAgencyJoin: () -> Unit ) { val state by viewModel.collectAsState() val focusManager = LocalFocusManager.current @@ -53,6 +54,10 @@ fun AgencyRegisterScreen( focusManager.clearFocus() navigateToLedger() } + + is AgencyRegisterSideEffect.NavigateToAgencyJoin -> { + navigateToAgencyJoin() + } } } @@ -117,7 +122,7 @@ fun AgencyRegisterScreen( onAgencyNameChange = viewModel::changeAgencyName, changeNameTextFieldIsError = viewModel::changeNameTextFieldIsError, visibleInviteCode = state.visibleInviteCode, - onClickInviteCode = {} + onClickInviteCode = viewModel::navigateToAgencyJoin ) } val canRegister = state.agencyName.text.isNotEmpty() && state.nameTextFieldIsError.not() @@ -137,5 +142,6 @@ fun AgencyRegisterScreen( fun AgencyRegisterScreenPreview() { AgencyRegisterScreen( navigateToLedger = {}, + navigateToAgencyJoin = {} ) } \ No newline at end of file diff --git a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterSideEffect.kt b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterSideEffect.kt index 126bd8ea..9101d02d 100644 --- a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterSideEffect.kt +++ b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterSideEffect.kt @@ -4,4 +4,6 @@ import com.moneymong.moneymong.android.SideEffect sealed interface AgencyRegisterSideEffect : SideEffect { data object NavigateToLedger : AgencyRegisterSideEffect + + data object NavigateToAgencyJoin : AgencyRegisterSideEffect } \ No newline at end of file diff --git a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterViewModel.kt b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterViewModel.kt index efae2fb6..84266458 100644 --- a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterViewModel.kt +++ b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterViewModel.kt @@ -25,7 +25,11 @@ class AgencyRegisterViewModel @Inject constructor( state = AgencyRegisterState(visibleInviteCode = AgencyRegisterArgs(savedStateHandle).visibleInviteCode) ) { - fun navigateToLedger() = eventEmit(sideEffect = AgencyRegisterSideEffect.NavigateToLedger) + fun navigateToLedger() = + eventEmit(sideEffect = AgencyRegisterSideEffect.NavigateToLedger) + + fun navigateToAgencyJoin() = + eventEmit(sideEffect = AgencyRegisterSideEffect.NavigateToAgencyJoin) fun registerAgency() = intent { registerAgencyUseCase( diff --git a/feature/home/src/main/java/com/moneymong/moneymong/home/HomeScreen.kt b/feature/home/src/main/java/com/moneymong/moneymong/home/HomeScreen.kt index e7bc2281..08ebcdb8 100644 --- a/feature/home/src/main/java/com/moneymong/moneymong/home/HomeScreen.kt +++ b/feature/home/src/main/java/com/moneymong/moneymong/home/HomeScreen.kt @@ -173,7 +173,8 @@ fun HomeScreen( ) agencyRegisterScreen( - navigateToLedger = homeNavController::navigateLedger + navigateToLedger = homeNavController::navigateLedger, + navigateToAgencyJoin = homeNavController::navigateAgencyJoin ) agencyRegisterCompleteScreen( From f2cfc8e4408ce0df4f943c8651e69586df19d5fe Mon Sep 17 00:00:00 2001 From: heejik Date: Fri, 26 Sep 2025 16:42:56 +0900 Subject: [PATCH 4/7] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20->=20?= =?UTF-8?q?=EC=9E=A5=EB=B6=80=20=EC=83=9D=EC=84=B1=20=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?->=20=EB=92=A4=EB=A1=9C=20=EA=B0=80=EA=B8=B0=20=ED=96=88?= =?UTF-8?q?=EC=9D=84=20=EB=95=8C=20=EB=8F=99=EC=9E=91=20=EC=97=86=EB=8A=94?= =?UTF-8?q?=20=EC=9D=B4=EC=8A=88=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../moneymong/feature/agency/register/AgencyRegisterScreen.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterScreen.kt b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterScreen.kt index 92c7327d..869efa61 100644 --- a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterScreen.kt +++ b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/register/AgencyRegisterScreen.kt @@ -1,5 +1,6 @@ package com.moneymong.moneymong.feature.agency.register +import androidx.activity.compose.BackHandler import androidx.compose.foundation.background import androidx.compose.foundation.gestures.detectTapGestures import androidx.compose.foundation.layout.Column @@ -61,6 +62,8 @@ fun AgencyRegisterScreen( } } + BackHandler(onBack = viewModel::navigateToLedger) + if (state.visibleOutDialog) { MDSModal( icon = R.drawable.ic_warning_filled, From 3687de8ff70e7e5ccd0195359a385391b92829c4 Mon Sep 17 00:00:00 2001 From: heejik Date: Fri, 26 Sep 2025 16:48:46 +0900 Subject: [PATCH 5/7] =?UTF-8?q?=EC=9E=A5=EB=B6=80=20=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EC=86=8C=EC=86=8D=EB=90=9C=20=EC=9E=A5=EB=B6=80=20=EC=97=86?= =?UTF-8?q?=EC=9D=84=20=EB=95=8C=EB=8F=84=20[=EC=9E=A5=EB=B6=80=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1,=20=EC=B4=88=EB=8C=80=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=20=EC=9E=85=EB=A0=A5=20BottomSheet]=20=ED=99=9C=EC=84=B1?= =?UTF-8?q?=ED=99=94=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../moneymong/ledger/LedgerScreen.kt | 1 - .../moneymong/ledger/view/LedgerTopbarView.kt | 28 ++++++++----------- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/LedgerScreen.kt b/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/LedgerScreen.kt index fbba0edb..2571ac87 100644 --- a/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/LedgerScreen.kt +++ b/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/LedgerScreen.kt @@ -152,7 +152,6 @@ fun LedgerScreen( modifier = Modifier.background(White), header = state.currentAgency?.name ?: "장부", icon = R.drawable.ic_chevron_bottom, - visibleArrow = state.agencyList.isNotEmpty(), onClickDownArrow = viewModel::onClickAgencyChange ) }, diff --git a/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/view/LedgerTopbarView.kt b/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/view/LedgerTopbarView.kt index 4565f510..75a33a21 100644 --- a/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/view/LedgerTopbarView.kt +++ b/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/view/LedgerTopbarView.kt @@ -18,17 +18,16 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.moneymong.moneymong.ui.noRippleClickable +import com.moneymong.moneymong.design_system.R import com.moneymong.moneymong.design_system.theme.Gray10 import com.moneymong.moneymong.design_system.theme.Heading1 -import com.moneymong.moneymong.design_system.R +import com.moneymong.moneymong.ui.noRippleClickable @Composable fun LedgerTopbarView( modifier: Modifier = Modifier, header: String, icon: Int, - visibleArrow: Boolean = false, onClickDownArrow: () -> Unit ) { Row( @@ -50,18 +49,16 @@ fun LedgerTopbarView( maxLines = 1 ) Spacer(modifier = Modifier.width(4.dp)) - if (visibleArrow) { - Icon( - modifier = Modifier - .size(20.dp) - .noRippleClickable { - onClickDownArrow() - }, - painter = painterResource(id = icon), - contentDescription = null, - tint = Gray10 - ) - } + Icon( + modifier = Modifier + .size(20.dp) + .noRippleClickable { + onClickDownArrow() + }, + painter = painterResource(id = icon), + contentDescription = null, + tint = Gray10 + ) } } @@ -71,6 +68,5 @@ fun LedgerTopbarPreview() { LedgerTopbarView( header = "장부장부장부장부장부장부장부장부장부", icon = R.drawable.ic_chevron_bottom, - visibleArrow = true ) {} } \ No newline at end of file From 76cfd07754a682c849024f66c791c4e12fcb7c7b Mon Sep 17 00:00:00 2001 From: heejik Date: Sun, 5 Oct 2025 23:50:30 +0900 Subject: [PATCH 6/7] =?UTF-8?q?=EC=B4=88=EB=8C=80=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=20=ED=99=94=EB=A9=B4=20=EB=92=A4=EB=A1=9C?= =?UTF-8?q?=EA=B0=80=EA=B8=B0=20or=20=EB=8B=AB=EA=B8=B0=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=EB=A5=BC=20navigate=20=EC=8B=9C=20argument=EB=A1=9C?= =?UTF-8?q?=20=EC=A0=84=EB=8B=AC=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/agency/join/AgencyJoinState.kt | 3 ++- .../agency/join/AgencyJoinViewModel.kt | 6 ++++- .../join/navigation/AgencyJoinNavigation.kt | 26 ++++++++++++++++--- .../moneymong/moneymong/home/HomeScreen.kt | 2 +- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/join/AgencyJoinState.kt b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/join/AgencyJoinState.kt index a0eb45fd..466fed1e 100644 --- a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/join/AgencyJoinState.kt +++ b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/join/AgencyJoinState.kt @@ -8,5 +8,6 @@ data class AgencyJoinState( val inputCode: String = "", val codeAccess: Boolean = false, val visiblePopUpError: Boolean = false, - val errorPopUpMessage: String = "" + val errorPopUpMessage: String = "", + val isBackButton: Boolean = false, ) : State \ No newline at end of file diff --git a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/join/AgencyJoinViewModel.kt b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/join/AgencyJoinViewModel.kt index 8b4db985..2b13da50 100644 --- a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/join/AgencyJoinViewModel.kt +++ b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/join/AgencyJoinViewModel.kt @@ -1,11 +1,13 @@ package com.moneymong.moneymong.feature.agency.join import androidx.core.text.isDigitsOnly +import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope import com.moneymong.moneymong.android.BaseViewModel import com.moneymong.moneymong.domain.usecase.agency.AgencyJoinUseCase import com.moneymong.moneymong.domain.usecase.agency.SaveAgencyIdUseCase import com.moneymong.moneymong.feature.agency.join.component.CODE_MAX_SIZE +import com.moneymong.moneymong.feature.agency.join.navigation.AgencyJoinArgs import com.moneymong.moneymong.model.agency.AgencyJoinRequest import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch @@ -15,9 +17,11 @@ import javax.inject.Inject @HiltViewModel class AgencyJoinViewModel @Inject constructor( + savedStateHandle: SavedStateHandle, private val agencyJoinUseCase: AgencyJoinUseCase, private val saveAgencyIdUseCase: SaveAgencyIdUseCase -) : BaseViewModel(AgencyJoinState()) { +) : BaseViewModel( + state = AgencyJoinState(isBackButton = AgencyJoinArgs(savedStateHandle).isBackButton)) { fun findLedgerByInviteCode() = intent { viewModelScope.launch { diff --git a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/join/navigation/AgencyJoinNavigation.kt b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/join/navigation/AgencyJoinNavigation.kt index 8cd81de5..95e92f28 100644 --- a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/join/navigation/AgencyJoinNavigation.kt +++ b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/join/navigation/AgencyJoinNavigation.kt @@ -1,25 +1,45 @@ package com.moneymong.moneymong.feature.agency.join.navigation +import androidx.lifecycle.SavedStateHandle import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions +import androidx.navigation.NavType import androidx.navigation.compose.composable +import androidx.navigation.navArgument import com.moneymong.moneymong.feature.agency.join.AgencyJoinScreen const val agencyJoinRoute = "agencyJoin_route" +const val IS_BACK_BUTTON = "IsBackButton" +const val agencyJoinRouteWithArgs = "$agencyJoinRoute/{${IS_BACK_BUTTON}}" -fun NavController.navigateAgencyJoin(navOptions: NavOptions? = null) { - navigate(agencyJoinRoute, navOptions) +fun NavController.navigateAgencyJoin( + navOptions: NavOptions? = null, + isBackButton: Boolean = false +) { + navigate("${agencyJoinRoute}/${isBackButton}", navOptions) } fun NavGraphBuilder.agencyJoinScreen( navigateToComplete: () -> Unit, navigateUp: () -> Unit, ) { - composable(route = agencyJoinRoute) { + composable( + route = agencyJoinRouteWithArgs, + arguments = listOf(navArgument(IS_BACK_BUTTON) { + type = NavType.BoolType + defaultValue = false + }) + ) { AgencyJoinScreen( navigateToComplete = navigateToComplete, navigateUp = navigateUp, ) } +} + +internal class AgencyJoinArgs(val isBackButton: Boolean) { + constructor(savedStateHandle: SavedStateHandle) : this( + isBackButton = checkNotNull(savedStateHandle[IS_BACK_BUTTON]) + ) } \ No newline at end of file diff --git a/feature/home/src/main/java/com/moneymong/moneymong/home/HomeScreen.kt b/feature/home/src/main/java/com/moneymong/moneymong/home/HomeScreen.kt index 08ebcdb8..f871a995 100644 --- a/feature/home/src/main/java/com/moneymong/moneymong/home/HomeScreen.kt +++ b/feature/home/src/main/java/com/moneymong/moneymong/home/HomeScreen.kt @@ -174,7 +174,7 @@ fun HomeScreen( agencyRegisterScreen( navigateToLedger = homeNavController::navigateLedger, - navigateToAgencyJoin = homeNavController::navigateAgencyJoin + navigateToAgencyJoin = { homeNavController.navigateAgencyJoin(isBackButton = true) } ) agencyRegisterCompleteScreen( From 1abfa9275d8cb6964fb2d5b1788efd2dca210186 Mon Sep 17 00:00:00 2001 From: heejik Date: Sun, 5 Oct 2025 23:58:10 +0900 Subject: [PATCH 7/7] =?UTF-8?q?=EC=B4=88=EB=8C=80=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=20=ED=99=94=EB=A9=B4=20=EB=92=A4=EB=A1=9C?= =?UTF-8?q?=EA=B0=80=EA=B8=B0=20or=20=EB=8B=AB=EA=B8=B0=20=EC=83=81?= =?UTF-8?q?=ED=83=9C(isBackButton)=EC=97=90=20=EB=94=B0=EB=A5=B8=20UI=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../moneymong/feature/agency/join/AgencyJoinScreen.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/join/AgencyJoinScreen.kt b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/join/AgencyJoinScreen.kt index 7561fb6c..7f33fea4 100644 --- a/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/join/AgencyJoinScreen.kt +++ b/feature/agency/src/main/java/com/moneymong/moneymong/feature/agency/join/AgencyJoinScreen.kt @@ -61,15 +61,18 @@ fun AgencyJoinScreen( .background(White) .height(44.dp), verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.End + horizontalArrangement = if (state.isBackButton) Arrangement.Start else Arrangement.End ) { + val navigateUpIconId = + if (state.isBackButton) R.drawable.ic_chevron_left else R.drawable.ic_close_default + Icon( modifier = Modifier .size(24.dp) .noRippleClickable { navigateUp() }, - painter = painterResource(id = R.drawable.ic_close_default), + painter = painterResource(id = navigateUpIconId), contentDescription = null, tint = Black )