From ecf0e48dafcd644145207ee958c9d3caa12d94d4 Mon Sep 17 00:00:00 2001 From: Sayed Owais Ali Date: Tue, 27 May 2025 12:32:41 +0530 Subject: [PATCH] NTP-60143 | Alfred rearch (#16237) Co-authored-by: amansingh --- .../utils/AlfredApiLogsProviderImpl.kt | 76 ------- .../naviapp/analytics/utils/NaviSDKHelper.kt | 10 +- .../com/naviapp/app/facades/AlfredFacade.kt | 63 ------ .../app/facades/AlfredLifecycleManager.kt | 57 +++++ .../AnrErrorHandlerInitializer.kt | 17 +- .../AppLifecycleManagerInitializer.kt | 15 +- .../initializers/CrashHandlerInitializer.kt | 12 +- .../app/initializers/SdkInitializer.kt | 3 - .../compose/home/utils/HomeScreenHelper.kt | 6 +- .../connectors/AlfredModuleConnector.kt | 11 +- .../bottomsheet/ui/HomeScreenBottomSheet.kt | 3 - .../ChromeRedirectionErrorScreen.kt | 3 - .../ChromeRedirectionLoadingScreen.kt | 3 - .../ap/common/ui/BottomSheetInitializer.kt | 4 - android/gradle/libs.versions.toml | 2 +- .../java/com/navi/analytics/model/ErrorLog.kt | 10 + .../com/navi/analytics/utils/AlfredFacade.kt | 205 ++++++++++++++++++ .../analytics/utils/NaviAnalyticsConstants.kt | 9 + .../navi/analytics/utils/NaviTrackEvent.kt | 22 +- .../com/navi/bbps/entry/NaviBbpsMainScreen.kt | 3 - .../category/ui/BillCategoryScreenV2.kt | 2 - .../com/navi/chat/base/ChatBaseActivity.kt | 17 -- .../chat/common/fragment/BaseBottomSheet.kt | 19 -- .../chat/ui/activities/NaviChatActivity.kt | 2 +- .../common/checkmate/core/CheckMateManager.kt | 8 +- .../FirebaseRemoteConfigHelper.kt | 1 + .../network/interceptor/MetricInterceptor.kt | 3 +- .../navi/common/ui/activity/BaseActivity.kt | 12 - .../common/ui/activity/NaviCoreActivity.kt | 11 + .../common/ui/dialog/BaseDialogFragment.kt | 8 +- .../common/ui/fragment/BaseBottomSheet.kt | 19 -- .../fragment/NaviAnalyticsBaseBottomSheet.kt | 27 ++- .../uitron/util/UiTronDependencyProvider.kt | 28 +-- .../navi/common/utils/CommonNaviAnalytics.kt | 9 +- .../navi/common/utils/CriticalJourneyUtil.kt | 6 +- .../navi/cycs/common/ui/CycsBottomsheet.kt | 3 - .../common/fragment/BaseBottomSheet.kt | 19 -- .../insurance/health/activity/BaseActivity.kt | 13 -- .../ui/DashboardRecentTransactionsSection.kt | 2 +- .../common/emisummary/ui/EmiListScreen.kt | 6 +- .../common/sendmoney/ui/SendMoneyScreen.kt | 6 +- .../ui/UpiGlobalSendMoneyScreen.kt | 4 +- .../bank/ui/BankDetailInputScreen.kt | 6 +- .../scanpay/ui/QrScannerScreen.kt | 6 +- .../common/ui/LinkedAccountBalanceScreen.kt | 6 +- .../nativepayment/NaviPaymentAnalytics.kt | 4 +- .../screens/CardDetailsScreen.kt | 6 +- .../nativepayment/screens/MPSScreen.kt | 8 +- .../nativepayment/screens/NPSScreen.kt | 6 +- .../nativepayment/screens/ScanCardScreen.kt | 6 +- .../common/bottomsheet/BottomSheetRenderer.kt | 4 - .../milestones/ui/compose/MilestoneViews.kt | 3 - .../rr/referral/ui/compose/RefereeHomePage.kt | 5 - .../ui/compose/ScratchCardComposable.kt | 3 - .../ui/compose/ScratchCardPagerComposable.kt | 3 - .../ui/compose/ScratchCardRenderer.kt | 3 - .../ui/compose/ScratchCardRendererV2.kt | 4 - .../rr/utils/composeutils/ComposableUtils.kt | 3 - 58 files changed, 416 insertions(+), 419 deletions(-) delete mode 100644 android/app/src/main/java/com/naviapp/analytics/utils/AlfredApiLogsProviderImpl.kt delete mode 100644 android/app/src/main/java/com/naviapp/app/facades/AlfredFacade.kt create mode 100644 android/app/src/main/java/com/naviapp/app/facades/AlfredLifecycleManager.kt create mode 100644 android/navi-analytics/src/main/java/com/navi/analytics/model/ErrorLog.kt create mode 100644 android/navi-analytics/src/main/java/com/navi/analytics/utils/AlfredFacade.kt diff --git a/android/app/src/main/java/com/naviapp/analytics/utils/AlfredApiLogsProviderImpl.kt b/android/app/src/main/java/com/naviapp/analytics/utils/AlfredApiLogsProviderImpl.kt deleted file mode 100644 index a48037b34d..0000000000 --- a/android/app/src/main/java/com/naviapp/analytics/utils/AlfredApiLogsProviderImpl.kt +++ /dev/null @@ -1,76 +0,0 @@ -/* - * - * * Copyright © 2024-2025 by Navi Technologies Limited - * * All rights reserved. Strictly confidential - * - */ - -package com.naviapp.analytics.utils - -import com.navi.alfred.network.AlfredApiLogsProvider -import com.navi.analytics.utils.NaviAnalyticsHelper -import com.navi.analytics.utils.NaviTrackEvent -import com.navi.base.utils.NetWatchManger -import com.navi.base.utils.isNotNullAndNotEmpty -import com.navi.common.constants.API_URL -import com.navi.common.constants.APP_REQUEST_ID -import com.navi.common.constants.CODE_TEXT -import com.navi.common.constants.MESSAGE_TEXT -import com.navi.common.constants.NETWORK_CRASH -import com.navi.common.constants.VERTICAL -import com.navi.common.constants.X_TARGET -import com.navi.common.model.common.ErrorLog -import com.navi.common.utils.log -import com.naviapp.utils.Constants -import okhttp3.Request -import okhttp3.Response -import org.json.JSONObject - -class AlfredApiLogsProviderImpl : AlfredApiLogsProvider { - override fun sendApiLog(request: Request, response: Response, exception: Exception?) { - if (NetWatchManger.isQaRelease()) { - try { - val responseString = response.peekBody(Long.MAX_VALUE).string() - val responseData = - if (responseString.isNotNullAndNotEmpty()) { - JSONObject(responseString) - } else { - null - } - NetWatchManger.buildLogMessage( - responseData = responseData, - request = response.request, - response = response, - logType = NetWatchManger.ReleaseLogType.NETWORK_LOG.name, - errorMessage = - ErrorLog(statusCode = response.code.toString(), message = response.message), - moduleName = Constants.ALFRED_MODULE, - ) - } catch (e: Exception) { - e.log() - } - } - - if (exception != null) { - try { - NaviAnalyticsHelper.recordException(exception) - NaviTrackEvent.trackEventOnClickStream( - NETWORK_CRASH, - mapOf( - Pair(MESSAGE_TEXT, exception.message.orEmpty()), - Pair(CODE_TEXT, response.code.toString()), - Pair(API_URL, request.url.toString()), - Pair(VERTICAL, request.headers[X_TARGET] ?: ""), - Pair(APP_REQUEST_ID, request.headers[APP_REQUEST_ID] ?: ""), - ), - ) - } catch (e: Exception) { - e.log() - } - } - } - - override fun sendEvent(eventName: String, eventAttributes: MutableMap?) { - NaviTrackEvent.trackEvent(eventName = eventName, eventValues = eventAttributes) - } -} diff --git a/android/app/src/main/java/com/naviapp/analytics/utils/NaviSDKHelper.kt b/android/app/src/main/java/com/naviapp/analytics/utils/NaviSDKHelper.kt index bbd468120f..09a7ca0ac6 100644 --- a/android/app/src/main/java/com/naviapp/analytics/utils/NaviSDKHelper.kt +++ b/android/app/src/main/java/com/naviapp/analytics/utils/NaviSDKHelper.kt @@ -17,8 +17,6 @@ import com.navi.adverse.data.network.model.AdverseLocationData import com.navi.adverse.data.network.model.AdverseUserData import com.navi.adverse.data.network.model.AnalyticsConfig import com.navi.adverse.sdk.sdkManager.AdverseSdkManager -import com.navi.alfred.AlfredManager -import com.navi.alfred.utils.AlfredConstants import com.navi.analytics.model.AnalyticsConfiguration import com.navi.analytics.model.AppInfo import com.navi.analytics.model.PulseConfig @@ -37,6 +35,7 @@ import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.ADVERSE_N import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.ADVERSE_RESPONSE_TTL_IN_SECS import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.DISABLE_ADVERSE_SDK import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.DISABLE_ALFRED +import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.DISABLE_ALFRED_LOGS import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.PULSE_EVENT_BATCH_SIZE import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.PULSE_EVENT_INTERVAL_IN_SECS import com.navi.common.network.ApiConstants.API_CONNECT_TIMEOUT_VALUE @@ -91,8 +90,8 @@ object NaviSDKHelper { flavor = BuildConfig.FLAVOR, alfredKey = BuildConfig.ALFRED_API_KEY, disableAlfredLogs = - FirebaseRemoteConfigHelper.getBoolean(AlfredConstants.DISABLE_ALFRED_LOGS), - disableAlfred = FirebaseRemoteConfigHelper.getBoolean(DISABLE_ALFRED), + FirebaseRemoteConfigHelper.getBoolean(DISABLE_ALFRED_LOGS, true), + disableAlfred = FirebaseRemoteConfigHelper.getBoolean(DISABLE_ALFRED, false), pulseConfig = PulseConfig( pulseUrl = BuildConfig.PULSE_BASE_URL, @@ -138,9 +137,6 @@ object NaviSDKHelper { CoroutineManager.scope.launchOnIO { setDeviceIdIfUserNotLoggedIn() setSessionId(naviApplication) - if (!FirebaseRemoteConfigHelper.getBoolean(DISABLE_ALFRED)) { - AlfredManager.getAlfredCruiseInfo(cruiseApiSuccessful = {}) - } CommonUtils.getUserLocation()?.let { userLocation -> userLocation.latitude?.toDoubleOrNull()?.let { latitude -> userLocation.longitude?.toDoubleOrNull()?.let { longitude -> diff --git a/android/app/src/main/java/com/naviapp/app/facades/AlfredFacade.kt b/android/app/src/main/java/com/naviapp/app/facades/AlfredFacade.kt deleted file mode 100644 index 7b01ab593f..0000000000 --- a/android/app/src/main/java/com/naviapp/app/facades/AlfredFacade.kt +++ /dev/null @@ -1,63 +0,0 @@ -/* - * - * * Copyright © 2024-2025 by Navi Technologies Limited - * * All rights reserved. Strictly confidential - * - */ - -package com.naviapp.app.facades - -import android.app.Activity -import com.navi.alfred.AlfredManager -import com.navi.alfred.utils.AlfredConstants -import com.navi.alfred.utils.log -import com.navi.chat.base.ChatBaseActivity -import com.navi.common.ui.activity.BaseActivity -import com.navi.insurance.health.activity.BaseActivity as InsuranceBaseActivity -import com.naviapp.app.NaviApplication -import javax.inject.Inject - -class AlfredFacade @Inject constructor() { - - fun initAlfredRecording(application: NaviApplication, activity: Activity) { - startAlfredRecording(application, activity) - } - - private fun startAlfredRecording(application: NaviApplication, activity: Activity) { - if (application.isDifferentPackage()) { - return - } - if (AlfredManager.isAlfredRecordingEnabled()) { - val screenName: String? - val moduleName: String? - when (activity) { - is BaseActivity -> { - screenName = activity.screenName - moduleName = activity.getCurrentModuleName() - } - is InsuranceBaseActivity -> { - screenName = activity.screenName - moduleName = AlfredConstants.INSURANCE_MODULE - } - is ChatBaseActivity -> { - screenName = activity.screenName - moduleName = AlfredConstants.CHAT_MODULE - } - else -> { - screenName = AlfredConstants.THIRD_PARTY_SCREEN - moduleName = AlfredConstants.THIRD_PARTY_MODULE - } - } - try { - AlfredManager.onActivityResumed( - applicationContext = application.applicationContext, - screenName = screenName, - moduleName = moduleName, - activity = activity, - ) - } catch (e: Exception) { - e.log() - } - } - } -} diff --git a/android/app/src/main/java/com/naviapp/app/facades/AlfredLifecycleManager.kt b/android/app/src/main/java/com/naviapp/app/facades/AlfredLifecycleManager.kt new file mode 100644 index 0000000000..a4f525d212 --- /dev/null +++ b/android/app/src/main/java/com/naviapp/app/facades/AlfredLifecycleManager.kt @@ -0,0 +1,57 @@ +/* + * + * * Copyright © 2024-2025 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.naviapp.app.facades + +import android.app.Activity +import com.navi.alfred.core.handler.AlfredLifecycleHandlerImpl +import com.navi.alfred.utils.AlfredConstants +import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper +import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.DISABLE_ALFRED +import com.navi.common.ui.activity.NaviCoreActivity +import com.naviapp.app.NaviApplication +import javax.inject.Inject + +class AlfredLifecycleManager @Inject constructor() { + + private val isAlfredEnabled: Boolean by lazy { + FirebaseRemoteConfigHelper.getBoolean(DISABLE_ALFRED).not() + } + + fun alfredOnActivityResumed(application: NaviApplication, activity: Activity) { + + if (application.isDifferentPackage() || isAlfredEnabled.not()) { + return + } + + val screenName: String? + val moduleName: String? + when (activity) { + is NaviCoreActivity -> { + screenName = activity.screenName + moduleName = activity.moduleName.name + } + + else -> { + screenName = AlfredConstants.THIRD_PARTY_SCREEN + moduleName = AlfredConstants.THIRD_PARTY_MODULE + } + } + AlfredLifecycleHandlerImpl.onActivityResumed( + screenName = screenName, + moduleName = moduleName, + activity = activity, + ) + } + + fun onApplicationInBackground() { + if (isAlfredEnabled.not()) { + return + } + AlfredLifecycleHandlerImpl.onApplicationInBackground() + } +} diff --git a/android/app/src/main/java/com/naviapp/app/initializers/AnrErrorHandlerInitializer.kt b/android/app/src/main/java/com/naviapp/app/initializers/AnrErrorHandlerInitializer.kt index 098f646549..1385129338 100644 --- a/android/app/src/main/java/com/naviapp/app/initializers/AnrErrorHandlerInitializer.kt +++ b/android/app/src/main/java/com/naviapp/app/initializers/AnrErrorHandlerInitializer.kt @@ -10,7 +10,8 @@ package com.naviapp.app.initializers import com.github.anrwatchdog.ANRError import com.github.anrwatchdog.ANRWatchDog import com.github.anrwatchdog.ANRWatchDog.ANRListener -import com.navi.alfred.AlfredManager +import com.navi.alfred.model.EventType +import com.navi.analytics.utils.AlfredFacade import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.utils.orFalse import com.navi.base.utils.orZero @@ -78,7 +79,10 @@ class AnrErrorHandlerInitializer @Inject constructor() : ComponentInitializer { val anrEventProperties = buildAnrEventProperties(error, stackTraceElement, className) anrEventProperties[ANR_SOURCE] = ANR_MONITOR trackEvent(anrEventProperties) - handleAnrEventIfNeeded(anrEventProperties) + AlfredFacade.handleNegativeExperienceEvent( + eventType = EventType.ANR, + eventProperties = anrEventProperties, + ) } } @@ -92,7 +96,6 @@ class AnrErrorHandlerInitializer @Inject constructor() : ComponentInitializer { val className = stackTraceElement.className val anrEventProperties = buildAnrEventProperties(error, stackTraceElement, className) trackEvent(anrEventProperties) - handleAnrEventIfNeeded(anrEventProperties) } } @@ -118,7 +121,7 @@ class AnrErrorHandlerInitializer @Inject constructor() : ComponentInitializer { VERTICAL to getVerticalFromStackTrace(error), FOREGROUND_SCREEN to NaviTrackEvent.foregroundScreen.orEmpty(), FOREGROUND_VERTICAL to NaviTrackEvent.foregroundVertical.orEmpty(), - ALFRED_SESSION_ID to AlfredManager.getAlfredSessionId(), + ALFRED_SESSION_ID to AlfredFacade.getAlfredSessionId(), STACK_TRACE to error.stackTraceToString().take(stackTraceSize), IS_APP_ANR to true.toString(), ) @@ -131,12 +134,6 @@ class AnrErrorHandlerInitializer @Inject constructor() : ComponentInitializer { ) } - private fun handleAnrEventIfNeeded(anrEventProperties: MutableMap) { - if (!application.isDifferentPackage()) { - AlfredManager.handleAnrEvent(anrEventProperties) - } - } - private fun isANRMonitorEnabled(): Boolean { return FirebaseRemoteConfigHelper.getBoolean( FirebaseRemoteConfigHelper.ANR_MONITOR_ENABLED_EXPERIMENT diff --git a/android/app/src/main/java/com/naviapp/app/initializers/AppLifecycleManagerInitializer.kt b/android/app/src/main/java/com/naviapp/app/initializers/AppLifecycleManagerInitializer.kt index 30b0586687..572e7f051a 100644 --- a/android/app/src/main/java/com/naviapp/app/initializers/AppLifecycleManagerInitializer.kt +++ b/android/app/src/main/java/com/naviapp/app/initializers/AppLifecycleManagerInitializer.kt @@ -11,7 +11,6 @@ import android.app.Activity import android.os.Build import android.os.Bundle import android.view.WindowManager -import com.navi.alfred.AlfredManager import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.AppLaunchUtils @@ -36,7 +35,7 @@ import com.navi.pay.common.setup.NaviPayManager import com.naviapp.analytics.utils.NaviAnalytics.Companion.EXTERNAL import com.naviapp.analytics.utils.NaviAnalytics.Companion.NAVIAPP_BACKGROUND_PUSH import com.naviapp.app.NaviApplication -import com.naviapp.app.facades.AlfredFacade +import com.naviapp.app.facades.AlfredLifecycleManager import com.naviapp.home.compose.activity.HomePageActivity import com.naviapp.releaselog.utils.NetWatchUtil import javax.inject.Inject @@ -47,7 +46,7 @@ import kotlinx.coroutines.launch class AppLifecycleManagerInitializer @Inject constructor( - private val alfredInitializer: AlfredFacade, + private val alfredInitializer: AlfredLifecycleManager, private val geoNetworkSignatureUseCase: GeoNetworkSignatureUseCase, ) : ComponentInitializer { @@ -95,18 +94,21 @@ constructor( activity.moduleName.name, ) } + is InsuranceBaseActivity -> { NaviTrackEvent.setForegroundScreenAndVertical( activity.screenName, ModuleNameV2.Insurance.name, ) } + is ChatBaseActivity -> { NaviTrackEvent.setForegroundScreenAndVertical( activity.screenName, ModuleNameV2.CHAT.name, ) } + else -> { NaviTrackEvent.setForegroundScreenAndVertical( activity.javaClass.simpleName, @@ -122,7 +124,7 @@ constructor( } if (application.getAppInForegroundCounter() > 0) { - alfredInitializer.initAlfredRecording(application, activity) + alfredInitializer.alfredOnActivityResumed(application, activity) if (isQaRelease()) { NetWatchUtil.addUniversalButtonToActivity( activity, @@ -171,7 +173,7 @@ constructor( } } if (application.isDifferentPackage().not()) { - AlfredManager.stopRecording() + alfredInitializer.onApplicationInBackground() ResourceManager.initResourceDownloadWorker(application.applicationContext) } @@ -180,12 +182,15 @@ constructor( is BaseActivity -> { activity.screenName } + is InsuranceBaseActivity -> { activity.screenName } + is ChatBaseActivity -> { activity.screenName } + else -> { activity.javaClass.simpleName } diff --git a/android/app/src/main/java/com/naviapp/app/initializers/CrashHandlerInitializer.kt b/android/app/src/main/java/com/naviapp/app/initializers/CrashHandlerInitializer.kt index bd541c90cf..a2319d5428 100644 --- a/android/app/src/main/java/com/naviapp/app/initializers/CrashHandlerInitializer.kt +++ b/android/app/src/main/java/com/naviapp/app/initializers/CrashHandlerInitializer.kt @@ -7,7 +7,8 @@ package com.naviapp.app.initializers -import com.navi.alfred.AlfredManager +import com.navi.alfred.model.EventType +import com.navi.analytics.utils.AlfredFacade import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.utils.orZero import com.navi.common.checkmate.core.CheckMateManager @@ -52,13 +53,14 @@ class CrashHandlerInitializer @Inject constructor() : ComponentInitializer { val crashEventProperties = buildCrashEventProperties(exception) try { - if (!application.isDifferentPackage()) { - AlfredManager.handleCrashEvent(crashEventProperties) - } CheckMateManager.logVerticalWiseAppCrashOrAnrEvent( eventName = NAP_METRIC, eventValues = crashEventProperties, ) + AlfredFacade.handleNegativeExperienceEvent( + eventType = EventType.CRASH, + eventProperties = crashEventProperties, + ) } finally { defaultHandler?.uncaughtException(thread, exception) } @@ -83,7 +85,7 @@ class CrashHandlerInitializer @Inject constructor() : ComponentInitializer { VERTICAL to getVerticalFromStackTrace(exception), FOREGROUND_SCREEN to NaviTrackEvent.foregroundScreen.orEmpty(), FOREGROUND_VERTICAL to NaviTrackEvent.foregroundVertical.orEmpty(), - ALFRED_SESSION_ID to AlfredManager.getAlfredSessionId(), + ALFRED_SESSION_ID to AlfredFacade.getAlfredSessionId(), STACK_TRACE to exception.stackTraceToString().take(stackTraceSize), IS_APP_CRASH to true.toString(), ) diff --git a/android/app/src/main/java/com/naviapp/app/initializers/SdkInitializer.kt b/android/app/src/main/java/com/naviapp/app/initializers/SdkInitializer.kt index 00a12f9848..db7bc4a407 100644 --- a/android/app/src/main/java/com/naviapp/app/initializers/SdkInitializer.kt +++ b/android/app/src/main/java/com/naviapp/app/initializers/SdkInitializer.kt @@ -8,7 +8,6 @@ package com.naviapp.app.initializers import android.content.Context -import com.navi.alfred.network.AlfredApiLogsManager import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.bandwidthbuddy.BandwidthAccessor import com.navi.base.sharedpref.PreferenceManager @@ -21,7 +20,6 @@ import com.navi.common.uitron.util.UiTronDependencyProvider import com.navi.common.utils.TemporaryStorageHelper import com.navi.uitron.UiTronSdkManager import com.naviapp.BuildConfig -import com.naviapp.analytics.utils.AlfredApiLogsProviderImpl import com.naviapp.analytics.utils.NaviSDKHelper import com.naviapp.app.NaviApplication import com.naviapp.utils.QA @@ -35,7 +33,6 @@ class SdkInitializer @Inject constructor() : ComponentInitializer { NaviSDKHelper.init(naviApplication = application) UiTronSdkManager.init(UiTronDependencyProvider(application.applicationContext)) initSdkDebugMode(application.applicationContext) - AlfredApiLogsManager.init(AlfredApiLogsProviderImpl()) BandwidthAccessor.init() // This will be removed in next release TemporaryStorageHelper.isOkHttpCustomDnsV2Enabled = diff --git a/android/app/src/main/java/com/naviapp/home/compose/home/utils/HomeScreenHelper.kt b/android/app/src/main/java/com/naviapp/home/compose/home/utils/HomeScreenHelper.kt index 1a1bd6a2f8..cbfd817441 100644 --- a/android/app/src/main/java/com/naviapp/home/compose/home/utils/HomeScreenHelper.kt +++ b/android/app/src/main/java/com/naviapp/home/compose/home/utils/HomeScreenHelper.kt @@ -19,7 +19,7 @@ import androidx.compose.ui.unit.Velocity import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.compose.LocalLifecycleOwner -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.analytics.utils.NaviTrackEvent import com.navi.common.alchemist.model.AlchemistWidgetModelDefinition import com.navi.common.alchemist.model.WidgetRenderState @@ -40,7 +40,7 @@ fun InitLifecycleListener(homeVM: () -> HomeViewModel, activity: HomePageActivit Lifecycle.Event.ON_CREATE -> { val threshold = homeVM().sectionVisibilityTracker.getItemImpressionThreshold() homeVM().viewImpressionTracker.setViewImpressionThreshold(threshold) - AlfredManager.setCurrentScreenName(screenName = activity.screenName) + AlfredFacade.setCurrentScreenName(screenName = activity.screenName) homeVM() .observeUPIVpa( onAction = { homeVM().handleAction(it) }, @@ -54,7 +54,7 @@ fun InitLifecycleListener(homeVM: () -> HomeViewModel, activity: HomePageActivit resetImpressionStates(homeVM()) homeVM().setHomeApiRefreshFlag(true) homeVM().handleUpiAdaptations(screenName = activity.screenName) - AlfredManager.setCurrentScreenName(screenName = activity.screenName) + AlfredFacade.setCurrentScreenName(screenName = activity.screenName) } else -> {} } diff --git a/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/AlfredModuleConnector.kt b/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/AlfredModuleConnector.kt index 732c47626e..05c7c3173c 100644 --- a/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/AlfredModuleConnector.kt +++ b/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/AlfredModuleConnector.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2024 by Navi Technologies Limited + * * Copyright © 2024-2025 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -13,8 +13,7 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule import com.facebook.react.bridge.ReactMethod import com.facebook.react.uimanager.NativeViewHierarchyManager import com.facebook.react.uimanager.UIManagerModule -import com.navi.alfred.AlfredManager -import com.navi.alfred.AlfredManager.clearBottomSheetView +import com.navi.analytics.utils.AlfredFacade import timber.log.Timber class AlfredModuleConnector internal constructor(context: ReactApplicationContext?) : @@ -31,7 +30,7 @@ class AlfredModuleConnector internal constructor(context: ReactApplicationContex uiManagerModule.addUIBlock { nativeViewHierarchyManager: NativeViewHierarchyManager -> val view: View = nativeViewHierarchyManager.resolveView(refID) - AlfredManager.setBottomSheetView(view) + AlfredFacade.setBottomSheetView(view) } } catch (error: Exception) { Timber.d("Alfred", "setBottomSheetView error:$error") @@ -42,11 +41,11 @@ class AlfredModuleConnector internal constructor(context: ReactApplicationContex @ReactMethod fun clearBottomSheet() { - AlfredManager.clearBottomSheetView() + AlfredFacade.clearBottomSheetView() } @ReactMethod fun setCurrentScreenName(screenName: String) { - AlfredManager.setCurrentScreenName(screenName) + AlfredFacade.setCurrentScreenName(screenName) } } diff --git a/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/ui/HomeScreenBottomSheet.kt b/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/ui/HomeScreenBottomSheet.kt index 6d5bf4b551..324cdaad6a 100644 --- a/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/ui/HomeScreenBottomSheet.kt +++ b/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/ui/HomeScreenBottomSheet.kt @@ -26,11 +26,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.platform.LocalView import androidx.compose.ui.unit.dp import androidx.compose.ui.window.SecureFlagPolicy import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.navi.alfred.AlfredManager import com.navi.amc.fundbuy.models.cards.BottomSheetData import com.navi.ap.common.handler.HandlePublishEventAction import com.navi.ap.utils.constants.BOTTOM_SHEET_VISIBILITY @@ -146,7 +144,6 @@ fun HomeScreenBottomSheet(viewModel: SharedVM, handleAction: (UiTronAction?) -> ), contentWindowInsets = { WindowInsets(0, 0, 0, 0) }, ) { - AlfredManager.setBottomSheetView(LocalView.current.rootView) Column(modifier = modifier.navigationBarsPadding()) { BottomSheetContentRenderer(it.config, it.content, viewModel) } diff --git a/android/app/src/main/java/com/naviapp/webredirection/presentation/composables/ChromeRedirectionErrorScreen.kt b/android/app/src/main/java/com/naviapp/webredirection/presentation/composables/ChromeRedirectionErrorScreen.kt index 56f272939b..16c58ab834 100644 --- a/android/app/src/main/java/com/naviapp/webredirection/presentation/composables/ChromeRedirectionErrorScreen.kt +++ b/android/app/src/main/java/com/naviapp/webredirection/presentation/composables/ChromeRedirectionErrorScreen.kt @@ -28,12 +28,10 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.navi.alfred.AlfredManager import com.navi.bbps.common.ui.ThemeRoundedButton import com.navi.design.font.FontWeightEnum import com.navi.design.font.getFontWeight @@ -80,7 +78,6 @@ fun ErrorBottomSheetRenderer( scrimColor = scrimColor, properties = ModalBottomSheetProperties(shouldDismissOnBackPress = false), ) { - AlfredManager.setBottomSheetView(LocalView.current.rootView) Column( modifier = Modifier.navigationBarsPadding() diff --git a/android/app/src/main/java/com/naviapp/webredirection/presentation/composables/ChromeRedirectionLoadingScreen.kt b/android/app/src/main/java/com/naviapp/webredirection/presentation/composables/ChromeRedirectionLoadingScreen.kt index efb2396a12..2f77ae23f0 100644 --- a/android/app/src/main/java/com/naviapp/webredirection/presentation/composables/ChromeRedirectionLoadingScreen.kt +++ b/android/app/src/main/java/com/naviapp/webredirection/presentation/composables/ChromeRedirectionLoadingScreen.kt @@ -29,7 +29,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.platform.LocalView import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @@ -39,7 +38,6 @@ import com.airbnb.lottie.compose.LottieAnimation import com.airbnb.lottie.compose.LottieCompositionSpec import com.airbnb.lottie.compose.LottieConstants import com.airbnb.lottie.compose.rememberLottieComposition -import com.navi.alfred.AlfredManager import com.navi.design.font.FontWeightEnum import com.navi.design.font.getFontWeight import com.navi.design.font.naviFontFamily @@ -86,7 +84,6 @@ fun ChromeTabBottomSheetRenderer( scrimColor = scrimColor, properties = ModalBottomSheetProperties(shouldDismissOnBackPress = false), ) { - AlfredManager.setBottomSheetView(LocalView.current.rootView) Column( modifier = Modifier.navigationBarsPadding() diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/ui/BottomSheetInitializer.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/ui/BottomSheetInitializer.kt index 2bf2300092..bc36a835f1 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/ui/BottomSheetInitializer.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/ui/BottomSheetInitializer.kt @@ -28,11 +28,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.platform.LocalView import androidx.compose.ui.unit.dp import androidx.compose.ui.window.SecureFlagPolicy import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.navi.alfred.AlfredManager import com.navi.ap.common.models.APBottomSheetStateHolder import com.navi.ap.common.models.APBottomSheetStateHolder.ApBottomSheetState import com.navi.ap.common.mvi.actions.ApScreenAction @@ -134,8 +132,6 @@ private fun APModalBottomSheet( securePolicy = SecureFlagPolicy.Inherit, ), ) { - AlfredManager.setBottomSheetView(LocalView.current.rootView) - val bottomSheetContentModifier = bottomSheetStateHolder.bottomSheetUIContent?.screenHeightOffset?.let { Modifier.height(screenHeightInDp - it.dp + statusBarHeight).navigationBarsPadding() diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml index 978d3ecc7a..06bae68aba 100644 --- a/android/gradle/libs.versions.toml +++ b/android/gradle/libs.versions.toml @@ -95,7 +95,7 @@ mlkit-barcodeScanning = "17.3.0" mockk = "1.13.16" mvel2 = "2.4.15.Final" navi-adverse = "1.21.0" -navi-alfred = "2.1.1" +navi-alfred = "3.0.1" navi-customerDocumentCollector = "1.0.2" navi-elex = "1.11.1" navi-guarddog = "3.14.0" diff --git a/android/navi-analytics/src/main/java/com/navi/analytics/model/ErrorLog.kt b/android/navi-analytics/src/main/java/com/navi/analytics/model/ErrorLog.kt new file mode 100644 index 0000000000..c9e0108ba6 --- /dev/null +++ b/android/navi-analytics/src/main/java/com/navi/analytics/model/ErrorLog.kt @@ -0,0 +1,10 @@ +/* + * + * * Copyright © 2025 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.navi.analytics.model + +data class ErrorLog(val statusCode: String? = null, val message: String? = null) diff --git a/android/navi-analytics/src/main/java/com/navi/analytics/utils/AlfredFacade.kt b/android/navi-analytics/src/main/java/com/navi/analytics/utils/AlfredFacade.kt new file mode 100644 index 0000000000..9e0276762e --- /dev/null +++ b/android/navi-analytics/src/main/java/com/navi/analytics/utils/AlfredFacade.kt @@ -0,0 +1,205 @@ +/* + * + * * Copyright © 2024-2025 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.navi.analytics.utils + +import android.app.Dialog +import android.content.Context +import android.view.MotionEvent +import android.view.View +import com.navi.alfred.config.AlfredConfig +import com.navi.alfred.core.AlfredManager +import com.navi.alfred.core.handler.AlfredEventHandlerImpl +import com.navi.alfred.model.EventType +import com.navi.alfred.network.AlfredAnalyticsManager +import com.navi.alfred.network.AlfredAnalyticsProvider +import com.navi.alfred.utils.log +import com.navi.analytics.model.AnalyticsConfiguration +import com.navi.analytics.model.ErrorLog +import com.navi.base.utils.EMPTY +import com.navi.base.utils.NetWatchManger +import com.navi.base.utils.isNotNullAndNotEmpty +import okhttp3.Request +import okhttp3.Response +import org.json.JSONObject + +object AlfredFacade : AlfredAnalyticsProvider { + + private var isAlfredEnabled: Boolean = false + + private inline fun executeIfAlfredEnabled(action: () -> Unit) { + if (!isAlfredEnabled) { + return + } + action() + } + + private inline fun executeIfAlfredAndRepoInitialized(action: () -> Unit) { + if (!isAlfredEnabled || !AlfredManager.isSensitiveComposeRepositoryInitialized()) { + return + } + action() + } + + fun init(analyticsConfiguration: AnalyticsConfiguration, context: Context) { + isAlfredEnabled = true + val alfredConfig = + AlfredConfig( + appName = analyticsConfiguration.appInfo.appName, + appVersionName = analyticsConfiguration.appInfo.appVersionName, + appVersionCode = analyticsConfiguration.appInfo.appVersionCode, + flavor = analyticsConfiguration.flavor, + disableAlfredLogs = analyticsConfiguration.disableAlfredLogs, + apiKey = analyticsConfiguration.alfredKey, + ) + AlfredManager.init( + config = alfredConfig, + context = context, + criticalJourneyResponseCode = CRITICAL_JOURNEY_RESPONSE_CODE, + criticalJourneyResponseMessage = CRITICAL_JOURNEY_RESPONSE_MESSAGE, + ) + AlfredAnalyticsManager.init(alfredAnalyticsProvider = this) + } + + fun handleNegativeExperienceEvent( + eventType: EventType, + eventProperties: MutableMap, + ) { + executeIfAlfredEnabled { + AlfredEventHandlerImpl.handleNegativeExperienceEvent( + eventType = eventType, + eventProperties = eventProperties, + ) + } + } + + fun handleTouchEvent(motionEvent: MotionEvent?, screenName: String, moduleName: String) { + executeIfAlfredEnabled { + AlfredEventHandlerImpl.handleTouchEvent( + currentTouchEvent = motionEvent, + screenName = screenName, + moduleName = moduleName, + ) + } + } + + fun setUserLocation(longitude: Double, latitude: Double) { + executeIfAlfredEnabled { + AlfredManager.setLocation(longitude = longitude, latitude = latitude) + } + } + + fun setAlfredDialog(dialog: Dialog? = null) { + executeIfAlfredEnabled { AlfredManager.setDialog(dialog) } + } + + fun setCurrentScreenName(screenName: String) { + executeIfAlfredEnabled { AlfredManager.setCurrentScreenName(screenName) } + } + + fun setBottomSheetView(bottomSheetView: View) { + executeIfAlfredEnabled { AlfredManager.setBottomSheetView(bottomSheetView) } + } + + fun clearBottomSheetView() { + executeIfAlfredEnabled { AlfredManager.clearBottomSheetView() } + } + + fun getAlfredSessionId(): String { + return AlfredManager.getAlfredSessionId() + } + + fun setUserId(userId: String) { + executeIfAlfredEnabled { AlfredManager.setUserId(userId) } + } + + fun removeSensitiveComposable(id: String) { + executeIfAlfredAndRepoInitialized { + AlfredManager.sensitiveComposeRepository.removeSensitiveComposable(id) + } + } + + fun maskSensitiveUiTronComposable( + id: String, + left: Float?, + top: Float?, + right: Float?, + bottom: Float?, + rootView: View?, + ) { + executeIfAlfredAndRepoInitialized { + AlfredManager.sensitiveComposeRepository.maskSensitiveUiTronComposable( + id, + left, + top, + right, + bottom, + rootView, + ) + } + } + + fun blurSensitiveScreen(blur: Boolean) { + executeIfAlfredAndRepoInitialized { + AlfredManager.sensitiveComposeRepository.blurSensitiveScreen(blur) + } + } + + fun updateCriticalUserJourneyStatus(status: Boolean) { + executeIfAlfredEnabled { AlfredManager.updateCriticalUserJourneyStatus(status) } + } + + override fun sendApiLog(request: Request, response: Response, exception: Exception?) { + executeIfAlfredEnabled { + if (NetWatchManger.isQaRelease()) { + try { + val responseString = response.peekBody(Long.MAX_VALUE).string() + val responseData = + if (responseString.isNotNullAndNotEmpty()) { + JSONObject(responseString) + } else { + null + } + NetWatchManger.buildLogMessage( + responseData = responseData, + request = response.request, + response = response, + logType = NetWatchManger.ReleaseLogType.NETWORK_LOG.name, + errorMessage = + ErrorLog( + statusCode = response.code.toString(), + message = response.message, + ), + moduleName = ALFRED_MODULE, + ) + } catch (e: Exception) { + e.log() + } + } + + if (exception != null) { + NaviAnalyticsHelper.recordException(exception) + NaviTrackEvent.trackEventOnClickStream( + NETWORK_CRASH, + mapOf( + Pair(MESSAGE_TEXT, exception.message.orEmpty()), + Pair(CODE_TEXT, response.code.toString()), + Pair(API_URL, request.url.toString()), + Pair(VERTICAL, request.headers[X_TARGET] ?: EMPTY), + Pair(APP_REQUEST_ID, request.headers[APP_REQUEST_ID] ?: EMPTY), + ), + ) + } + } + } + + override fun sendEvent(eventName: String, eventAttributes: MutableMap?) { + executeIfAlfredEnabled { + NaviTrackEvent.trackEvent(eventName = eventName, eventValues = eventAttributes) + } + } +} diff --git a/android/navi-analytics/src/main/java/com/navi/analytics/utils/NaviAnalyticsConstants.kt b/android/navi-analytics/src/main/java/com/navi/analytics/utils/NaviAnalyticsConstants.kt index 72b56c1cd1..18a145419b 100644 --- a/android/navi-analytics/src/main/java/com/navi/analytics/utils/NaviAnalyticsConstants.kt +++ b/android/navi-analytics/src/main/java/com/navi/analytics/utils/NaviAnalyticsConstants.kt @@ -32,3 +32,12 @@ const val CONTEXT = "context" const val OPTION_SELECTED = "option_selected" const val CRITICAL_JOURNEY_RESPONSE_CODE = 27 const val CRITICAL_JOURNEY_RESPONSE_MESSAGE = "Critical journey is active" +const val APP_VERSION_CODE = "appVersionCode" +const val X_TARGET = "X-Target" +const val APP_REQUEST_ID = "appRequestId" +const val NETWORK_CRASH = "network_crash" +const val MESSAGE_TEXT = "message" +const val CODE_TEXT = "code" +const val API_URL = "apiUrl" +const val VERTICAL = "vertical" +const val ALFRED_MODULE = "Alfred" diff --git a/android/navi-analytics/src/main/java/com/navi/analytics/utils/NaviTrackEvent.kt b/android/navi-analytics/src/main/java/com/navi/analytics/utils/NaviTrackEvent.kt index 1a8e690eb6..50338971d2 100644 --- a/android/navi-analytics/src/main/java/com/navi/analytics/utils/NaviTrackEvent.kt +++ b/android/navi-analytics/src/main/java/com/navi/analytics/utils/NaviTrackEvent.kt @@ -11,8 +11,6 @@ import android.app.Application import android.content.Context import com.google.firebase.auth.FirebaseAuth import com.google.firebase.crashlytics.FirebaseCrashlytics -import com.navi.alfred.AlfredConfig -import com.navi.alfred.AlfredManager import com.navi.analytics.BuildConfig import com.navi.analytics.appsflyer.AppsFlyerUtil import com.navi.analytics.firebase.FcmAnalyticsUtil @@ -52,21 +50,7 @@ object NaviTrackEvent { .setEventInterval(analyticsConfiguration.pulseConfig.eventInterval) .build() if (analyticsConfiguration.disableAlfred.not()) { - val alfredConfig = - AlfredConfig( - appName = analyticsConfiguration.appInfo.appName, - appVersionName = analyticsConfiguration.appInfo.appVersionName, - appVersionCode = analyticsConfiguration.appInfo.appVersionCode, - flavor = analyticsConfiguration.flavor, - disableAlfredLogs = analyticsConfiguration.disableAlfredLogs, - apiKey = analyticsConfiguration.alfredKey, - ) - AlfredManager.init( - alfredConfig, - appContext, - criticalJourneyResponseCode = CRITICAL_JOURNEY_RESPONSE_CODE, - criticalJourneyResponseMessage = CRITICAL_JOURNEY_RESPONSE_MESSAGE, - ) + AlfredFacade.init(analyticsConfiguration, appContext) } PulseManager.init( sdkConfig = pulseConfig, @@ -161,7 +145,7 @@ object NaviTrackEvent { FcmAnalyticsUtil.analytics.setUserId(id) AppsFlyerUtil.instance.setCustomerId(id) PulseManager.setUserId(id) - AlfredManager.setUserId(id) + AlfredFacade.setUserId(id) } fun setSessionId(sessionId: String) { @@ -186,7 +170,7 @@ object NaviTrackEvent { fun trackLocation(latitude: Double, longitude: Double) { PulseSDKConfig.setLocation(latitude, longitude) - AlfredManager.setUserLocation(latitude, longitude) + AlfredFacade.setUserLocation(latitude, longitude) } fun setAdvertisingId(googleAdvertisingId: String) { diff --git a/android/navi-bbps/src/main/kotlin/com/navi/bbps/entry/NaviBbpsMainScreen.kt b/android/navi-bbps/src/main/kotlin/com/navi/bbps/entry/NaviBbpsMainScreen.kt index fa51ea67e7..14c1c2d3a8 100644 --- a/android/navi-bbps/src/main/kotlin/com/navi/bbps/entry/NaviBbpsMainScreen.kt +++ b/android/navi-bbps/src/main/kotlin/com/navi/bbps/entry/NaviBbpsMainScreen.kt @@ -26,13 +26,11 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalView import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.NavBackStackEntry import androidx.navigation.compose.rememberNavController import androidx.navigation.plusAssign -import com.navi.alfred.AlfredManager import com.navi.base.utils.orFalse import com.navi.bbps.common.NaviBbpsAnalytics import com.navi.bbps.common.START_SCREEN_NAME @@ -168,7 +166,6 @@ private fun ErrorModalBottomSheet( dragHandle = null, ) { errorEvent?.let { - AlfredManager.setBottomSheetView(LocalView.current.rootView) BbpsGenericErrorBottomSheetContent( errorEvent = it, onErrorCtaClick = { errorConfig, buttonErrorConfig -> diff --git a/android/navi-bbps/src/main/kotlin/com/navi/bbps/feature/category/ui/BillCategoryScreenV2.kt b/android/navi-bbps/src/main/kotlin/com/navi/bbps/feature/category/ui/BillCategoryScreenV2.kt index aee8375769..5e8d532241 100644 --- a/android/navi-bbps/src/main/kotlin/com/navi/bbps/feature/category/ui/BillCategoryScreenV2.kt +++ b/android/navi-bbps/src/main/kotlin/com/navi/bbps/feature/category/ui/BillCategoryScreenV2.kt @@ -88,7 +88,6 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.systemuicontroller.SystemUiController import com.google.accompanist.systemuicontroller.rememberSystemUiController -import com.navi.alfred.AlfredManager import com.navi.base.utils.isNotNull import com.navi.base.utils.orElse import com.navi.base.utils.orFalse @@ -1257,7 +1256,6 @@ private fun BbpsUiTronBottomSheet( shape = RoundedCornerShape(topStart = 8.dp, topEnd = 8.dp), containerColor = Color.White, ) { - AlfredManager.setBottomSheetView(LocalView.current.rootView) Column( modifier = modifier.fillMaxWidth(), verticalArrangement = Arrangement.Top, diff --git a/android/navi-chat/src/main/java/com/navi/chat/base/ChatBaseActivity.kt b/android/navi-chat/src/main/java/com/navi/chat/base/ChatBaseActivity.kt index 8a05368070..9951f5f3a9 100644 --- a/android/navi-chat/src/main/java/com/navi/chat/base/ChatBaseActivity.kt +++ b/android/navi-chat/src/main/java/com/navi/chat/base/ChatBaseActivity.kt @@ -7,11 +7,8 @@ package com.navi.chat.base -import android.view.MotionEvent import android.view.View import androidx.navigation.NavHostController -import com.navi.alfred.AlfredManager -import com.navi.alfred.utils.AlfredConstants import com.navi.base.deeplink.DeepLinkManager import com.navi.base.deeplink.util.DeeplinkConstants.HOME import com.navi.base.model.CtaData @@ -32,11 +29,6 @@ abstract class ChatBaseActivity : NaviCoreActivity(), LoaderState, ErrorState { private var loader: NaviChatLoader? = null - override fun onResume() { - super.onResume() - AlfredManager.handleScreenTransitionEvent(screenName) - } - private fun isDead(): Boolean { return isFinishing || isDestroyed } @@ -70,15 +62,6 @@ abstract class ChatBaseActivity : NaviCoreActivity(), LoaderState, ErrorState { } } - override fun dispatchTouchEvent(ev: MotionEvent?): Boolean { - AlfredManager.handleTouchEvent( - ev, - screenName = this.screenName, - moduleName = AlfredConstants.CHAT_MODULE, - ) - return super.dispatchTouchEvent(ev) - } - private fun hideLoaderDialog() { if (!isDead() && loader?.isAdded.orFalse()) { if (!supportFragmentManager.isStateSaved && !supportFragmentManager.isDestroyed) { diff --git a/android/navi-chat/src/main/java/com/navi/chat/common/fragment/BaseBottomSheet.kt b/android/navi-chat/src/main/java/com/navi/chat/common/fragment/BaseBottomSheet.kt index 6cefb98c8c..0a689503bf 100644 --- a/android/navi-chat/src/main/java/com/navi/chat/common/fragment/BaseBottomSheet.kt +++ b/android/navi-chat/src/main/java/com/navi/chat/common/fragment/BaseBottomSheet.kt @@ -7,19 +7,14 @@ package com.navi.chat.common.fragment -import android.app.Dialog import android.content.Context import android.content.DialogInterface import android.os.Bundle import android.view.LayoutInflater -import android.view.MotionEvent import android.view.View import android.view.ViewGroup import android.view.ViewStub import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.google.android.material.bottomsheet.BottomSheetDialog -import com.navi.alfred.AlfredManager -import com.navi.alfred.utils.log import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.utils.orTrue import com.navi.chat.common.interfaces.ApiCallListener @@ -28,7 +23,6 @@ import com.navi.chat.databinding.BaseBottomSheetBinding import com.navi.common.R as CommonR import com.navi.common.ui.fragment.NaviAnalyticsBaseBottomSheet import com.navi.common.viewmodel.BaseVM -import com.navi.naviwidgets.utils.BOTTOM_SHEET abstract class BaseBottomSheet : NaviAnalyticsBaseBottomSheet() { private lateinit var binding: BaseBottomSheetBinding @@ -76,19 +70,6 @@ abstract class BaseBottomSheet : NaviAnalyticsBaseBottomSheet() { return binding.root } - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - return object : BottomSheetDialog(requireContext(), theme) { - override fun dispatchTouchEvent(ev: MotionEvent): Boolean { - try { - AlfredManager.handleTouchEvent(ev, screenName, BOTTOM_SHEET) - } catch (e: Exception) { - e.log() - } - return super.dispatchTouchEvent(ev) - } - } - } - fun safelyDismissDialog() { if (isAdded && !activity?.isFinishing.orTrue() && isResumed) dismiss() } diff --git a/android/navi-chat/src/main/java/com/navi/chat/ui/activities/NaviChatActivity.kt b/android/navi-chat/src/main/java/com/navi/chat/ui/activities/NaviChatActivity.kt index e14b402007..6598b86fe0 100644 --- a/android/navi-chat/src/main/java/com/navi/chat/ui/activities/NaviChatActivity.kt +++ b/android/navi-chat/src/main/java/com/navi/chat/ui/activities/NaviChatActivity.kt @@ -194,7 +194,7 @@ class NaviChatActivity : } } } - return super.customDispatchTouchEvent(event) + return super.dispatchTouchEvent(event) } ?: kotlin.run { return false diff --git a/android/navi-common/src/main/java/com/navi/common/checkmate/core/CheckMateManager.kt b/android/navi-common/src/main/java/com/navi/common/checkmate/core/CheckMateManager.kt index a3d2611196..9b33b8f478 100644 --- a/android/navi-common/src/main/java/com/navi/common/checkmate/core/CheckMateManager.kt +++ b/android/navi-common/src/main/java/com/navi/common/checkmate/core/CheckMateManager.kt @@ -7,7 +7,7 @@ package com.navi.common.checkmate.core -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.AppServiceManager import com.navi.base.bandwidthbuddy.BandwidthAccessor @@ -87,7 +87,7 @@ object CheckMateManager { "errorDes" to errorDes, "errorCode" to errorCode, "exception" to exception, - "alfredSessionId" to AlfredManager.getAlfredSessionId(), + "alfredSessionId" to AlfredFacade.getAlfredSessionId(), "signalLevel" to NaviTrackEvent.signalInfo.level.toString(), "signalType" to NaviTrackEvent.signalInfo.type.name, "maxBandwidth" to @@ -140,7 +140,7 @@ object CheckMateManager { "errorCode" to errorCode, "vendor" to vendor.orEmpty(), "exception" to exception.toString(), - "alfredSessionId" to AlfredManager.getAlfredSessionId(), + "alfredSessionId" to AlfredFacade.getAlfredSessionId(), "bandwidthBuddySpeed" to BandwidthAccessor.networkSpeed.toString(), "bandwidthBuddyQuality" to BandwidthAccessor.networkQuality?.name.toString(), ), @@ -167,7 +167,7 @@ object CheckMateManager { "apiE2ELatency" to apiE2ELatency.toString(), "uIRenderLatency" to uIRenderLatency.toString(), "screenE2ELatency" to screenE2ELatency.toString(), - "alfredSessionId" to AlfredManager.getAlfredSessionId(), + "alfredSessionId" to AlfredFacade.getAlfredSessionId(), "bandwidthBuddySpeed" to BandwidthAccessor.networkSpeed.toString(), "bandwidthBuddyQuality" to BandwidthAccessor.networkQuality?.name.toString(), ), 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 3a9d310165..b6f2ecf258 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 @@ -61,6 +61,7 @@ object FirebaseRemoteConfigHelper { const val AMC_CART_SERVICE_TTL_IN_MILLIS = "AMC_CART_SERVICE_TTL_IN_MILLIS" const val GOLD_DISABLE_UPI_COLLECT_FLOW = "GOLD_DISABLE_UPI_COLLECT_FLOW" const val DISABLE_ALFRED = "DISABLE_ALFRED" + const val DISABLE_ALFRED_LOGS = "DISABLE_ALFRED_LOGS" const val INTENT_DATA_INSERT_DISABLED = "INTENT_DATA_INSERT_DISABLED" const val UW_INGESTION_POLLING = "UW_INGESTION_POLLING" const val USER_DATA_UPLOAD_CONFIG = "USER_DATA_UPLOAD_CONFIG" diff --git a/android/navi-common/src/main/java/com/navi/common/network/interceptor/MetricInterceptor.kt b/android/navi-common/src/main/java/com/navi/common/network/interceptor/MetricInterceptor.kt index 19e32a9685..c327174296 100644 --- a/android/navi-common/src/main/java/com/navi/common/network/interceptor/MetricInterceptor.kt +++ b/android/navi-common/src/main/java/com/navi/common/network/interceptor/MetricInterceptor.kt @@ -8,7 +8,6 @@ package com.navi.common.network.interceptor import com.google.gson.Gson -import com.navi.alfred.utils.AlfredConstants import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.network.util.ApiConstants import com.navi.common.extensions.safeSubstring @@ -78,7 +77,7 @@ class MetricInterceptor : Interceptor { mutableMapOf( Pair(Constants.API_ENDPOINT, endPoint.toString()), Pair(Constants.API_LATENCY, apiLatency.toString()), - Pair(AlfredConstants.STATUS_CODE, statusCode.toString()), + Pair("statusCode", statusCode.toString()), Pair(Constants.CONTENT_SIZE_IN_KB, byteReceivedInKB.toString()), Pair(VERTICAL, response.request.headers[BaseHttpClient.X_TARGET].orEmpty()), Pair( diff --git a/android/navi-common/src/main/java/com/navi/common/ui/activity/BaseActivity.kt b/android/navi-common/src/main/java/com/navi/common/ui/activity/BaseActivity.kt index d3a4a093e9..b2d1692d98 100644 --- a/android/navi-common/src/main/java/com/navi/common/ui/activity/BaseActivity.kt +++ b/android/navi-common/src/main/java/com/navi/common/ui/activity/BaseActivity.kt @@ -15,7 +15,6 @@ import android.os.Build import android.os.Bundle import android.os.PersistableBundle import android.view.MenuItem -import android.view.MotionEvent import android.view.View import android.view.Window import android.view.WindowManager @@ -34,7 +33,6 @@ import com.google.android.play.core.appupdate.AppUpdateInfo import com.google.android.play.core.appupdate.AppUpdateManager import com.google.android.play.core.appupdate.AppUpdateOptions import com.google.firebase.auth.FirebaseAuth -import com.navi.alfred.AlfredManager import com.navi.analytics.firebase.FcmAnalyticsUtil import com.navi.analytics.utils.NaviAnalyticsHelper import com.navi.analytics.utils.NaviTrackEvent @@ -270,7 +268,6 @@ abstract class BaseActivity : showLockScreenDialog = { showLockScreenDialog() }, hideLockScreenDialog = { hideLockScreenDialog() }, ) - AlfredManager.handleScreenTransitionEvent(screenName) if (isSessionExpired(timeStamp)) { updateSessionId(applicationContext) NaviTrackEvent.setSessionId(getSessionId().orEmpty()) @@ -841,15 +838,6 @@ abstract class BaseActivity : override fun onFinishActivity(screenName: String?, bundle: Bundle?) {} - fun customDispatchTouchEvent(event: MotionEvent?): Boolean { - AlfredManager.handleTouchEvent( - event, - screenName = this.screenName, - moduleName = this.moduleName.name, - ) - return super.dispatchTouchEvent(event) - } - private fun showErrorScreen( errorData: GenericErrorResponse, actions: List>? = null, diff --git a/android/navi-common/src/main/java/com/navi/common/ui/activity/NaviCoreActivity.kt b/android/navi-common/src/main/java/com/navi/common/ui/activity/NaviCoreActivity.kt index fce231f5b7..e2d96298fd 100644 --- a/android/navi-common/src/main/java/com/navi/common/ui/activity/NaviCoreActivity.kt +++ b/android/navi-common/src/main/java/com/navi/common/ui/activity/NaviCoreActivity.kt @@ -8,9 +8,11 @@ package com.navi.common.ui.activity import android.os.Bundle +import android.view.MotionEvent import androidx.appcompat.app.AppCompatActivity import androidx.navigation.NavHostController import com.navi.adverse.sdk.utils.AdverseTrackEvent +import com.navi.analytics.utils.AlfredFacade import com.navi.analytics.utils.NaviTrackEvent import com.navi.analytics.utils.SCREEN_NAME_CAMEL_CASE import com.navi.common.checkmate.core.CheckMateLatencyMapper @@ -54,6 +56,15 @@ abstract class NaviCoreActivity : AppCompatActivity(), CheckMateMapper by CheckM ) } + override fun dispatchTouchEvent(ev: MotionEvent?): Boolean { + AlfredFacade.handleTouchEvent( + motionEvent = ev, + screenName = screenName, + moduleName = moduleName.name, + ) + return super.dispatchTouchEvent(ev) + } + protected open fun onNavControllerSet(baseNavController: NavHostController) { baseNavController.addOnDestinationChangedListener { _, destination, _ -> destination.route?.let { originalRoute -> diff --git a/android/navi-common/src/main/java/com/navi/common/ui/dialog/BaseDialogFragment.kt b/android/navi-common/src/main/java/com/navi/common/ui/dialog/BaseDialogFragment.kt index bc3b9ab205..48e242a524 100644 --- a/android/navi-common/src/main/java/com/navi/common/ui/dialog/BaseDialogFragment.kt +++ b/android/navi-common/src/main/java/com/navi/common/ui/dialog/BaseDialogFragment.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2022-2023 by Navi Technologies Limited + * * Copyright © 2022-2025 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -17,7 +17,7 @@ import androidx.annotation.StyleRes import androidx.databinding.DataBindingUtil import androidx.databinding.ViewDataBinding import androidx.fragment.app.DialogFragment -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.common.R abstract class BaseDialogFragment( @@ -58,7 +58,7 @@ abstract class BaseDialogFragment( override fun onResume() { super.onResume() if (isBindingInitialized()) { - AlfredManager.dialog = this.dialog + AlfredFacade.setAlfredDialog(this.dialog) } } @@ -77,7 +77,7 @@ abstract class BaseDialogFragment( override fun onStop() { super.onStop() - AlfredManager.dialog = null + AlfredFacade.setAlfredDialog(null) } override fun onDestroyView() { diff --git a/android/navi-common/src/main/java/com/navi/common/ui/fragment/BaseBottomSheet.kt b/android/navi-common/src/main/java/com/navi/common/ui/fragment/BaseBottomSheet.kt index 690aba5515..1a3715c2c8 100644 --- a/android/navi-common/src/main/java/com/navi/common/ui/fragment/BaseBottomSheet.kt +++ b/android/navi-common/src/main/java/com/navi/common/ui/fragment/BaseBottomSheet.kt @@ -7,20 +7,15 @@ package com.navi.common.ui.fragment -import android.app.Dialog import android.content.Context import android.content.DialogInterface import android.content.res.ColorStateList import android.os.Bundle import android.view.LayoutInflater -import android.view.MotionEvent import android.view.View import android.view.ViewGroup import android.view.ViewStub import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.google.android.material.bottomsheet.BottomSheetDialog -import com.navi.alfred.AlfredManager -import com.navi.alfred.utils.log import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.utils.orTrue import com.navi.common.R @@ -30,7 +25,6 @@ import com.navi.common.listeners.DialogCancelListener import com.navi.common.monitor.LatencyMapper import com.navi.common.viewmodel.BaseVM import com.navi.design.utils.parseColorSafe -import com.navi.naviwidgets.utils.BOTTOM_SHEET abstract class BaseBottomSheet : NaviAnalyticsBaseBottomSheet() { private lateinit var binding: BaseBottomSheetFragmentBinding @@ -113,19 +107,6 @@ abstract class BaseBottomSheet : NaviAnalyticsBaseBottomSheet() { return binding.root } - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - return object : BottomSheetDialog(requireContext(), theme) { - override fun dispatchTouchEvent(ev: MotionEvent): Boolean { - try { - AlfredManager.handleTouchEvent(ev, screenName, BOTTOM_SHEET) - } catch (e: Exception) { - e.log() - } - return super.dispatchTouchEvent(ev) - } - } - } - fun setBackgroundTint(color: Int) { binding.containerFl.backgroundTintList = ColorStateList.valueOf(color) } diff --git a/android/navi-common/src/main/java/com/navi/common/ui/fragment/NaviAnalyticsBaseBottomSheet.kt b/android/navi-common/src/main/java/com/navi/common/ui/fragment/NaviAnalyticsBaseBottomSheet.kt index 5a296dc2da..9373e8a86d 100644 --- a/android/navi-common/src/main/java/com/navi/common/ui/fragment/NaviAnalyticsBaseBottomSheet.kt +++ b/android/navi-common/src/main/java/com/navi/common/ui/fragment/NaviAnalyticsBaseBottomSheet.kt @@ -1,24 +1,43 @@ /* * - * * Copyright © 2024 by Navi Technologies Limited + * * Copyright © 2024-2025 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ package com.navi.common.ui.fragment +import android.app.Dialog +import android.os.Bundle +import android.view.MotionEvent +import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialogFragment -import com.navi.alfred.AlfredManager +import com.navi.alfred.utils.log +import com.navi.analytics.utils.AlfredFacade +import com.navi.naviwidgets.utils.BOTTOM_SHEET abstract class NaviAnalyticsBaseBottomSheet : BottomSheetDialogFragment() { override fun onResume() { super.onResume() - AlfredManager.dialog = this.dialog + AlfredFacade.setAlfredDialog(this.dialog) } override fun onStop() { super.onStop() - AlfredManager.dialog = null + AlfredFacade.setAlfredDialog(null) + } + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + return object : BottomSheetDialog(requireContext(), theme) { + override fun dispatchTouchEvent(ev: MotionEvent): Boolean { + try { + AlfredFacade.handleTouchEvent(ev, BOTTOM_SHEET, BOTTOM_SHEET) + } catch (e: Exception) { + e.log() + } + return super.dispatchTouchEvent(ev) + } + } } } diff --git a/android/navi-common/src/main/java/com/navi/common/uitron/util/UiTronDependencyProvider.kt b/android/navi-common/src/main/java/com/navi/common/uitron/util/UiTronDependencyProvider.kt index b414552b4c..dbd6b5f5e1 100644 --- a/android/navi-common/src/main/java/com/navi/common/uitron/util/UiTronDependencyProvider.kt +++ b/android/navi-common/src/main/java/com/navi/common/uitron/util/UiTronDependencyProvider.kt @@ -13,7 +13,7 @@ import androidx.compose.ui.graphics.Shape import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.media3.datasource.cache.SimpleCache -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.base.AppServiceManager import com.navi.base.utils.BaseUtils import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper @@ -119,28 +119,22 @@ class UiTronDependencyProvider(private val context: Context) : IUiTronDependency bottom: Float?, rootView: View?, ) { - if (AlfredManager.isSensitiveComposeRepositoryInitialized()) { - AlfredManager.sensitiveComposeRepository.maskSensitiveUiTronComposable( - id, - left, - top, - right, - bottom, - rootView, - ) - } + AlfredFacade.maskSensitiveUiTronComposable( + id = id, + left = left, + top = top, + right = right, + bottom = bottom, + rootView = rootView, + ) } override fun removeSensitiveComposable(id: String) { - if (AlfredManager.isSensitiveComposeRepositoryInitialized()) { - AlfredManager.sensitiveComposeRepository.removeSensitiveComposable(id) - } + AlfredFacade.removeSensitiveComposable(id) } override fun blurSensitiveScreen(blur: Boolean) { - if (AlfredManager.isSensitiveComposeRepositoryInitialized()) { - AlfredManager.sensitiveComposeRepository.blurSensitiveScreen(blur) - } + AlfredFacade.blurSensitiveScreen(blur) } override fun getMedia3SimpleCache(): SimpleCache { diff --git a/android/navi-common/src/main/java/com/navi/common/utils/CommonNaviAnalytics.kt b/android/navi-common/src/main/java/com/navi/common/utils/CommonNaviAnalytics.kt index 9c2d1fc64e..046d4d558b 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/CommonNaviAnalytics.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/CommonNaviAnalytics.kt @@ -8,7 +8,7 @@ package com.navi.common.utils import androidx.annotation.Keep -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.model.ActionData import com.navi.base.model.GenericAnalyticsData @@ -51,7 +51,7 @@ class CommonNaviAnalytics private constructor() { Pair("message", errorMessage.toString()), Pair("apiUrl", apiUrl.toString()), Pair("logMessage", error?.logMessage.toString()), - Pair("alfredSessionId", AlfredManager.getAlfredSessionId()), + Pair("alfredSessionId", AlfredFacade.getAlfredSessionId()), Pair( "customDnsV2Enabled", TemporaryStorageHelper.isOkHttpCustomDnsV2Enabled.toString(), @@ -196,7 +196,6 @@ class CommonNaviAnalytics private constructor() { Pair("network_type", networkType.orEmpty()), ) NaviTrackEvent.trackEventOnClickStream("something_went_wrong_error", swwEventProperties) - AlfredManager.handleSWWEvent(swwEventProperties) } fun onGlobalError( @@ -509,7 +508,7 @@ class CommonNaviAnalytics private constructor() { screenName + "_appeared", mapOf( Pair("atTimeStamp", time), - Pair("alfredSessionId", AlfredManager.getAlfredSessionId()), + Pair("alfredSessionId", AlfredFacade.getAlfredSessionId()), ), ) } @@ -520,7 +519,7 @@ class CommonNaviAnalytics private constructor() { mapOf( Pair("atTimeStamp", time), Pair("latency_ms", latency), - Pair("alfredSessionId", AlfredManager.getAlfredSessionId()), + Pair("alfredSessionId", AlfredFacade.getAlfredSessionId()), ), ) } diff --git a/android/navi-common/src/main/java/com/navi/common/utils/CriticalJourneyUtil.kt b/android/navi-common/src/main/java/com/navi/common/utils/CriticalJourneyUtil.kt index 57102e8599..dfb0f7da6b 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/CriticalJourneyUtil.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/CriticalJourneyUtil.kt @@ -1,13 +1,13 @@ /* * - * * Copyright © 2024 by Navi Technologies Limited + * * Copyright © 2024-2025 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ package com.navi.common.utils -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.USER_CRITICAL_JOURNEY_DELAY_IN_SECS import com.navi.common.resourcemanager.manager.ResourceManager @@ -42,7 +42,7 @@ object CriticalJourneyUtil { } private fun updateCriticalJourneyForSDK(flag: AtomicBoolean) { - AlfredManager.updateCriticalUserJourneyStatus(flag.get()) + AlfredFacade.updateCriticalUserJourneyStatus(flag.get()) ResourceManager.updateCriticalFlowStatus(flag.get()) } } diff --git a/android/navi-cycs/src/main/kotlin/com/navi/cycs/common/ui/CycsBottomsheet.kt b/android/navi-cycs/src/main/kotlin/com/navi/cycs/common/ui/CycsBottomsheet.kt index 6184fdcbc1..ec03422d54 100644 --- a/android/navi-cycs/src/main/kotlin/com/navi/cycs/common/ui/CycsBottomsheet.kt +++ b/android/navi-cycs/src/main/kotlin/com/navi/cycs/common/ui/CycsBottomsheet.kt @@ -20,10 +20,8 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalView import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.navi.alfred.AlfredManager import com.navi.base.utils.orFalse import com.navi.common.utils.Constants.HIDE import com.navi.cycs.CycsAnalytics @@ -84,7 +82,6 @@ fun CycsBottomSheet( containerColor = Color.White, shape = RoundedCornerShape(topStart = 8.dp, topEnd = 8.dp), ) { - AlfredManager.setBottomSheetView(LocalView.current.rootView) Column(modifier = Modifier.navigationBarsPadding()) { bottomSheetStateHolder.bottomSheetData?.let { BottomSheetContentWithIconHeaderPrimarySecondaryButton( diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/BaseBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/BaseBottomSheet.kt index 9b070cccfa..97ef3a584d 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/BaseBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/BaseBottomSheet.kt @@ -8,7 +8,6 @@ package com.navi.insurance.common.fragment import android.app.Activity -import android.app.Dialog import android.content.DialogInterface import android.content.res.ColorStateList import android.graphics.drawable.GradientDrawable @@ -16,7 +15,6 @@ import android.os.Bundle import android.os.Handler import android.os.Looper import android.view.LayoutInflater -import android.view.MotionEvent import android.view.View import android.view.ViewGroup import android.view.ViewStub @@ -25,10 +23,7 @@ import androidx.core.content.ContextCompat import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.gson.Gson -import com.navi.alfred.AlfredManager -import com.navi.alfred.utils.log import com.navi.base.model.CtaData import com.navi.base.model.LineItem import com.navi.base.utils.orTrue @@ -52,7 +47,6 @@ import com.navi.naviwidgets.composewidget.reusable.colorTextTertiaryHex import com.navi.naviwidgets.composewidget.reusable.colorWhiteHex import com.navi.naviwidgets.models.response.ImageFieldData import com.navi.naviwidgets.models.response.TextFieldData -import com.navi.naviwidgets.utils.BOTTOM_SHEET import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -132,19 +126,6 @@ abstract class BaseBottomSheet : NaviAnalyticsBaseBottomSheet() { return binding.root } - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - return object : BottomSheetDialog(requireContext(), theme) { - override fun dispatchTouchEvent(ev: MotionEvent): Boolean { - try { - AlfredManager.handleTouchEvent(ev, screenName, BOTTOM_SHEET) - } catch (e: Exception) { - e.log() - } - return super.dispatchTouchEvent(ev) - } - } - } - fun setPadding(left: Int, top: Int, right: Int, bottom: Int) { binding.containerFl.setPadding(left, top, right, bottom) } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/activity/BaseActivity.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/activity/BaseActivity.kt index f394e99320..2fefbd28a9 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/activity/BaseActivity.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/activity/BaseActivity.kt @@ -10,7 +10,6 @@ package com.navi.insurance.health.activity import android.app.AlertDialog import android.content.Context import android.os.Bundle -import android.view.MotionEvent import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.lifecycle.lifecycleScope @@ -22,8 +21,6 @@ import com.google.android.play.core.appupdate.AppUpdateManagerFactory import com.google.android.play.core.install.InstallStateUpdatedListener import com.google.android.play.core.install.model.InstallStatus import com.google.firebase.crashlytics.FirebaseCrashlytics -import com.navi.alfred.AlfredManager -import com.navi.alfred.utils.AlfredConstants import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.deeplink.DeepLinkManager import com.navi.base.deeplink.util.DeeplinkConstants @@ -124,15 +121,6 @@ abstract class BaseActivity : NaviCoreActivity() { } } - override fun dispatchTouchEvent(ev: MotionEvent?): Boolean { - AlfredManager.handleTouchEvent( - ev, - screenName = this.screenName, - moduleName = AlfredConstants.INSURANCE_MODULE, - ) - return super.dispatchTouchEvent(ev) - } - private fun initUiTronSdkManager() { if (!UiTronSdkManager.isInitialized()) { UiTronSdkManager.init(UiTronDependencyProvider(applicationContext)) @@ -214,7 +202,6 @@ abstract class BaseActivity : NaviCoreActivity() { showLockScreenDialog = { showLockScreenDialog() }, hideLockScreenDialog = { hideLockScreenDialog() }, ) - AlfredManager.handleScreenTransitionEvent(screenName) if (isSessionExpired(timeStamp)) { updateSessionId(applicationContext) NaviTrackEvent.setSessionId(getSessionId().orEmpty()) diff --git a/android/navi-money-manager/src/main/kotlin/com/navi/moneymanager/postonboard/dashboard/ui/DashboardRecentTransactionsSection.kt b/android/navi-money-manager/src/main/kotlin/com/navi/moneymanager/postonboard/dashboard/ui/DashboardRecentTransactionsSection.kt index 5c4a0142a5..cc031de507 100644 --- a/android/navi-money-manager/src/main/kotlin/com/navi/moneymanager/postonboard/dashboard/ui/DashboardRecentTransactionsSection.kt +++ b/android/navi-money-manager/src/main/kotlin/com/navi/moneymanager/postonboard/dashboard/ui/DashboardRecentTransactionsSection.kt @@ -23,7 +23,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.navi.alfred.utils.orFalse +import com.navi.base.utils.orFalse import com.navi.design.font.FontWeightEnum import com.navi.elex.theme.elexColors import com.navi.moneymanager.common.analytics.TransactionHistoryEventTrackerImpl diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/management/common/emisummary/ui/EmiListScreen.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/management/common/emisummary/ui/EmiListScreen.kt index d29b7e847c..a0e879878d 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/management/common/emisummary/ui/EmiListScreen.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/management/common/emisummary/ui/EmiListScreen.kt @@ -56,7 +56,7 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.base.utils.isNotNullAndNotEmpty import com.navi.common.constants.HELP_CTA_TEXT import com.navi.common.utils.CommonUtils.getDisplayableAmount @@ -158,7 +158,7 @@ fun EmiListScreen( onDispose { window?.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) lifecycleOwner.lifecycle.removeObserver(observer) - AlfredManager.setCurrentScreenName(naviPayActivity.screenName) + AlfredFacade.setCurrentScreenName(naviPayActivity.screenName) } } @@ -326,7 +326,7 @@ fun EmiListUIContent( } } is EmiListScreenState.PaymentSuccess -> { - AlfredManager.setCurrentScreenName( + AlfredFacade.setCurrentScreenName( NaviPayAnalytics.NAVI_PAY_PAYMENT_SUCCESS_SCREEN_ALFRED_MASK ) diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/management/common/sendmoney/ui/SendMoneyScreen.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/management/common/sendmoney/ui/SendMoneyScreen.kt index 74027a2c79..6c83c50228 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/management/common/sendmoney/ui/SendMoneyScreen.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/management/common/sendmoney/ui/SendMoneyScreen.kt @@ -49,7 +49,7 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.common.lottie.LottieRepository import com.navi.common.model.NaviLottieCompositionSpecType import com.navi.common.utils.CommonUtils.getDisplayableAmount @@ -163,7 +163,7 @@ fun SendMoneyScreen( } DisposableEffect(Unit) { - onDispose { AlfredManager.setCurrentScreenName(naviPayActivity.screenName) } + onDispose { AlfredFacade.setCurrentScreenName(naviPayActivity.screenName) } } DisposableEffect(key1 = lifecycleOwner, key2 = setDefaultStatusBarColor) { @@ -901,7 +901,7 @@ fun RenderPaymentInProgressAndPendingAndPaymentSuccessCombinedState( } is SendMoneyScreenState.PaymentSuccess -> { isArcProtectedBottomLottieVisible.value = false - AlfredManager.setCurrentScreenName( + AlfredFacade.setCurrentScreenName( NaviPayAnalytics.NAVI_PAY_PAYMENT_SUCCESS_SCREEN_ALFRED_MASK ) naviPayAnalytics.onPaymentSuccess( diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/management/globalsendmoney/ui/UpiGlobalSendMoneyScreen.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/management/globalsendmoney/ui/UpiGlobalSendMoneyScreen.kt index 55a52ca457..182de0a807 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/management/globalsendmoney/ui/UpiGlobalSendMoneyScreen.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/management/globalsendmoney/ui/UpiGlobalSendMoneyScreen.kt @@ -36,7 +36,7 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.common.utils.navigateUp import com.navi.pay.R import com.navi.pay.common.model.view.ShakeConfig @@ -110,7 +110,7 @@ fun UPIGlobalSendMoneyScreen( } DisposableEffect(Unit) { - onDispose { AlfredManager.setCurrentScreenName(naviPayActivity.screenName) } + onDispose { AlfredFacade.setCurrentScreenName(naviPayActivity.screenName) } } val onDismissBottomSheet: () -> Unit = { diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/bank/ui/BankDetailInputScreen.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/bank/ui/BankDetailInputScreen.kt index 62fbe49f9a..09da49b5e9 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/bank/ui/BankDetailInputScreen.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/bank/ui/BankDetailInputScreen.kt @@ -36,7 +36,7 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.common.R as CommonR import com.navi.design.font.FontWeightEnum import com.navi.design.font.getFontWeight @@ -75,7 +75,7 @@ fun BankDetailInputScreen( when (event) { Lifecycle.Event.ON_CREATE, Lifecycle.Event.ON_RESUME -> { - AlfredManager.setCurrentScreenName(NaviPayAnalytics.NAVI_PAY_BANK_DETAIL_INPUT) + AlfredFacade.setCurrentScreenName(NaviPayAnalytics.NAVI_PAY_BANK_DETAIL_INPUT) } else -> {} } @@ -83,7 +83,7 @@ fun BankDetailInputScreen( lifecycleOwner.lifecycle.addObserver(observer) onDispose { lifecycleOwner.lifecycle.removeObserver(observer) - AlfredManager.setCurrentScreenName(naviPayActivity.screenName) + AlfredFacade.setCurrentScreenName(naviPayActivity.screenName) } } diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/ui/QrScannerScreen.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/ui/QrScannerScreen.kt index 363d2e3b75..e4be9bca96 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/ui/QrScannerScreen.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/ui/QrScannerScreen.kt @@ -91,7 +91,7 @@ import com.google.mlkit.vision.barcode.BarcodeScannerOptions import com.google.mlkit.vision.barcode.BarcodeScanning import com.google.mlkit.vision.barcode.common.Barcode import com.google.mlkit.vision.common.InputImage -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.common.R as CommonR import com.navi.common.ui.activity.NaviCoreActivity import com.navi.common.utils.TemporaryStorageHelper @@ -320,7 +320,7 @@ fun QrScannerScreenContent( DisposableEffect(key1 = lifecycleOwner) { val observer = LifecycleEventObserver { _, event -> if (event == Lifecycle.Event.ON_CREATE || event == Lifecycle.Event.ON_RESUME) { - AlfredManager.setCurrentScreenName(NaviPayAnalytics.NAVI_PAY_QR_SCREEN_ALFRED_MASK) + AlfredFacade.setCurrentScreenName(NaviPayAnalytics.NAVI_PAY_QR_SCREEN_ALFRED_MASK) if (!bottomSheetStateHolder.showBottomSheet) { qrScannerViewModel.isQrCodeProcessing.set(false) } @@ -345,7 +345,7 @@ fun QrScannerScreenContent( qrScannerViewModel.unregisterLightSensorListener() qrScannerViewModel.toggleTorchStatus(isTorchButtonClicked = false) lifecycleOwner.lifecycle.removeObserver(observer) - AlfredManager.setCurrentScreenName(activity.screenName) + AlfredFacade.setCurrentScreenName(activity.screenName) } } diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/common/ui/LinkedAccountBalanceScreen.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/common/ui/LinkedAccountBalanceScreen.kt index 11a1156eda..7e700c1a37 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/common/ui/LinkedAccountBalanceScreen.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/common/ui/LinkedAccountBalanceScreen.kt @@ -59,7 +59,7 @@ import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.navi.adverse.sdk.ui.AdverseViewRoot -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.base.model.CtaData import com.navi.base.utils.orFalse import com.navi.common.R as CommonR @@ -136,7 +136,7 @@ fun LinkedAccountBalanceScreen( } else if (event == Lifecycle.Event.ON_STOP) { window?.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) } else if (event == Lifecycle.Event.ON_CREATE || event == Lifecycle.Event.ON_RESUME) { - AlfredManager.setCurrentScreenName( + AlfredFacade.setCurrentScreenName( NaviPayAnalytics.NAVI_PAY_CHECK_BALANCE_ALFRED_MASK ) naviPayActivity.window.statusBarColor = @@ -153,7 +153,7 @@ fun LinkedAccountBalanceScreen( onDispose { window?.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) lifecycleOwner.lifecycle.removeObserver(observer) - AlfredManager.setCurrentScreenName(naviPayActivity.screenName) + AlfredFacade.setCurrentScreenName(naviPayActivity.screenName) } } diff --git a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/NaviPaymentAnalytics.kt b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/NaviPaymentAnalytics.kt index a50b3a5910..692d577c7f 100644 --- a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/NaviPaymentAnalytics.kt +++ b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/NaviPaymentAnalytics.kt @@ -8,7 +8,7 @@ package com.navi.payment.nativepayment import android.net.Uri -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.utils.isNotNull import com.navi.common.constants.EMPTY @@ -1017,7 +1017,7 @@ class NaviPaymentAnalytics private constructor() { Pair("localErrorData", localError.toString()), Pair("module_name", moduleName.orEmpty()), Pair("description", description), - Pair("alfredSessionId", AlfredManager.getAlfredSessionId()), + Pair("alfredSessionId", AlfredFacade.getAlfredSessionId()), ) NaviTrackEvent.trackEvent(eventName, map) } diff --git a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/CardDetailsScreen.kt b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/CardDetailsScreen.kt index fe704270af..64cd9f05ed 100644 --- a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/CardDetailsScreen.kt +++ b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/CardDetailsScreen.kt @@ -77,7 +77,7 @@ import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil.compose.AsyncImage -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.base.utils.EMPTY import com.navi.common.utils.ClickDebounce import com.navi.common.utils.CommonUtils.getDisplayableAmount @@ -155,7 +155,7 @@ fun CardDetailScreenRoot( when (event) { Lifecycle.Event.ON_CREATE, Lifecycle.Event.ON_RESUME -> { - AlfredManager.setCurrentScreenName( + AlfredFacade.setCurrentScreenName( NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName ) } @@ -165,7 +165,7 @@ fun CardDetailScreenRoot( lifecycleOwner.lifecycle.addObserver(observer) onDispose { lifecycleOwner.lifecycle.removeObserver(observer) - AlfredManager.setCurrentScreenName(paymentActivity.screenName) + AlfredFacade.setCurrentScreenName(paymentActivity.screenName) } } HandleScanCardResult(resultRecipientScanCardScreen, cardDetailScreenVM::onEvent) diff --git a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/MPSScreen.kt b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/MPSScreen.kt index c3ec007442..52159ccf8a 100644 --- a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/MPSScreen.kt +++ b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/MPSScreen.kt @@ -35,7 +35,7 @@ import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.google.accompanist.systemuicontroller.rememberSystemUiController import com.google.gson.Gson -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.base.utils.isNotNull import com.navi.base.utils.isNotNullAndNotEmpty import com.navi.base.utils.isNull @@ -482,7 +482,7 @@ fun MPSScreen( .toString(), "genericErrorData" to errorData?.error.toString(), "description" to errorData?.error?.message.orEmpty(), - "alfredSessionId" to AlfredManager.getAlfredSessionId(), + "alfredSessionId" to AlfredFacade.getAlfredSessionId(), ), ) BottomSheetContentWithVerticalPrimarySecondaryButton( @@ -606,7 +606,7 @@ private fun HandleLifecycleEventsForAlfred(naviPaymentActivity: NaviPaymentActiv when (event) { Lifecycle.Event.ON_CREATE, Lifecycle.Event.ON_RESUME -> { - AlfredManager.setCurrentScreenName( + AlfredFacade.setCurrentScreenName( NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName ) } @@ -617,7 +617,7 @@ private fun HandleLifecycleEventsForAlfred(naviPaymentActivity: NaviPaymentActiv lifecycleOwner.lifecycle.addObserver(observer) onDispose { lifecycleOwner.lifecycle.removeObserver(observer) - AlfredManager.setCurrentScreenName(naviPaymentActivity.screenName) + AlfredFacade.setCurrentScreenName(naviPaymentActivity.screenName) } } } diff --git a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/NPSScreen.kt b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/NPSScreen.kt index ff412cbe4d..fadce6c1d6 100644 --- a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/NPSScreen.kt +++ b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/NPSScreen.kt @@ -63,7 +63,7 @@ import com.airbnb.lottie.compose.LottieAnimation import com.airbnb.lottie.compose.LottieCompositionSpec import com.airbnb.lottie.compose.rememberLottieComposition import com.google.accompanist.systemuicontroller.rememberSystemUiController -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.base.utils.isNotNull import com.navi.base.utils.isNotNullAndNotEmpty import com.navi.base.utils.isNull @@ -168,7 +168,7 @@ fun NPSScreenRoot( when (event) { Lifecycle.Event.ON_CREATE, Lifecycle.Event.ON_RESUME -> { - AlfredManager.setCurrentScreenName( + AlfredFacade.setCurrentScreenName( NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName ) } @@ -178,7 +178,7 @@ fun NPSScreenRoot( lifecycleOwner.lifecycle.addObserver(observer) onDispose { lifecycleOwner.lifecycle.removeObserver(observer) - AlfredManager.setCurrentScreenName(activity.screenName) + AlfredFacade.setCurrentScreenName(activity.screenName) } } diff --git a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/ScanCardScreen.kt b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/ScanCardScreen.kt index 7dae50db5f..7e780b091e 100644 --- a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/ScanCardScreen.kt +++ b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/ScanCardScreen.kt @@ -92,7 +92,7 @@ import com.google.mlkit.vision.common.InputImage import com.google.mlkit.vision.text.TextRecognition import com.google.mlkit.vision.text.TextRecognizer import com.google.mlkit.vision.text.latin.TextRecognizerOptions -import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.AlfredFacade import com.navi.base.utils.EMPTY import com.navi.common.utils.log import com.navi.design.font.FontWeightEnum @@ -181,7 +181,7 @@ fun ScanCardScreenRoot( when (event) { Lifecycle.Event.ON_CREATE, Lifecycle.Event.ON_RESUME -> { - AlfredManager.setCurrentScreenName( + AlfredFacade.setCurrentScreenName( NaviPaymentAnalyticScreenName.SCAN_CARD_SCREEN.screenName ) } @@ -191,7 +191,7 @@ fun ScanCardScreenRoot( lifecycleOwner.lifecycle.addObserver(observer) onDispose { lifecycleOwner.lifecycle.removeObserver(observer) - AlfredManager.setCurrentScreenName(activity.screenName) + AlfredFacade.setCurrentScreenName(activity.screenName) } } diff --git a/android/navi-rr/src/main/java/com/navi/rr/common/bottomsheet/BottomSheetRenderer.kt b/android/navi-rr/src/main/java/com/navi/rr/common/bottomsheet/BottomSheetRenderer.kt index e433c40f4f..6f0c7f1c22 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/common/bottomsheet/BottomSheetRenderer.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/common/bottomsheet/BottomSheetRenderer.kt @@ -19,9 +19,7 @@ import androidx.compose.material3.SheetState import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalView import androidx.compose.ui.unit.dp -import com.navi.alfred.AlfredManager import com.navi.common.forge.model.WidgetModelDefinition import com.navi.rr.common.vm.RRBaseVM import com.navi.rr.common.widgetFactory.WidgetRenderer @@ -45,7 +43,6 @@ fun BottomSheetRenderer( containerColor = Color.White, scrimColor = scrimColor, ) { - AlfredManager.setBottomSheetView(LocalView.current.rootView) Column(modifier = Modifier.navigationBarsPadding().imePadding()) { WidgetRenderer(widget = bottomSheetData, viewModel = viewModel) } @@ -72,7 +69,6 @@ fun BottomSheetRenderer( containerColor = containerColor, scrimColor = scrimColor, ) { - AlfredManager.setBottomSheetView(LocalView.current.rootView) Column( modifier = modifier.navigationBarsPadding().imePadding(), verticalArrangement = verticalArrangement, diff --git a/android/navi-rr/src/main/java/com/navi/rr/milestones/ui/compose/MilestoneViews.kt b/android/navi-rr/src/main/java/com/navi/rr/milestones/ui/compose/MilestoneViews.kt index 3cd37f0686..c81045eef4 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/milestones/ui/compose/MilestoneViews.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/milestones/ui/compose/MilestoneViews.kt @@ -73,7 +73,6 @@ import androidx.compose.ui.layout.positionInParent import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.IntSize @@ -90,7 +89,6 @@ import com.airbnb.lottie.compose.LottieCompositionSpec import com.airbnb.lottie.compose.rememberLottieComposition import com.google.accompanist.systemuicontroller.SystemUiController import com.google.accompanist.systemuicontroller.rememberSystemUiController -import com.navi.alfred.AlfredManager import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.EMPTY import com.navi.base.utils.isNull @@ -494,7 +492,6 @@ fun MileStoneCompletedAnimation( hurrayLottieVisible = false } Popup { - AlfredManager.setBottomSheetView(LocalView.current.rootView) Column( modifier = Modifier.background( diff --git a/android/navi-rr/src/main/java/com/navi/rr/referral/ui/compose/RefereeHomePage.kt b/android/navi-rr/src/main/java/com/navi/rr/referral/ui/compose/RefereeHomePage.kt index 7c6c8c8d43..730cbc20fa 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/referral/ui/compose/RefereeHomePage.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/referral/ui/compose/RefereeHomePage.kt @@ -56,7 +56,6 @@ import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -74,7 +73,6 @@ import com.google.accompanist.permissions.isGranted import com.google.accompanist.permissions.rememberPermissionState import com.google.accompanist.systemuicontroller.rememberSystemUiController import com.google.gson.reflect.TypeToken -import com.navi.alfred.AlfredManager import com.navi.base.model.CtaData import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.EMPTY @@ -891,7 +889,6 @@ fun BottomSheet( containerColor = Color.White, scrimColor = Color.Black.copy(alpha = 0.9f), ) { - AlfredManager.setBottomSheetView(LocalView.current.rootView) Column(modifier = Modifier.navigationBarsPadding().imePadding()) { RenderBottomSheet(bottomSheetData, referralHomeVM) } @@ -910,7 +907,6 @@ fun BottomSheet(shareData: ShareData?, modalBottomSheetState: SheetState, onDism contentWindowInsets = { WindowInsets(0, 0, 0, 0) }, containerColor = Color.White, ) { - AlfredManager.setBottomSheetView(LocalView.current.rootView) Column(modifier = Modifier.navigationBarsPadding().imePadding()) { ReferralContactBottomSheetRenderer( message = shareData.message, @@ -952,7 +948,6 @@ fun MilestoneBottomSheet( containerColor = Color.Transparent, scrimColor = Color.Black.copy(alpha = 0.9f), ) { - AlfredManager.setBottomSheetView(LocalView.current.rootView) Box( modifier = Modifier.navigationBarsPadding().imePadding().fillMaxWidth(), contentAlignment = Alignment.TopCenter, diff --git a/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardComposable.kt b/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardComposable.kt index 86fb63373f..32609b5344 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardComposable.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardComposable.kt @@ -39,12 +39,10 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalView import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewModelScope -import com.navi.alfred.AlfredManager import com.navi.base.deeplink.DeepLinkManager import com.navi.base.model.CtaData import com.navi.base.utils.isNotNullAndNotEmpty @@ -82,7 +80,6 @@ fun ScratchCardComposable( context: Context = LocalContext.current, backHandling: ((data: ScratchCardBackResponse?) -> Unit)? = null, ) { - AlfredManager.setBottomSheetView(LocalView.current.rootView) val uiState by scratchCardVM.scratchCardScreenData.collectAsStateWithLifecycle() val scratchCardScratched by scratchCardVM.scratchCardBackResponse.collectAsStateWithLifecycle() diff --git a/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardPagerComposable.kt b/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardPagerComposable.kt index 70986af66c..a114782206 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardPagerComposable.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardPagerComposable.kt @@ -41,12 +41,10 @@ import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.platform.LocalView import androidx.compose.ui.unit.Density import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewModelScope -import com.navi.alfred.AlfredManager import com.navi.common.forge.model.ScreenDefinition import com.navi.rr.common.constants.SCRATCH_CARD_GRATIFICATION_SCREEN import com.navi.rr.common.widgetFactory.WidgetRenderer @@ -71,7 +69,6 @@ fun ScratchCardPagerComposable( context: Context = LocalContext.current, backHandling: ((data: ScratchCardBackResponse?) -> Unit)? = null, ) { - AlfredManager.setBottomSheetView(LocalView.current.rootView) val isAssuredReward = screenContent ?.screenDefinition diff --git a/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardRenderer.kt b/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardRenderer.kt index 9c850f7991..c5dd17461a 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardRenderer.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardRenderer.kt @@ -32,7 +32,6 @@ import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.viewModelScope -import com.navi.alfred.AlfredManager import com.navi.base.deeplink.DeepLinkManager import com.navi.base.model.CtaData import com.navi.base.utils.isNotNull @@ -77,8 +76,6 @@ fun ScratchCardRenderer( onCoinLottieEnd: (() -> Unit)? = null, onScratch: ((data: ScratchCardBackResponse?) -> Unit)? = null, ) { - AlfredManager.setBottomSheetView(LocalView.current.rootView) - val context = LocalView.current.context val coroutineScope = rememberCoroutineScope(key = SCRATCH_CARD_GRATIFICATION_SCREEN) val screenSize by remember { mutableStateOf(null) } diff --git a/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardRendererV2.kt b/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardRendererV2.kt index 246f868390..20b4a80ce5 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardRendererV2.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardRendererV2.kt @@ -28,12 +28,10 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.platform.LocalView import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.viewModelScope -import com.navi.alfred.AlfredManager import com.navi.base.deeplink.DeepLinkManager import com.navi.base.model.CtaData import com.navi.base.utils.isNotNull @@ -79,8 +77,6 @@ fun ScratchCardRendererV2( onBallTransferEnd: (() -> Unit)? = null, onScratch: ((data: ScratchCardBackResponse?) -> Unit)? = null, ) { - AlfredManager.setBottomSheetView(LocalView.current.rootView) - val context = LocalActivity.current val coroutineScope = rememberCoroutineScope(key = SCRATCH_CARD_GRATIFICATION_SCREEN) val screenSize by remember { mutableStateOf(null) } diff --git a/android/navi-rr/src/main/java/com/navi/rr/utils/composeutils/ComposableUtils.kt b/android/navi-rr/src/main/java/com/navi/rr/utils/composeutils/ComposableUtils.kt index 0f0e03b947..c8f4dbc170 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/utils/composeutils/ComposableUtils.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/utils/composeutils/ComposableUtils.kt @@ -32,14 +32,12 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.core.os.bundleOf import androidx.lifecycle.Lifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.navi.alfred.AlfredManager import com.navi.base.utils.isNotNull import com.navi.common.alchemist.model.AlchemistScreenDefinition import com.navi.common.constants.SCREEN_NAME @@ -152,7 +150,6 @@ fun InitErrorBottomSheet( ), ) } - AlfredManager.setBottomSheetView(LocalView.current.rootView) Column( modifier = Modifier.fillMaxWidth()