TP-57848 | Mehul | Displaying Fastag balance (#10092)

This commit is contained in:
Mehul Garg
2024-03-12 16:38:47 +05:30
committed by GitHub
parent 161c0be264
commit 1f8c12c812
3 changed files with 51 additions and 5 deletions

View File

@@ -12,7 +12,8 @@ import com.google.gson.annotations.SerializedName
data class NaviBbpsDefaultConfig(
@SerializedName("configMessage") val configMessage: ConfigMessage = ConfigMessage(),
@SerializedName("nonExpandedDescriptionLength") val nonExpandedDescriptionLength: Int = 80,
@SerializedName("billerSearchDebounceInMillis") val billerSearchDebounceInMillis: Long = 600
@SerializedName("billerSearchDebounceInMillis") val billerSearchDebounceInMillis: Long = 600,
@SerializedName("fastagBalanceKey") val fastagBalanceKey: String = "FASTag balance"
)
data class ConfigMessage(

View File

@@ -16,14 +16,18 @@ import com.navi.bbps.common.AMOUNT_MAX_LENGTH
import com.navi.bbps.common.AMOUNT_MAX_LENGTH_AFTER_DECIMAL
import com.navi.bbps.common.AMOUNT_MAX_LENGTH_BEFORE_DECIMAL
import com.navi.bbps.common.CATEGORY_ID_DTH
import com.navi.bbps.common.CATEGORY_ID_FASTAG
import com.navi.bbps.common.CATEGORY_ID_MOBILE_POSTPAID
import com.navi.bbps.common.DATE_TIME_FORMAT_DATE_MONTH_NAME_YEAR_COMMA_TIME
import com.navi.bbps.common.DISPLAYABLE_MOBILE_NUMBER_KEY
import com.navi.bbps.common.NaviBbpsAnalytics
import com.navi.bbps.common.NaviBbpsScreen
import com.navi.bbps.common.model.NaviBbpsVmData
import com.navi.bbps.common.model.config.NaviBbpsDefaultConfig
import com.navi.bbps.common.usecase.NaviBbpsConfigUseCase
import com.navi.bbps.common.utils.NaviBbpsCommonUtils.getValidatedAmountNumber
import com.navi.bbps.common.utils.NaviBbpsDateUtils
import com.navi.bbps.common.utils.getDefaultConfig
import com.navi.bbps.common.utils.getDisplayableAmount
import com.navi.bbps.common.viewmodel.NaviBbpsBaseVM
import com.navi.bbps.feature.billhistorydetail.model.view.BillTransactionItemEntity
@@ -71,7 +75,8 @@ constructor(
savedStateHandle: SavedStateHandle,
private val dispatcherProvider: CoroutineDispatcherProvider,
private val payBillRepository: PayBillRepository,
private val naviBbpsDateUtils: NaviBbpsDateUtils
private val naviBbpsDateUtils: NaviBbpsDateUtils,
private val naviBbpsConfigUseCase: NaviBbpsConfigUseCase
) :
NaviBbpsBaseVM(
naviBbpsVmData = NaviBbpsVmData(screen = NaviBbpsScreen.NAVI_BBPS_PAY_BILL_SCREEN)
@@ -125,6 +130,9 @@ constructor(
private val _txId = MutableStateFlow("")
val txId = _txId.asStateFlow()
var fastagBalance: String? = null
var naviBbpsDefaultConfig = NaviBbpsDefaultConfig()
@Inject lateinit var paymentNavigator: PaymentNavigator
val errorMessageId =
@@ -138,9 +146,16 @@ constructor(
)
init {
initConfig()
updateScreenState()
}
private fun initConfig() {
viewModelScope.safeLaunch(Dispatchers.IO) {
naviBbpsDefaultConfig = naviBbpsConfigUseCase.getDefaultConfig()
}
}
private fun updateShouldAutoFocusOnAmount(paymentAmount: String = this.paymentAmount.value) {
_shouldAutoFocusOnAmount.update { paymentAmount.isEmpty() }
}
@@ -217,6 +232,16 @@ constructor(
updateIsAdhoc(isAdhoc = billerDetailsEntity.isAdhoc)
}
private fun updateFastagBalance(additionalParams: Map<String, String>?) {
if (
billCategoryEntity?.categoryId == CATEGORY_ID_FASTAG &&
!additionalParams.isNullOrEmpty()
) {
fastagBalance =
additionalParams?.getOrDefault(naviBbpsDefaultConfig.fastagBalanceKey, null)
}
}
private fun updateScreenState() {
when (val screenState = payBillScreenSource) {
is PayBillSource.Others -> {
@@ -260,6 +285,10 @@ constructor(
screenState.billerDetailsEntity,
)
)
updateFastagBalance(
additionalParams = screenState.billDetailsEntity.additionalParams
)
}
}
}

View File

@@ -59,6 +59,7 @@ import com.navi.bbps.R
import com.navi.bbps.common.MAX_AMOUNT_LENGTH
import com.navi.bbps.common.NaviBbpsAnalytics
import com.navi.bbps.common.NaviBbpsDimens
import com.navi.bbps.common.model.config.NaviBbpsDefaultConfig
import com.navi.bbps.common.theme.NaviBbpsColor
import com.navi.bbps.common.ui.BbpsCircleImage
import com.navi.bbps.common.ui.KeyValueTextSection
@@ -246,7 +247,9 @@ fun PayBillScreen(
when (payBillScreenState) {
is PayBillScreenState.BillDetailsAvailable -> {
RenderPayBillBox(
payBillScreenState as PayBillScreenState.BillDetailsAvailable
payBillScreenState as PayBillScreenState.BillDetailsAvailable,
fastagBalance = payBillViewModel.fastagBalance,
naviBbpsDefaultConfig = payBillViewModel.naviBbpsDefaultConfig
)
}
is PayBillScreenState.BillDetailsUnavailable -> {}
@@ -348,7 +351,11 @@ fun RenderPayBillPrepaidBox(payBillScreenState: PayBillScreenState.PrepaidBillDe
}
@Composable
fun RenderPayBillBox(payBillScreenState: PayBillScreenState.BillDetailsAvailable) {
fun RenderPayBillBox(
payBillScreenState: PayBillScreenState.BillDetailsAvailable,
naviBbpsDefaultConfig: NaviBbpsDefaultConfig,
fastagBalance: String?
) {
if (payBillScreenState.billDetailsEntity.isDisplayableBillDetailsAvailable) {
Column(
modifier =
@@ -394,6 +401,15 @@ fun RenderPayBillBox(payBillScreenState: PayBillScreenState.BillDetailsAvailable
)
Spacer(modifier = Modifier.height(16.dp))
}
if (!fastagBalance.isNullOrBlank()) {
KeyValueTextSection(
modifier = Modifier.fillMaxWidth(),
key = naviBbpsDefaultConfig.fastagBalanceKey,
value = stringResource(id = R.string.bbps_ruppes_symbol_x, fastagBalance)
)
}
Spacer(modifier = Modifier.height(16.dp))
}
}
if (payBillScreenState.isSecondSectionVisible) {
@@ -624,7 +640,7 @@ private fun startPaymentFlow(
billDetailsEntity = billDetailsEntity,
paymentStatus =
dataJSONObject?.optString(STATUS).toString(),
response = payload?.toString(),
response = payload.toString(),
categoryId = billCategoryEntity.categoryId
)
if (dataJSONObject != null) {