From 395a9f2a310718e75010042063bd77f5682dd8be Mon Sep 17 00:00:00 2001 From: Ayushman Sharma Date: Mon, 24 Feb 2025 16:39:49 +0530 Subject: [PATCH] NTP-38150 | add custom action handler condition (#14998) --- .../adverse/AdverseDependencyProvider.kt | 41 ++++++++++++++++--- android/gradle/libs.versions.toml | 2 +- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/android/app/src/main/java/com/naviapp/adverse/AdverseDependencyProvider.kt b/android/app/src/main/java/com/naviapp/adverse/AdverseDependencyProvider.kt index 0f15019cc0..73959ce8c2 100644 --- a/android/app/src/main/java/com/naviapp/adverse/AdverseDependencyProvider.kt +++ b/android/app/src/main/java/com/naviapp/adverse/AdverseDependencyProvider.kt @@ -21,10 +21,12 @@ import com.navi.analytics.utils.SESSION_ID import com.navi.base.AppServiceManager import com.navi.base.deeplink.DeepLinkManager import com.navi.base.model.CtaData +import com.navi.base.model.LineItem import com.navi.base.sharedpref.CommonPrefConstants.USER_EXTERNAL_ID import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.BaseUtils import com.navi.base.utils.NetWatchManger +import com.navi.base.utils.isNotNull import com.navi.base.utils.orFalse import com.navi.common.uitron.model.action.CtaAction import com.navi.common.utils.Constants.ADVERSE @@ -62,6 +64,16 @@ class AdverseDependencyProvider : IAdverseDependencyProvider { } } + override fun handleUiTronAction( + activity: Activity, + action: UiTronAction, + actionHandler: ((action: UiTronAction?) -> Unit)?, + ) { + if (action is CtaAction) { + onCtaClick(action.ctaData, activity, actionHandler) + } + } + override fun handleApiResponse(response: Response<*>) { NetWatchManger.buildLogMessage( responseData = response.body(), @@ -73,16 +85,29 @@ class AdverseDependencyProvider : IAdverseDependencyProvider { ) } - fun onCtaClick(ctaData: CtaData?, activity: Activity) { + private fun onCtaClick( + ctaData: CtaData?, + activity: Activity, + actionHandler: ((action: UiTronAction?) -> Unit)? = null, + ) { ctaData?.let { cta -> cta.bundle?.putString(PAGE_LAUNCH_SOURCE, ADVERSE) if (ctaData.type == DYNAMIC_DEEPLINK && ctaData.url?.contains("http") == true) { - val intent = Intent(activity, DeeplinkManagementActivity::class.java) - intent.data = ctaData.url?.toUri() - intent.putExtra(BRANCH_NEW_SESSION, true) - intent.putExtra(PAGE_LAUNCH_SOURCE, ADVERSE) - activity.startActivity(intent) + with(activity) { + val intent = + Intent(activity, DeeplinkManagementActivity::class.java).apply { + data = ctaData.url?.toUri() + putExtra(BRANCH_NEW_SESSION, true) + putExtra(PAGE_LAUNCH_SOURCE, ADVERSE) + } + startActivity(intent) + } + } else if ( + isPresentInLineItem(cta.parameters, SHOULD_USE_CUSTOM_ACTION_HANDLER) && + actionHandler.isNotNull() + ) { + actionHandler?.invoke(CtaAction(ctaData = cta)) } else { DeepLinkManager.getDeepLinkListener() ?.navigateTo( @@ -96,8 +121,12 @@ class AdverseDependencyProvider : IAdverseDependencyProvider { } } + private fun isPresentInLineItem(list: List?, key: String) = + list?.any { it.key == key }.orFalse() + companion object { const val DYNAMIC_DEEPLINK = "DYNAMIC_DEEPLINK" const val BRANCH_NEW_SESSION = "branch_force_new_session" + const val SHOULD_USE_CUSTOM_ACTION_HANDLER = "shouldUseCustomActionHandler" } } diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml index 20a1089354..3878f999b7 100644 --- a/android/gradle/libs.versions.toml +++ b/android/gradle/libs.versions.toml @@ -90,7 +90,7 @@ masayukiSuda-easingInterpolator = "v1.3.2" mlkit-barcodeScanning = "17.3.0" mockk = "1.13.16" mvel2 = "2.4.15.Final" -navi-adverse = "1.16.0" +navi-adverse = "1.17.0" navi-alfred = "2.1.0" navi-customerDocumentCollector = "1.0.1" navi-elex = "1.11.1"