@@ -21,6 +21,7 @@ import androidclient.feature.loan.generated.resources.feature_loan_charge_off_pl
2121import androidclient.feature.loan.generated.resources.feature_loan_charge_off_reason
2222import androidclient.feature.loan.generated.resources.feature_loan_charge_off_submit
2323import androidclient.feature.loan.generated.resources.feature_loan_charge_off_transaction_date
24+ import androidclient.feature.loan.generated.resources.feature_loan_loan_charges
2425import androidclient.feature.loan.generated.resources.ok
2526import androidx.compose.foundation.layout.Box
2627import androidx.compose.foundation.layout.Column
@@ -34,14 +35,19 @@ import androidx.compose.foundation.verticalScroll
3435import androidx.compose.material3.DatePicker
3536import androidx.compose.material3.DatePickerDialog
3637import androidx.compose.material3.ExperimentalMaterial3Api
38+ import androidx.compose.material3.Icon
39+ import androidx.compose.material3.IconButton
3740import androidx.compose.material3.SelectableDates
41+ import androidx.compose.material3.SnackbarHostState
3842import androidx.compose.material3.Text
3943import androidx.compose.material3.TextButton
4044import androidx.compose.material3.rememberDatePickerState
4145import androidx.compose.runtime.Composable
4246import androidx.compose.runtime.LaunchedEffect
4347import androidx.compose.runtime.getValue
48+ import androidx.compose.runtime.mutableStateOf
4449import androidx.compose.runtime.remember
50+ import androidx.compose.runtime.rememberCoroutineScope
4551import androidx.compose.ui.Modifier
4652import androidx.compose.ui.text.input.KeyboardType
4753import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -50,14 +56,17 @@ import com.mifos.core.common.utils.DateHelper
5056import com.mifos.core.designsystem.component.MifosButton
5157import com.mifos.core.designsystem.component.MifosDatePickerTextField
5258import com.mifos.core.designsystem.component.MifosOutlinedTextField
59+ import com.mifos.core.designsystem.component.MifosScaffold
5360import com.mifos.core.designsystem.component.MifosSweetError
5461import com.mifos.core.designsystem.component.MifosTextFieldDropdown
62+ import com.mifos.core.designsystem.icon.MifosIcons
5563import com.mifos.core.designsystem.theme.DesignToken
5664import com.mifos.core.designsystem.theme.MifosTypography
5765import com.mifos.core.ui.components.MifosAlertDialog
5866import com.mifos.core.ui.components.MifosBreadcrumbNavBar
5967import com.mifos.core.ui.components.MifosProgressIndicator
6068import com.mifos.core.ui.util.EventsEffect
69+ import kotlinx.html.Entities
6170import org.jetbrains.compose.resources.stringResource
6271import org.koin.compose.viewmodel.koinViewModel
6372import template.core.base.designsystem.theme.KptTheme
@@ -84,11 +93,6 @@ internal fun LoanChargeOffScreen(
8493 onAction = remember(viewModel) { { viewModel.trySendAction(it) } },
8594 navController = navController,
8695 )
87-
88- LoanChargeOffDialog (
89- state = state,
90- onAction = remember(viewModel) { { viewModel.trySendAction(it) } },
91- )
9296}
9397
9498@Composable
@@ -98,33 +102,47 @@ private fun LoanChargeOffScreenContent(
98102 navController : NavController ,
99103 modifier : Modifier = Modifier ,
100104) {
101- Column (
102- modifier = modifier.fillMaxSize(),
103- ) {
104- MifosBreadcrumbNavBar (navController)
105+ val snackbarHostState = remember { SnackbarHostState () }
106+ val snackbarMessage = state.snackbarMessage?.let { stringResource(it) }
107+ LaunchedEffect (snackbarMessage) {
108+ snackbarMessage?.let {
109+ snackbarHostState.showSnackbar(it)
110+ }
111+ }
105112
106- Box (
107- modifier = Modifier
108- .fillMaxSize()
109- .padding(horizontal = KptTheme .spacing.md),
113+ MifosScaffold (
114+ title = stringResource(Res .string.feature_loan_charge_off),
115+ onBackPressed = { onAction(LoanChargeOffAction .NavigateBack ) },
116+ snackbarHostState = snackbarHostState,
117+ ) {
118+ Column (
119+ modifier = modifier.fillMaxSize(),
110120 ) {
111- when (state.viewState) {
112- is LoanChargeOffState .ViewState .Loading -> {
113- MifosProgressIndicator ()
114- }
121+ MifosBreadcrumbNavBar (navController)
115122
116- is LoanChargeOffState .ViewState .Error -> {
117- MifosSweetError (
118- message = stringResource(state.viewState.message),
119- onclick = { onAction(LoanChargeOffAction .OnRetry ) },
120- )
121- }
123+ Box (
124+ modifier = Modifier
125+ .fillMaxSize()
126+ .padding(horizontal = KptTheme .spacing.md),
127+ ) {
128+ when (state.viewState) {
129+ is LoanChargeOffState .ViewState .Loading -> {
130+ MifosProgressIndicator ()
131+ }
132+
133+ is LoanChargeOffState .ViewState .Error -> {
134+ MifosSweetError (
135+ message = stringResource(state.viewState.message),
136+ onclick = { onAction(LoanChargeOffAction .OnRetry ) },
137+ )
138+ }
122139
123- is LoanChargeOffState .ViewState .Success -> {
124- LoanChargeOffForm (
125- state = state,
126- onAction = onAction,
127- )
140+ is LoanChargeOffState .ViewState .Success -> {
141+ LoanChargeOffForm (
142+ state = state,
143+ onAction = onAction,
144+ )
145+ }
128146 }
129147 }
130148 }
@@ -254,18 +272,3 @@ private fun LoanChargeOffForm(
254272 Spacer (modifier = Modifier .height(KptTheme .spacing.md))
255273 }
256274}
257-
258- @Composable
259- private fun LoanChargeOffDialog (
260- state : LoanChargeOffState ,
261- onAction : (LoanChargeOffAction ) -> Unit ,
262- ) {
263- if (state.dialogMessage != null ) {
264- MifosAlertDialog (
265- onConfirmation = { onAction(LoanChargeOffAction .DismissDialog ) },
266- dialogText = stringResource(state.dialogMessage),
267- onDismissRequest = {},
268- dismissText = null ,
269- )
270- }
271- }
0 commit comments