From fd984f627318ed8ac947ed6bed2ec21203bbf68e Mon Sep 17 00:00:00 2001 From: Hitesh Kumar Date: Thu, 15 Aug 2024 00:56:04 +0530 Subject: [PATCH] =?UTF-8?q?TP-76987=20add=20support=20for=20finishing=20de?= =?UTF-8?q?eplink=20activity=20after=20a=20delay=20if=E2=80=A6=20(#12096)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/navigator/NaviDeepLinkNavigator.kt | 6 +----- .../ui/DeeplinkManagementActivity.kt | 19 +++++++++++++++++-- .../home/compose/activity/HomePageActivity.kt | 1 + .../java/com/naviapp/home/viewmodel/HomeVM.kt | 8 -------- .../registration/RegistrationActivity.kt | 7 ++----- .../ap/navigator/impl/ApDeepLinkNavigator.kt | 12 +++++------- .../base/deeplink/util/DeeplinkConstants.kt | 2 ++ .../java/com/navi/base/utils/BaseUtils.kt | 15 --------------- .../common/utils/TemporaryStorageHelper.kt | 1 + .../java/com/navi/common/utils/Utility.kt | 8 ++++++++ 10 files changed, 37 insertions(+), 42 deletions(-) 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 7c1aa68523..8511b6bb7c 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 @@ -385,11 +385,7 @@ object NaviDeepLinkNavigator : DeepLinkListener { HOME_SMALL -> { intent = activity?.let { activity -> - clearTaskTemp = - BaseUtils.isTaskFirstActivityApplication( - activity, - DEEPLINK_MANAGEMENT_ACTIVITY_CLASS_PATH - ) + clearTaskTemp = false Intent(activity, HomePageActivity::class.java).apply { setFlags(FLAG_ACTIVITY_CLEAR_TOP) } diff --git a/android/app/src/main/java/com/naviapp/deeplinkmanagement/ui/DeeplinkManagementActivity.kt b/android/app/src/main/java/com/naviapp/deeplinkmanagement/ui/DeeplinkManagementActivity.kt index bb69a2fe75..af5d95b5e8 100644 --- a/android/app/src/main/java/com/naviapp/deeplinkmanagement/ui/DeeplinkManagementActivity.kt +++ b/android/app/src/main/java/com/naviapp/deeplinkmanagement/ui/DeeplinkManagementActivity.kt @@ -19,6 +19,7 @@ import com.navi.base.model.CtaData import com.navi.base.utils.BaseUtils import com.navi.base.utils.orFalse import com.navi.common.model.ModuleNameV2 +import com.navi.common.utils.TemporaryStorageHelper import com.navi.common.utils.getDeviceSignature import com.navi.common.utils.getLocalStorageLocation import com.navi.common.utils.isInstalledInProfile @@ -64,6 +65,7 @@ class DeeplinkManagementActivity : BaseLauncherActivity() { navigateToHome() } setContent { RenderDeeplinkScreen() } + TemporaryStorageHelper.homePageBackPressed = false deeplinkManagementViewModel.handleDeeplink(intent) redirectionJob = lifecycleScope.launch { @@ -75,6 +77,7 @@ class DeeplinkManagementActivity : BaseLauncherActivity() { processDeeplink(null) } initObservers() + finishActivityAfterDelay() } override fun initialisationJobs() { @@ -112,8 +115,12 @@ class DeeplinkManagementActivity : BaseLauncherActivity() { override fun onStart() { super.onStart() if (redirectionJob?.isActive.orFalse().not()) { - // Navigate to home in case this activity opens up from back stack - super.onBackPressed() + // Finish the activity if it opens after pressing back from the home screen. + if (TemporaryStorageHelper.homePageBackPressed) { + finish() + } else { + super.onBackPressed() + } } else { // Branch needs to be initialized in onStart as per their documentation deeplinkManagementViewModel.handleBranchDeeplink(intent = intent, activity = this) @@ -157,6 +164,14 @@ class DeeplinkManagementActivity : BaseLauncherActivity() { NaviDeepLinkNavigator.navigate(this, CtaData(url = HOME), finish = true) } + // Terminate the activity after 10 seconds, as the launcher tasks will be initialized by then. + private fun finishActivityAfterDelay() { + lifecycle.coroutineScope.launch { + delay(10000) + finish() + } + } + override fun onBackPressed() { navigateToHome() } diff --git a/android/app/src/main/java/com/naviapp/home/compose/activity/HomePageActivity.kt b/android/app/src/main/java/com/naviapp/home/compose/activity/HomePageActivity.kt index 4e4b94ac5e..2109cc08ea 100644 --- a/android/app/src/main/java/com/naviapp/home/compose/activity/HomePageActivity.kt +++ b/android/app/src/main/java/com/naviapp/home/compose/activity/HomePageActivity.kt @@ -401,6 +401,7 @@ class HomePageActivity : if (homeVM.isProfileDrawerOpen) { homeVM.updateProfileDrawerState(false) } else if (selectedTabId == BottomBarTabType.HOME.name) { + TemporaryStorageHelper.homePageBackPressed = true super.onBackPressed() } else if (selectedTabId == BottomBarTabType.LOAN.name && sharedVM.showBottomSheet.value) { sharedVM.setBottomSheetState(false) diff --git a/android/app/src/main/java/com/naviapp/home/viewmodel/HomeVM.kt b/android/app/src/main/java/com/naviapp/home/viewmodel/HomeVM.kt index eca601c913..0917f69ab5 100644 --- a/android/app/src/main/java/com/naviapp/home/viewmodel/HomeVM.kt +++ b/android/app/src/main/java/com/naviapp/home/viewmodel/HomeVM.kt @@ -76,7 +76,6 @@ import com.naviapp.common.fragment.DownLoadPopupFragment import com.naviapp.common.fragment.LoanRepaymentBottomSheet import com.naviapp.common.model.UiTronActionHandler import com.naviapp.common.navigator.NaviDeepLinkNavigator -import com.naviapp.common.navigator.ScreenNavigator import com.naviapp.common.transformer.AppLoadTimerMapper import com.naviapp.common.viewmodel.BottomNavBarVM import com.naviapp.common.viewmodel.InAppUpdateVM @@ -1177,13 +1176,6 @@ constructor( } } - fun isHomePageUrl(ctaData: CtaData?): Boolean { - return ctaData?.url == NaviDeepLinkNavigator.HOME || - ctaData?.url == NaviDeepLinkNavigator.HOME_SMALL || - ctaData?.url == NaviDeepLinkNavigator.SPLASH || - ctaData?.url == ScreenNavigator.DASHBOARD_SCREEN - } - fun syncNaviPayDelayedOnboardingExperiment() { viewModelScope.safeLaunch(Dispatchers.IO) { naviPayManager.syncOnBoardingExperiment() } } diff --git a/android/app/src/main/java/com/naviapp/registration/RegistrationActivity.kt b/android/app/src/main/java/com/naviapp/registration/RegistrationActivity.kt index 643efbe405..91ebdb09a7 100644 --- a/android/app/src/main/java/com/naviapp/registration/RegistrationActivity.kt +++ b/android/app/src/main/java/com/naviapp/registration/RegistrationActivity.kt @@ -74,6 +74,7 @@ import com.navi.common.utils.getScreenWidth import com.navi.common.utils.getSessionId import com.navi.common.utils.getSimData import com.navi.common.utils.getWifiName +import com.navi.common.utils.isHomePageUrl import com.navi.common.utils.isInstalledInProfile import com.navi.common.utils.isLastLocationMocked import com.navi.common.utils.observeNonNull @@ -589,11 +590,7 @@ class RegistrationActivity : private fun goToNextScreen(nextCta: CtaData?) { updateFCMToken() - if ( - nextCta != null && - homeVM.isHomePageUrl(nextCta) && - homeVM.nuxHandler.canRedirectUserToNux() - ) { + if (nextCta != null && isHomePageUrl(nextCta) && homeVM.nuxHandler.canRedirectUserToNux()) { navigate(homeVM.nuxHandler.addUpiNuxCtaParams(nextCta, REGISTRATION)) return } diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/navigator/impl/ApDeepLinkNavigator.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/navigator/impl/ApDeepLinkNavigator.kt index afa0a2fb63..3375570ea9 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/navigator/impl/ApDeepLinkNavigator.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/navigator/impl/ApDeepLinkNavigator.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2023 by Navi Technologies Limited + * * Copyright © 2023-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -19,7 +19,9 @@ import com.navi.ap.utils.constants.ApScreenDestinations import com.navi.ap.utils.constants.CtaIdentifier import com.navi.ap.utils.identifier import com.navi.base.model.CtaData +import com.navi.base.utils.orFalse import com.navi.common.utils.Constants.APP_PLATFORM_LAUNCH +import com.navi.common.utils.isHomePageUrl import javax.inject.Inject /** @@ -74,14 +76,10 @@ constructor( ctaData: CtaData, bundle: Bundle, ) { + val finish = if (isHomePageUrl(ctaData)) true else ctaData.finish.orFalse() deepLinkManager .getDeepLinkListener() - ?.navigateTo( - activity = activity, - ctaData = ctaData, - bundle = bundle, - finish = ctaData.finish ?: false - ) + ?.navigateTo(activity = activity, ctaData = ctaData, bundle = bundle, finish = finish) } /** 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 7285f160a4..3c8c41b8b0 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 @@ -10,6 +10,8 @@ package com.navi.base.deeplink.util object DeeplinkConstants { const val REGISTRATION = "REGISTRATION" const val HOME = "HOME" + const val HOME_SMALL = "home" + const val DASHBOARD_SCREEN = "DASHBOARD_SCREEN" const val DASHBOARD = "DASHBOARD" const val INSURANCE = "Insurance" const val SPLASH = "SPLASH" diff --git a/android/navi-base/src/main/java/com/navi/base/utils/BaseUtils.kt b/android/navi-base/src/main/java/com/navi/base/utils/BaseUtils.kt index ea8c7e9a2c..81b29a3a3a 100644 --- a/android/navi-base/src/main/java/com/navi/base/utils/BaseUtils.kt +++ b/android/navi-base/src/main/java/com/navi/base/utils/BaseUtils.kt @@ -8,8 +8,6 @@ package com.navi.base.utils import android.annotation.SuppressLint -import android.app.Activity -import android.app.ActivityManager import android.content.ComponentName import android.content.Context import android.content.Intent @@ -563,19 +561,6 @@ object BaseUtils { return activities.map { it.activityInfo.packageName } } - fun isTaskFirstActivityApplication(activity: Activity, activityPath: String): Boolean { - val activityManager = - activity.getSystemService(Context.ACTIVITY_SERVICE) as? ActivityManager - val runningTaskInfoList = activityManager?.getRunningTasks(10) - val itr: Iterator? = runningTaskInfoList?.iterator() - - while (itr?.hasNext().orFalse()) { - val runningTaskInfo = itr?.next() - return runningTaskInfo?.baseActivity?.shortClassName == activityPath - } - return false - } - fun saveCurrentExternalCustomerId(externalCustomerId: String) { PreferenceManager.saveStringPreferenceAppOnMainThread( CommonPrefConstants.PREVIOUS_LOGGED_IN_EXTERNAL_CUSTOMER_ID, diff --git a/android/navi-common/src/main/java/com/navi/common/utils/TemporaryStorageHelper.kt b/android/navi-common/src/main/java/com/navi/common/utils/TemporaryStorageHelper.kt index 32173a02a3..954f01e27f 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/TemporaryStorageHelper.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/TemporaryStorageHelper.kt @@ -36,6 +36,7 @@ object TemporaryStorageHelper { var payNowClickTime = 0L var paymentsGetMethodData: Any? = null var paymentsLoaderBundleData: Any? = null + var homePageBackPressed: Boolean = false fun clear() { apiResponse.clear() diff --git a/android/navi-common/src/main/java/com/navi/common/utils/Utility.kt b/android/navi-common/src/main/java/com/navi/common/utils/Utility.kt index 9cc91362de..11cb062bb2 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/Utility.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/Utility.kt @@ -34,6 +34,7 @@ import com.navi.alfred.utils.log import com.navi.analytics.appsflyer.AppsFlyerUtil import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.AppServiceManager +import com.navi.base.deeplink.util.DeeplinkConstants import com.navi.base.model.CtaData import com.navi.base.security.AlgorithmKeyEnum import com.navi.base.security.AppKeyHelper.getAllSignatures @@ -496,3 +497,10 @@ fun registerReceiverWithVersionCheck( context.registerReceiver(broadcastReceiver, intentFilter) } } + +fun isHomePageUrl(ctaData: CtaData?): Boolean { + return ctaData?.url == DeeplinkConstants.HOME || + ctaData?.url == DeeplinkConstants.HOME_SMALL || + ctaData?.url == DeeplinkConstants.SPLASH || + ctaData?.url == DeeplinkConstants.DASHBOARD_SCREEN +}