NTP-9377 | PS | fix for scroll issue in tribute payments (#13414)
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user