TP-57848 | Mehul | Displaying Fastag balance (#10092)
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user