From 64f7451fe98e5f71be614cb4232ea43baea6850d Mon Sep 17 00:00:00 2001 From: Akshita Singh Date: Mon, 23 Dec 2024 16:58:24 +0530 Subject: [PATCH] NTP-15268 | Smart Intent (#12874) --- android/app/src/main/AndroidManifest.xml | 10 ++++ .../common/navigator/NaviDeepLinkNavigator.kt | 9 ++++ .../launcher/helper/LaunchEventsTracker.kt | 24 +++++++++- .../naviapp/navipay/NaviPayIntentActivity.kt | 48 +++++++++++++++++++ .../main/java/com/naviapp/utils/Utility.kt | 12 +++++ .../base/deeplink/util/DeeplinkConstants.kt | 1 + .../FirebaseRemoteConfigHelper.kt | 1 + .../navi/pay/analytics/NaviPayAnalytics.kt | 1 + .../setup/NaviPayCustomerStatusHandler.kt | 18 ++++++- .../navi/pay/common/setup/NaviPayManager.kt | 11 ++++- .../pay/common/utils/NaviPayCommonUtils.kt | 13 +++++ .../pay/entry/ui/RenderNaviPayIntentScreen.kt | 45 +++++++++++++++++ .../add/viewmodel/AccountAdditionViewModel.kt | 2 +- .../viewmodel/LinkedAccountDetailViewModel.kt | 7 +-- .../viewmodel/NaviPayOnboardingViewModel.kt | 8 +++- .../viewmodel/NaviPayLauncherViewModel.kt | 7 +-- .../com/navi/pay/utils/NaviPayConstants.kt | 1 + 17 files changed, 206 insertions(+), 12 deletions(-) create mode 100644 android/app/src/main/java/com/naviapp/navipay/NaviPayIntentActivity.kt create mode 100644 android/navi-pay/src/main/kotlin/com/navi/pay/entry/ui/RenderNaviPayIntentScreen.kt diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 60533436a7..b72b203700 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -298,6 +298,16 @@ + + + diff --git a/android/app/src/main/java/com/naviapp/common/navigator/NaviDeepLinkNavigator.kt b/android/app/src/main/java/com/naviapp/common/navigator/NaviDeepLinkNavigator.kt index 6392f1eba1..a5abf8892b 100644 --- a/android/app/src/main/java/com/naviapp/common/navigator/NaviDeepLinkNavigator.kt +++ b/android/app/src/main/java/com/naviapp/common/navigator/NaviDeepLinkNavigator.kt @@ -33,6 +33,7 @@ import com.navi.ap.utils.constants.CtaIdentifier import com.navi.ap.utils.constants.PL import com.navi.base.deeplink.listener.DeepLinkListener import com.navi.base.deeplink.util.DeeplinkConstants.LOGOUT +import com.navi.base.deeplink.util.DeeplinkConstants.NPAY_INTENT_ACTIVITY import com.navi.base.deeplink.util.DeeplinkConstants.RELEASE_LOG import com.navi.base.model.CtaData import com.navi.base.model.CtaType @@ -89,6 +90,7 @@ import com.navi.naviwidgets.utils.EMAIL_SUBJECT_PARAM import com.navi.naviwidgets.utils.FETCH_HISTORY_BY_SCREEN_NAME import com.navi.naviwidgets.utils.NAVI_CHAT_META_DATA import com.navi.pay.common.setup.NaviPayRouter +import com.navi.pay.utils.NAVI_PAY_INTENT_ACTIVITY_ENABLE import com.navi.paymentclients.ui.lending.LEPaymentHandlerActivity import com.navi.rr.common.navigation.NaviRRDeeplinkNavigator import com.navi.rr.common.navigation.NaviRRDeeplinkNavigator.LEADERBOARD @@ -143,6 +145,7 @@ import com.naviapp.utils.NaviDownloadManager import com.naviapp.utils.deleteCacheAndOpenLoginPage import com.naviapp.utils.openPlayStore import com.naviapp.utils.openWhatsAppChatConversation +import com.naviapp.utils.toggleNaviPayIntentActivityState import com.naviapp.webredirection.presentation.activity.WebRedirectionActivity import com.naviapp.webredirection.presentation.utils.WEB_REDIRECTION_SUBTITLE import com.naviapp.webredirection.presentation.utils.WEB_REDIRECTION_TITLE @@ -780,6 +783,12 @@ object NaviDeepLinkNavigator : DeepLinkListener { WEB_REDIRECTION -> { intent = Intent(activity, WebRedirectionActivity::class.java) } + NPAY_INTENT_ACTIVITY -> { + toggleNaviPayIntentActivityState( + bundle.getBoolean(NAVI_PAY_INTENT_ACTIVITY_ENABLE) + ) + return + } } ctaData.parameters ?.map { item -> diff --git a/android/app/src/main/java/com/naviapp/launcher/helper/LaunchEventsTracker.kt b/android/app/src/main/java/com/naviapp/launcher/helper/LaunchEventsTracker.kt index 3656226fe0..97196767ce 100644 --- a/android/app/src/main/java/com/naviapp/launcher/helper/LaunchEventsTracker.kt +++ b/android/app/src/main/java/com/naviapp/launcher/helper/LaunchEventsTracker.kt @@ -15,19 +15,25 @@ import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.BaseUtils import com.navi.base.utils.isNotNullAndNotEmpty +import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper import com.navi.common.utils.getWifiAddress import com.navi.common.utils.log +import com.navi.pay.common.setup.NaviPayManager import com.naviapp.BuildConfig import com.naviapp.analytics.deeplink.DeeplinkManager import com.naviapp.analytics.utils.NaviAnalytics import com.naviapp.utils.APP_INSTALLED import com.naviapp.utils.APP_VERSION +import com.naviapp.utils.toggleNaviPayIntentActivityState import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject class LaunchEventsTracker @Inject -constructor(@ApplicationContext private val applicationContext: Context) { +constructor( + @ApplicationContext private val applicationContext: Context, + private val naviPayManager: NaviPayManager +) { fun trackLaunchEvents( intent: Intent, @@ -42,6 +48,7 @@ constructor(@ApplicationContext private val applicationContext: Context) { trackIpAddress() trackFraudCheck(dashboardAnalytics) trackNotificationEvent() + checkAndEnableNaviPayIntentActivity() } private fun trackSplashLaunch(intent: Intent) { @@ -116,4 +123,19 @@ constructor(@ApplicationContext private val applicationContext: Context) { e.log() } } + + private fun checkAndEnableNaviPayIntentActivity() { + val prevSessionVersion = PreferenceManager.getIntPreferenceApp(APP_VERSION) + val currentVersion = BuildConfig.VERSION_CODE + if (prevSessionVersion != currentVersion) { + val shouldEnableNaviPayIntentActivity = + FirebaseRemoteConfigHelper.getBoolean( + key = FirebaseRemoteConfigHelper.NAVI_PAY_INTENT_ACTIVITY_CHECK_ENABLED, + defaultValue = true + ) + if (shouldEnableNaviPayIntentActivity && naviPayManager.isUserOnboarded()) { + toggleNaviPayIntentActivityState(shouldEnable = true) + } + } + } } diff --git a/android/app/src/main/java/com/naviapp/navipay/NaviPayIntentActivity.kt b/android/app/src/main/java/com/naviapp/navipay/NaviPayIntentActivity.kt new file mode 100644 index 0000000000..c9439738a7 --- /dev/null +++ b/android/app/src/main/java/com/naviapp/navipay/NaviPayIntentActivity.kt @@ -0,0 +1,48 @@ +/* + * + * * Copyright © 2024 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.naviapp.navipay + +import android.os.Bundle +import androidx.activity.compose.setContent +import com.navi.base.deeplink.DeepLinkManager +import com.navi.base.model.CtaData +import com.navi.common.model.ModuleNameV2 +import com.navi.pay.analytics.NaviPayAnalytics +import com.navi.pay.entry.ui.RenderNaviPayIntentScreen +import com.navi.pay.utils.NAVI_PAY_CTA_URL_PREFIX +import com.navi.pay.utils.NAVI_PAY_OF_TYPE_INTENT_TRANSACTION +import com.navi.pay.utils.NAVI_PAY_UPI_URI_KEY +import com.naviapp.launcher.ui.BaseLauncherActivity +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class NaviPayIntentActivity : BaseLauncherActivity() { + + override val screenName: String + get() = NaviPayAnalytics.NAVI_PAY_INTENT_ACTIVITY + + override val moduleName: ModuleNameV2 + get() = ModuleNameV2.NAVIPAY + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { RenderNaviPayIntentScreen() } + + DeepLinkManager.getDeepLinkListener() + ?.navigateTo( + activity = this, + ctaData = CtaData(url = NAVI_PAY_CTA_URL_PREFIX), + finish = true, + bundle = + Bundle().apply { + putParcelable(NAVI_PAY_UPI_URI_KEY, intent.data) + putBoolean(NAVI_PAY_OF_TYPE_INTENT_TRANSACTION, true) + } + ) + } +} diff --git a/android/app/src/main/java/com/naviapp/utils/Utility.kt b/android/app/src/main/java/com/naviapp/utils/Utility.kt index ef244130e3..839aadd015 100644 --- a/android/app/src/main/java/com/naviapp/utils/Utility.kt +++ b/android/app/src/main/java/com/naviapp/utils/Utility.kt @@ -15,6 +15,7 @@ import android.content.ComponentName import android.content.Context import android.content.ContextWrapper import android.content.Intent +import android.content.pm.PackageManager import android.content.res.Resources import android.graphics.Color import android.graphics.drawable.Drawable @@ -79,6 +80,7 @@ import com.naviapp.home.dashboard.models.response.DashboardContentResponse import com.naviapp.manager.usecase.UserDataUploadWorkerUseCase import com.naviapp.models.ColorData import com.naviapp.models.response.WidgetConfigLayoutParams +import com.naviapp.navipay.NaviPayIntentActivity import com.naviapp.registration.RegistrationActivity import com.naviapp.utils.Constants.HYPERVERGE_FILES_PATH import com.naviapp.utils.Constants.INDIAN_COUNTRY_CODE @@ -692,3 +694,13 @@ fun navigateToCrmHelpScreen(screenName: String, activity: Activity) { ) ) } + +fun toggleNaviPayIntentActivityState(shouldEnable: Boolean) { + val componentName = ComponentName(NaviApplication.instance, NaviPayIntentActivity::class.java) + NaviApplication.instance.packageManager.setComponentEnabledSetting( + componentName, + if (shouldEnable) PackageManager.COMPONENT_ENABLED_STATE_ENABLED + else PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP + ) +} diff --git a/android/navi-base/src/main/java/com/navi/base/deeplink/util/DeeplinkConstants.kt b/android/navi-base/src/main/java/com/navi/base/deeplink/util/DeeplinkConstants.kt index 73b46280a0..fb614cb919 100644 --- a/android/navi-base/src/main/java/com/navi/base/deeplink/util/DeeplinkConstants.kt +++ b/android/navi-base/src/main/java/com/navi/base/deeplink/util/DeeplinkConstants.kt @@ -22,4 +22,5 @@ object DeeplinkConstants { const val PRODUCT_HELP_SCREEN_NAME = "SCREEN_NAME" const val APP_UPDATE = "APP_UPDATE" const val INVESTMENT = "investment" + const val NPAY_INTENT_ACTIVITY = "NPAY_INTENT_ACTIVITY" } diff --git a/android/navi-common/src/main/java/com/navi/common/firebaseremoteconfig/FirebaseRemoteConfigHelper.kt b/android/navi-common/src/main/java/com/navi/common/firebaseremoteconfig/FirebaseRemoteConfigHelper.kt index 9e891fb7b5..72aae46ed0 100644 --- a/android/navi-common/src/main/java/com/navi/common/firebaseremoteconfig/FirebaseRemoteConfigHelper.kt +++ b/android/navi-common/src/main/java/com/navi/common/firebaseremoteconfig/FirebaseRemoteConfigHelper.kt @@ -143,6 +143,7 @@ object FirebaseRemoteConfigHelper { // COMMON const val LITMUS_EXPERIMENTS_CACHE_DURATION_IN_MILLIS = "LITMUS_EXPERIMENTS_CACHE_DURATION_IN_MILLIS" + const val NAVI_PAY_INTENT_ACTIVITY_CHECK_ENABLED = "NAVI_PAY_INTENT_ACTIVITY_CHECK_ENABLED" // PAYMENTS const val NAVI_PMT_JUSPAY_INIT_OPTIMISATION_DISABLE = diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt index 41aa82455b..14f7b33fae 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt @@ -5419,6 +5419,7 @@ class NaviPayAnalytics private constructor() { val INSTANCE = NaviPayAnalytics() const val NAVI_HOME_SCREEN = "NaviPay_Home" const val NAVI_PAY_ACTIVITY = "navipay_activity" + const val NAVI_PAY_INTENT_ACTIVITY = "navipay_intent_activity" const val NAVI_PAY_ONBOARDING_ACTIVITY = "navipay_onboarding_activity" const val NAVI_PAY_LAUNCHER = "NaviPay_Launcher" const val NAVI_PAY_PERMISSION = "NaviPay_Permission" diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/common/setup/NaviPayCustomerStatusHandler.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/common/setup/NaviPayCustomerStatusHandler.kt index e1d0d62fc6..bc02107e2e 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/common/setup/NaviPayCustomerStatusHandler.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/common/setup/NaviPayCustomerStatusHandler.kt @@ -7,9 +7,11 @@ package com.navi.pay.common.setup +import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper import com.navi.pay.common.model.view.NaviPaySessionHelper import com.navi.pay.common.repository.SharedPreferenceRepository import com.navi.pay.common.setup.model.NaviPayCustomerStatus +import com.navi.pay.common.utils.toggleNaviPayIntentActivityEnableState import com.navi.pay.utils.KEY_CUSTOMER_STATUS import javax.inject.Inject @@ -19,12 +21,13 @@ constructor( private val sharedPreferenceRepository: SharedPreferenceRepository, private val naviPaySessionHelper: NaviPaySessionHelper ) { - suspend fun updateCustomerStatus(customerStatus: String) { + suspend fun updateCustomerStatusAndHandleNaviPayIntentActivityState(customerStatus: String) { sharedPreferenceRepository.saveStringValueSynchronously( key = KEY_CUSTOMER_STATUS, value = customerStatus ) naviPaySessionHelper.setCustomerStatus(customerStatus = customerStatus) + checkAndUpdateNaviPayIntentActivity(customerStatus) } suspend fun getCustomerStatus(): NaviPayCustomerStatus { @@ -48,4 +51,17 @@ constructor( value = "" ) } + + private fun checkAndUpdateNaviPayIntentActivity(customerStatus: String) { + if (customerStatus == NaviPayCustomerStatus.LINKED_VPA.name) { + toggleNaviPayIntentActivityEnableState(shouldEnable = true) + } else if ( + FirebaseRemoteConfigHelper.getBoolean( + key = FirebaseRemoteConfigHelper.NAVI_PAY_INTENT_ACTIVITY_CHECK_ENABLED, + defaultValue = true + ) + ) { + toggleNaviPayIntentActivityEnableState(shouldEnable = false) + } + } } diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/common/setup/NaviPayManager.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/common/setup/NaviPayManager.kt index d9e59398b8..78e57a217d 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/common/setup/NaviPayManager.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/common/setup/NaviPayManager.kt @@ -38,6 +38,7 @@ import com.navi.pay.common.utils.VpaQRCodeManager import com.navi.pay.common.utils.isDifferentCustomerOrNewCustomer import com.navi.pay.common.utils.isSameOrNewUPICustomer import com.navi.pay.common.utils.isUpiSoftLogoutDisabled +import com.navi.pay.common.utils.toggleNaviPayIntentActivityEnableState import com.navi.pay.common.widget.NaviPayWidgetManager import com.navi.pay.db.NaviPayAppDatabase import com.navi.pay.db.NaviPayAppEncryptedDatabase @@ -192,7 +193,9 @@ constructor( launch { naviPayCustomerStatusHandler .get() - .updateCustomerStatus(customerStatus = customerStatus) + .updateCustomerStatusAndHandleNaviPayIntentActivityState( + customerStatus = customerStatus + ) } launch { if (oldMcId.isBlank()) { @@ -255,6 +258,9 @@ constructor( ) // Refreshing merchant customer Id and customer status after app login } naviPayWidgetManager.get().removeScanAndPayLauncherWidget() + if (getCustomerStatus() != NaviPayCustomerStatus.LINKED_VPA) { + toggleNaviPayIntentActivityEnableState(shouldEnable = false) + } } /** App level logout triggered, removing naviCacheRepository and upi customer status */ @@ -289,6 +295,9 @@ constructor( ) } naviPayWidgetManager.get().removeScanAndPayLauncherWidget() + if (getCustomerStatus() != NaviPayCustomerStatus.LINKED_VPA) { + toggleNaviPayIntentActivityEnableState(shouldEnable = false) + } } /** Removing upi data if customer logged-in with different number */ diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/NaviPayCommonUtils.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/NaviPayCommonUtils.kt index cc0626dbb9..76b0b075bf 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/NaviPayCommonUtils.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/NaviPayCommonUtils.kt @@ -41,6 +41,8 @@ import com.google.zxing.EncodeHintType import com.google.zxing.qrcode.QRCodeWriter import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel import com.navi.analytics.utils.NaviTrackEvent +import com.navi.base.deeplink.DeepLinkManager +import com.navi.base.deeplink.util.DeeplinkConstants import com.navi.base.deeplink.util.DeeplinkConstants.PRODUCT_HELP_PAGE import com.navi.base.deeplink.util.DeeplinkConstants.PRODUCT_HELP_SCREEN_NAME import com.navi.base.model.CtaData @@ -106,6 +108,7 @@ import com.navi.pay.utils.KEY_DEVICE_FINGERPRINT import com.navi.pay.utils.KEY_UPI_LITE_ACTIVE import com.navi.pay.utils.KEY_UPI_LITE_ACTIVE_ACCOUNT_INFO import com.navi.pay.utils.NAVI_PAY_ENCRYPT_SHARED_PREF_DATA_KEYS +import com.navi.pay.utils.NAVI_PAY_INTENT_ACTIVITY_ENABLE import com.navi.pay.utils.NAVI_PAY_LOCAL_URI_SCHEME import com.navi.pay.utils.NAVI_PAY_NON_ENCRYPT_SHARED_PREF_DATA_KEYS import com.navi.pay.utils.NAVI_PAY_TRANSACTION_HISTORY_TAG_SEPARATOR @@ -924,3 +927,13 @@ fun isNaviPayOriginatedIntent(uri: Uri): Boolean { } fun getDefaultPayeeEntity() = PayeeEntity(name = "Default", vpa = "Default") + +fun toggleNaviPayIntentActivityEnableState(shouldEnable: Boolean) { + DeepLinkManager.getDeepLinkListener() + ?.navigateTo( + activity = null, + ctaData = CtaData(url = DeeplinkConstants.NPAY_INTENT_ACTIVITY), + bundle = Bundle().apply { putBoolean(NAVI_PAY_INTENT_ACTIVITY_ENABLE, shouldEnable) }, + finish = true + ) +} diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/entry/ui/RenderNaviPayIntentScreen.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/entry/ui/RenderNaviPayIntentScreen.kt new file mode 100644 index 0000000000..c7b9426a0e --- /dev/null +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/entry/ui/RenderNaviPayIntentScreen.kt @@ -0,0 +1,45 @@ +/* + * + * * Copyright © 2024 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.navi.pay.entry.ui + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.unit.dp +import com.navi.pay.utils.shimmerEffect + +@Composable +fun RenderNaviPayIntentScreen() { + Column( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.SpaceEvenly, + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Spacer(modifier = Modifier.weight(0.2f)) + repeat(4) { + Box( + modifier = + Modifier.fillMaxWidth() + .padding(horizontal = 20.dp) + .weight(1f) + .clip(RoundedCornerShape(4.dp)) + .shimmerEffect() + ) + } + Spacer(modifier = Modifier.weight(0.2f)) + } +} diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/viewmodel/AccountAdditionViewModel.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/viewmodel/AccountAdditionViewModel.kt index b2c8c3e2ec..8fef73506b 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/viewmodel/AccountAdditionViewModel.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/viewmodel/AccountAdditionViewModel.kt @@ -484,7 +484,7 @@ constructor( private suspend fun handleAddAccountSuccess(selectedAccount: LinkedAccountEntity) { _bindingProgress.update { 1f } _enableAddAccountCtaLoaderState.update { false } - naviPayCustomerStatusHandler.updateCustomerStatus( + naviPayCustomerStatusHandler.updateCustomerStatusAndHandleNaviPayIntentActivityState( customerStatus = NaviPayCustomerStatus.LINKED_VPA.name ) refreshLinkedAccountsUseCase.execute(screenName = screenName) diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/detail/viewmodel/LinkedAccountDetailViewModel.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/detail/viewmodel/LinkedAccountDetailViewModel.kt index 3f486c9b60..163aa47aa4 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/detail/viewmodel/LinkedAccountDetailViewModel.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/detail/viewmodel/LinkedAccountDetailViewModel.kt @@ -703,9 +703,10 @@ constructor( emitTriggerDismissBottomSheet() updateUIState(uiState = LinkedAccountDetailScreenUIState.RemoveAccountSuccess) if (linkedAccountsUseCase.execute(screenName = screenName).first().isEmpty()) { - naviPayCustomerStatusHandler.updateCustomerStatus( - NaviPayCustomerStatus.DEVICE_BOUNDED.name - ) + naviPayCustomerStatusHandler + .updateCustomerStatusAndHandleNaviPayIntentActivityState( + NaviPayCustomerStatus.DEVICE_BOUNDED.name + ) dataStoreHelper.save( key = DS_KEY_NAVI_PAY_CUSTOMER_STATUS, value = NaviPayCustomerStatus.DEVICE_BOUNDED.name diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/viewmodel/NaviPayOnboardingViewModel.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/viewmodel/NaviPayOnboardingViewModel.kt index 2614fa1533..fb672226b7 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/viewmodel/NaviPayOnboardingViewModel.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/viewmodel/NaviPayOnboardingViewModel.kt @@ -526,7 +526,9 @@ constructor( onboardingSource = onboardingSource.value, naviPaySessionAttributes = getNaviPaySessionAttributes() ) - naviPayCustomerStatusHandler.updateCustomerStatus(customerStatus = customerStatus) + naviPayCustomerStatusHandler.updateCustomerStatusAndHandleNaviPayIntentActivityState( + customerStatus = customerStatus + ) when (customerStatus) { NaviPayCustomerStatus.LINKED_VPA.name -> { @@ -1143,7 +1145,9 @@ constructor( return@launch } - naviPayCustomerStatusHandler.updateCustomerStatus(customerStatus = customerStatus) + naviPayCustomerStatusHandler.updateCustomerStatusAndHandleNaviPayIntentActivityState( + customerStatus = customerStatus + ) if (customerStatus == NaviPayCustomerStatus.LINKED_VPA.name) { deferredApiCallList.add( diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/launcher/viewmodel/NaviPayLauncherViewModel.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/launcher/viewmodel/NaviPayLauncherViewModel.kt index 86ed982602..e91ce69bc1 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/launcher/viewmodel/NaviPayLauncherViewModel.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/launcher/viewmodel/NaviPayLauncherViewModel.kt @@ -146,9 +146,10 @@ constructor( } } is NaviPaySetupStatus.Success -> { - naviPayCustomerStatusHandler.updateCustomerStatus( - naviPaySetupStatus.customerStatus - ) + naviPayCustomerStatusHandler + .updateCustomerStatusAndHandleNaviPayIntentActivityState( + naviPaySetupStatus.customerStatus + ) updateNavigateToNextScreenValue( value = LauncherScreenToNextScreenNavigate.OnLocalDataValidState( diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/utils/NaviPayConstants.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/utils/NaviPayConstants.kt index 0a2dfc9c00..053d29cf08 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/utils/NaviPayConstants.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/utils/NaviPayConstants.kt @@ -242,6 +242,7 @@ const val NAVI_PAY_DEEP_LINK_NAVIGATOR_KEY = "naviPay" const val NAVI_PAY_CTA_URL_PREFIX = "$NAVI_PAY_DEEP_LINK_NAVIGATOR_KEY/" const val NAVI_PAY_UPI_URI_KEY = "naviPayUpiUriKey" const val NAVI_PAY_OF_TYPE_INTENT_TRANSACTION = "naviPayOfTypeIntentTransaction" +const val NAVI_PAY_INTENT_ACTIVITY_ENABLE = "enable" const val CL_RESULT_CODE_ISSUER_OTP = 2 const val CL_RESULT_CODE_AADHAAR_OTP = 4