Skip to content

Commit 001e260

Browse files
committed
feat(feature:send-money): add screen for payment options
1 parent 4f8eb56 commit 001e260

File tree

9 files changed

+599
-15
lines changed

9 files changed

+599
-15
lines changed

cmp-android/prodRelease-badging.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package: name='org.mifospay' versionCode='1' versionName='2025.8.2-beta.0.2' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
1+
package: name='org.mifospay' versionCode='1' versionName='2025.8.3-beta.0.2' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
22
minSdkVersion:'26'
33
targetSdkVersion:'34'
44
uses-permission: name='android.permission.INTERNET'

cmp-shared/src/commonMain/kotlin/org/mifospay/shared/navigation/MifosNavHost.kt

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,10 @@ import org.mifospay.feature.savedcards.details.cardDetailRoute
7272
import org.mifospay.feature.savedcards.details.navigateToCardDetails
7373
import org.mifospay.feature.send.money.SendMoneyScreen
7474
import org.mifospay.feature.send.money.navigation.SEND_MONEY_BASE_ROUTE
75+
import org.mifospay.feature.send.money.navigation.SEND_MONEY_OPTIONS_ROUTE
76+
import org.mifospay.feature.send.money.navigation.navigateToSendMoneyOptionsScreen
7577
import org.mifospay.feature.send.money.navigation.navigateToSendMoneyScreen
78+
import org.mifospay.feature.send.money.navigation.sendMoneyOptionsScreen
7679
import org.mifospay.feature.send.money.navigation.sendMoneyScreen
7780
import org.mifospay.feature.settings.navigation.settingsScreen
7881
import org.mifospay.feature.standing.instruction.StandingInstructionsScreen
@@ -160,7 +163,7 @@ internal fun MifosNavHost(
160163
onRequest = {
161164
navController.navigateToShowQrScreen()
162165
},
163-
onPay = navController::navigateToSendMoneyScreen,
166+
onPay = navController::navigateToSendMoneyOptionsScreen,
164167
navigateToTransactionDetail = navController::navigateToSpecificTransaction,
165168
navigateToAccountDetail = navController::navigateToSavingAccountDetails,
166169
)
@@ -279,6 +282,32 @@ internal fun MifosNavHost(
279282
navigateBack = navController::navigateUp,
280283
)
281284

285+
sendMoneyOptionsScreen(
286+
onBackClick = navController::popBackStack,
287+
onScanQrClick = {
288+
// This is now handled by the ViewModel using ML Kit scanner
289+
},
290+
onPayAnyoneClick = {
291+
// TODO: Navigate to Pay Anyone screen
292+
},
293+
onBankTransferClick = {
294+
// TODO: Navigate to Bank Transfer screen
295+
},
296+
onFineractPaymentsClick = {
297+
navController.navigateToSendMoneyScreen()
298+
},
299+
onQrCodeScanned = { qrData ->
300+
navController.navigateToSendMoneyScreen(
301+
requestData = qrData,
302+
navOptions = navOptions {
303+
popUpTo(SEND_MONEY_OPTIONS_ROUTE) {
304+
inclusive = true
305+
}
306+
},
307+
)
308+
},
309+
)
310+
282311
sendMoneyScreen(
283312
onBackClick = navController::popBackStack,
284313
navigateToTransferScreen = navController::navigateToTransferScreen,

feature/make-transfer/src/commonMain/kotlin/org/mifospay/feature/make/transfer/MakeTransferViewModel.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import kotlinx.coroutines.flow.stateIn
2020
import kotlinx.coroutines.flow.update
2121
import kotlinx.coroutines.launch
2222
import kotlinx.serialization.Serializable
23+
import kotlinx.serialization.Transient
2324
import mobile_wallet.feature.make_transfer.generated.resources.Res
2425
import mobile_wallet.feature.make_transfer.generated.resources.feature_make_transfer_error_empty_amount
2526
import mobile_wallet.feature.make_transfer.generated.resources.feature_make_transfer_error_empty_description
@@ -207,7 +208,7 @@ internal data class MakeTransferState(
207208
val amount: String = toClientData.amount,
208209
val description: String = "",
209210
val selectedAccount: Account? = null,
210-
val dialogState: DialogState? = null,
211+
@Transient val dialogState: DialogState? = null,
211212
) {
212213
val amountIsValid: Boolean
213214
get() = amount.isNotEmpty() && amount.toDoubleOrNull() != null
@@ -232,12 +233,9 @@ internal data class MakeTransferState(
232233
transferDate = DateHelper.formattedShortDate,
233234
)
234235

235-
@Serializable
236236
sealed interface DialogState {
237-
@Serializable
238237
data object Loading : DialogState
239238

240-
@Serializable
241239
sealed interface Error : DialogState {
242240
data class StringMessage(val message: String) : Error
243241
data class ResourceMessage(val message: StringResource) : Error

feature/send-money/src/commonMain/composeResources/values/strings.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,12 @@
4040
<string name="feature_send_money_error_requesting_payment_qr_data_missing">Failed to request payment QR: required data is missing</string>
4141
<string name="feature_send_money_upi_qr_parsed_successfully">UPI QR code parsed successfully</string>
4242
<string name="feature_send_money_external_upi_payment">External UPI Payment</string>
43+
<string name="feature_send_money_choose_method">Choose how you want to send money</string>
44+
<string name="feature_send_money_scan_qr_code">Scan any QR code</string>
45+
<string name="feature_send_money_pay_anyone">Pay anyone</string>
46+
<string name="feature_send_money_bank_transfer">Bank Transfer</string>
47+
<string name="feature_send_money_fineract_payments">Fineract Payments</string>
48+
<string name="feature_send_money_people">People</string>
49+
<string name="feature_send_money_merchants">Merchants</string>
50+
<string name="feature_send_money_more">More</string>
4351
</resources>

0 commit comments

Comments
 (0)