NTP-9377 | PS | fix for scroll issue in tribute payments (#13414)

This commit is contained in:
Prakhar Saxena
2024-10-28 21:14:08 +05:30
committed by GitHub
parent 360dc9e04f
commit 9fc744e78e
3 changed files with 32 additions and 9 deletions

View File

@@ -12,15 +12,16 @@ import android.content.pm.ActivityInfo
import android.os.Build
import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.layout.Column
import androidx.compose.ui.graphics.Color
import androidx.navigation.NavHostController
import androidx.navigation.compose.rememberNavController
import com.google.accompanist.systemuicontroller.rememberSystemUiController
import androidx.navigation.plusAssign
import com.navi.common.model.ModuleNameV2
import com.navi.common.ui.activity.BaseActivity
import com.navi.pay.common.theme.NaviPayMaterialTheme
import com.navi.pay.utils.rememberBottomSheetNavigator
import com.navi.payment.R
import com.navi.payment.nativepayment.dataprovider.WebPaymentDataProvider
import com.navi.payment.nativepayment.screens.NavGraphs
@@ -44,14 +45,13 @@ class WebPaymentActivity : BaseActivity() {
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
}
super.onCreate(savedInstanceState)
enableEdgeToEdge()
overridePendingTransition(R.anim.fade_in, 0)
setContent {
NaviPayMaterialTheme(transparentStatusBar = true) {
val systemUiController = rememberSystemUiController()
systemUiController.setStatusBarColor(color = Color.Transparent)
systemUiController.setNavigationBarColor(color = Color.Transparent)
val navController = rememberNavController()
val bottomSheetNavigator = rememberBottomSheetNavigator()
val navController =
rememberNavController().apply { this.navigatorProvider += bottomSheetNavigator }
this.navController = navController
Column {

View File

@@ -24,6 +24,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
@@ -114,7 +115,7 @@ fun WebPaymentMainScreen(
val bottomSheetState =
rememberModalBottomSheetState(
initialValue = ModalBottomSheetValue.Hidden,
initialValue = ModalBottomSheetValue.Expanded,
confirmValueChange = { bottomSheetStateHolder.bottomSheetStateChange },
skipHalfExpanded = true
)
@@ -334,6 +335,20 @@ fun WebPaymentMainScreen(
BackHandler { onBackClick.invoke() }
LaunchedEffect(Unit) {
snapshotFlow { bottomSheetState.currentValue }
.collect {
if (
it == ModalBottomSheetValue.Hidden &&
bottomSheetStateHolder.bottomSheetUIState is WebPaymentScreenState.Error &&
bottomSheetStateHolder.showBottomSheet &&
webPaymentViewModel.isDismissAllowed
) {
onBackClick.invoke()
}
}
}
LaunchedEffect(key1 = Unit) {
webPaymentViewModel.sendEvent("navi_pmt_native_screen_render")
if (coinEarnBannerDetails.isNotNull()) {

View File

@@ -126,6 +126,8 @@ constructor(
)
val bottomSheetStateHolder = _bottomSheetStateHolder.asStateFlow()
var isDismissAllowed = false
init {
initiate()
}
@@ -214,6 +216,8 @@ constructor(
),
bottomSheetStateChange = true
)
delay(500)
isDismissAllowed = true
}
} else {
updateBottomSheetUIState(
@@ -224,11 +228,13 @@ constructor(
),
bottomSheetStateChange = true
)
delay(500)
isDismissAllowed = true
}
}
}
private fun refreshUI(data: S2sPaymentMethodResponse) {
private suspend fun refreshUI(data: S2sPaymentMethodResponse) {
data.methodDetails?.let { methodDetails ->
paymentDataProvider.updateAnalyticsParams(
"payment_order_id",
@@ -238,6 +244,8 @@ constructor(
_coinEarnBannerDetails.update { methodDetails.bannerDetails?.coinRewards }
methodDetails.availablePaymentInstruments?.let { processAvailablePaymentMethods(it) }
}
delay(500)
isDismissAllowed = true
}
private fun processAvailablePaymentMethods(