NTP-3815 | Send money focusRequester crash fix (#12577)

This commit is contained in:
Shaurya Rehan
2024-09-17 18:52:43 +05:30
committed by GitHub
parent baa2c9ff9f
commit 103c36663e
4 changed files with 17 additions and 27 deletions

View File

@@ -72,7 +72,6 @@ import com.navi.pay.utils.conditional
import com.navi.pay.utils.customHide
import com.navi.pay.utils.isAmountValidForSendMoney
import com.navi.pay.utils.shake
import kotlinx.coroutines.launch
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@@ -151,23 +150,12 @@ fun MainScreenV2(
)
}
LaunchedEffect(key1 = Unit) {
launch {
sendMoneyViewModel.shouldAutoFocusOnAmount.collect {
sendMoneyViewModel.clearShouldAutoFocusOnAmountReplayCache()
if (it && lastExecutedActionBeforeOnboardingSdkTrigger == null) {
focusRequester.requestFocus()
}
}
}
launch {
sendMoneyViewModel.triggerErrorVibrationAndShakeAnimation.collect {
amountFieldShakeController.shake(
ShakeConfig(iterations = 3, translateX = 7f, durationMillis = 30)
)
NaviPayCommonUtils.playErrorHaptic(context)
}
LaunchedEffect(Unit) {
sendMoneyViewModel.triggerErrorVibrationAndShakeAnimation.collect {
amountFieldShakeController.shake(
ShakeConfig(iterations = 3, translateX = 7f, durationMillis = 30)
)
NaviPayCommonUtils.playErrorHaptic(context)
}
}
@@ -277,6 +265,17 @@ fun MainScreenV2(
else AMOUNT_MAX_LENGTH,
focusRequester = focusRequester
)
LaunchedEffect(Unit) {
sendMoneyViewModel.shouldAutoFocusOnAmount.collect { requestFocus ->
sendMoneyViewModel.clearShouldAutoFocusOnAmountReplayCache()
if (requestFocus && lastExecutedActionBeforeOnboardingSdkTrigger == null) {
focusRequester.requestFocus()
keyboardController?.show()
}
}
}
Spacer(modifier = Modifier.height(4.dp))
if (isWarningOrErrorState.isErrorState) {
RenderWarningOrErrorMessage(isWarningOrErrorState = isWarningOrErrorState)

View File

@@ -86,8 +86,6 @@ import com.navi.pay.utils.customHide
import com.navi.pay.utils.initials
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@OptIn(ExperimentalMaterialApi::class)
@@ -307,7 +305,6 @@ fun RenderUPIIdInputScreen(
LaunchedEffect(Unit) {
focusRequester.requestFocus()
delay(100.milliseconds) // Delay to ensure focus is set
keyboardController?.show()
}

View File

@@ -109,8 +109,6 @@ import com.navi.pay.utils.customHide
import com.navi.pay.utils.launchPermissionSettingsScreen
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@OptIn(ExperimentalPermissionsApi::class, ExperimentalMaterialApi::class)
@@ -501,7 +499,6 @@ fun RenderPayToContactsSearchScreen(
LaunchedEffect(Unit) {
focusRequester.requestFocus()
delay(100.milliseconds) // Delay to ensure focus is set
keyboardController?.show()
}

View File

@@ -109,8 +109,6 @@ import com.navi.pay.utils.isEmpty
import com.navi.pay.utils.shimmerEffect
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@OptIn(ExperimentalMaterialApi::class, ExperimentalComposeUiApi::class)
@@ -648,7 +646,6 @@ private fun RenderSavedBeneficiarySearchScreen(
LaunchedEffect(Unit) {
focusRequester.requestFocus()
delay(100.milliseconds) // Delay to ensure focus is set
keyboardController?.show()
}