Skip to content

Commit dfd7a00

Browse files
committed
fix(send-money): resolve phone number fetching issue during navigation
1 parent 238c357 commit dfd7a00

File tree

4 files changed

+16
-14
lines changed

4 files changed

+16
-14
lines changed

feature/send-money/src/commonMain/kotlin/org/mifospay/feature/send/money/PayAnyoneScreen.kt

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ import androidx.compose.ui.text.input.KeyboardType
5252
import androidx.compose.ui.text.style.TextAlign
5353
import androidx.compose.ui.text.style.TextOverflow
5454
import androidx.compose.ui.unit.dp
55-
import androidx.lifecycle.SavedStateHandle
5655
import kotlinx.coroutines.delay
5756
import org.jetbrains.compose.ui.tooling.preview.Preview
57+
import org.koin.compose.viewmodel.koinViewModel
5858
import org.mifospay.core.designsystem.component.MifosGradientBackground
5959
import org.mifospay.core.designsystem.component.MifosOutlinedTextField
6060
import org.mifospay.core.designsystem.component.MifosScaffold
@@ -68,10 +68,9 @@ fun PayAnyoneScreen(
6868
onBackClick: () -> Unit,
6969
onContactPickerClick: () -> Unit,
7070
onContactSelected: (String) -> Unit = {},
71-
selectedContactPhone: String? = null,
7271
modifier: Modifier = Modifier,
7372
) {
74-
val viewModel: PayAnyoneViewModel = remember { PayAnyoneViewModel(SavedStateHandle()) }
73+
val viewModel: PayAnyoneViewModel = koinViewModel()
7574
val state by viewModel.stateFlow.collectAsState()
7675

7776
var currentPlaceholderIndex by remember { mutableStateOf(0) }
@@ -98,12 +97,6 @@ fun PayAnyoneScreen(
9897
}
9998
}
10099

101-
LaunchedEffect(selectedContactPhone) {
102-
selectedContactPhone?.let { phoneNumber ->
103-
viewModel.trySendAction(PayAnyoneAction.PhoneNumberSelected(phoneNumber))
104-
}
105-
}
106-
107100
MifosGradientBackground {
108101
MifosScaffold(
109102
modifier = modifier,
@@ -422,6 +415,5 @@ fun PayAnyoneScreenPreview() {
422415
onBackClick = {},
423416
onContactPickerClick = {},
424417
onContactSelected = {},
425-
selectedContactPhone = null,
426418
)
427419
}

feature/send-money/src/commonMain/kotlin/org/mifospay/feature/send/money/PayAnyoneViewModel.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,17 @@ class PayAnyoneViewModel(
3333
stateFlow
3434
.onEach { savedStateHandle.setSerialized(key = KEY_STATE, value = it) }
3535
.launchIn(viewModelScope)
36+
37+
// Handle selected contact phone from navigation arguments
38+
val selectedContactPhone = savedStateHandle.get<String>("selectedContact")
39+
if (selectedContactPhone != null) {
40+
mutableStateFlow.update {
41+
it.copy(
42+
inputValue = selectedContactPhone,
43+
showClearIcon = true,
44+
)
45+
}
46+
}
3647
}
3748

3849
override fun handleAction(action: PayAnyoneAction) {

feature/send-money/src/commonMain/kotlin/org/mifospay/feature/send/money/di/SendMoneyModule.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ package org.mifospay.feature.send.money.di
1111

1212
import org.koin.core.module.dsl.viewModelOf
1313
import org.koin.dsl.module
14+
import org.mifospay.feature.send.money.PayAnyoneViewModel
1415
import org.mifospay.feature.send.money.PayeeDetailsViewModel
1516
import org.mifospay.feature.send.money.ScannerModule
1617
import org.mifospay.feature.send.money.SendMoneyOptionsViewModel
@@ -21,4 +22,5 @@ val SendMoneyModule = module {
2122
viewModelOf(::SendMoneyViewModel)
2223
viewModelOf(::SendMoneyOptionsViewModel)
2324
viewModelOf(::PayeeDetailsViewModel)
25+
viewModelOf(::PayAnyoneViewModel)
2426
}

feature/send-money/src/commonMain/kotlin/org/mifospay/feature/send/money/navigation/SendNavigation.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,14 +138,11 @@ fun NavGraphBuilder.payAnyoneScreen(
138138
defaultValue = null
139139
},
140140
),
141-
) { backStackEntry ->
142-
val selectedContactPhone = backStackEntry.arguments?.getString(PAY_ANYONE_SELECTED_CONTACT_ARG)
143-
141+
) {
144142
PayAnyoneScreen(
145143
onBackClick = onBackClick,
146144
onContactPickerClick = onContactPickerClick,
147145
onContactSelected = onContactSelected,
148-
selectedContactPhone = selectedContactPhone,
149146
)
150147
}
151148
}

0 commit comments

Comments
 (0)