diff --git a/android/app/src/main/java/com/naviapp/adverse/AdverseDependencyProvider.kt b/android/app/src/main/java/com/naviapp/adverse/AdverseDependencyProvider.kt index 5ec1e1fc4f..eec537635e 100644 --- a/android/app/src/main/java/com/naviapp/adverse/AdverseDependencyProvider.kt +++ b/android/app/src/main/java/com/naviapp/adverse/AdverseDependencyProvider.kt @@ -17,13 +17,13 @@ import com.navi.analytics.utils.CUSTOMER_ID import com.navi.analytics.utils.DEVICE_ID import com.navi.analytics.utils.NaviTrackEvent import com.navi.analytics.utils.SESSION_ID +import com.navi.base.AppServiceManager import com.navi.base.deeplink.DeepLinkManager import com.navi.base.model.CtaData import com.navi.base.sharedpref.CommonPrefConstants.USER_EXTERNAL_ID import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.BaseUtils import com.navi.base.utils.orFalse -import com.navi.common.CommonLibManager import com.navi.common.uitron.model.action.CtaAction import com.navi.common.utils.getSessionId import com.navi.common.utils.registerUiTronDeSerializers @@ -38,7 +38,7 @@ class AdverseDependencyProvider : IAdverseDependencyProvider { updatedEventProperties[CUSTOMER_ID] = PreferenceManager.getStringPreference(USER_EXTERNAL_ID).toString() updatedEventProperties[DEVICE_ID] = - BaseUtils.getDeviceId(applicationContext = CommonLibManager.application) + BaseUtils.getDeviceId(applicationContext = AppServiceManager.application) updatedEventProperties[SESSION_ID] = getSessionId().toString() NaviTrackEvent.trackEventOnClickStream(event.eventName.orEmpty(), updatedEventProperties) } 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 cf15b6c03d..65f78d319b 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 @@ -64,7 +64,6 @@ object NaviSDKHelper { WebView.setDataDirectorySuffix(Application.getProcessName()) } } else { - FirebaseRemoteConfigHelper.init() val inAppOptOutScreens = mutableSetOf>() inAppOptOutScreens.add(HomePageActivity::class.java) NaviTrackEvent.appInit( diff --git a/android/app/src/main/java/com/naviapp/app/BaseApplication.kt b/android/app/src/main/java/com/naviapp/app/BaseApplication.kt new file mode 100644 index 0000000000..6fa8bc82fc --- /dev/null +++ b/android/app/src/main/java/com/naviapp/app/BaseApplication.kt @@ -0,0 +1,55 @@ +/* + * + * * Copyright © 2024 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.naviapp.app + +import android.content.Context +import androidx.multidex.MultiDexApplication +import com.BV.LinearGradient.LinearGradientPackage +import com.facebook.react.PackageList +import com.facebook.react.ReactApplication +import com.facebook.react.ReactPackage +import com.facebook.react.defaults.DefaultReactNativeHost +import com.google.android.play.core.splitcompat.SplitCompat +import com.microsoft.codepush.react.CodePush +import com.naviapp.BuildConfig +import com.naviapp.react_native.native_bridge.NativePackage +import timber.log.Timber + +abstract class BaseApplication : MultiDexApplication(), ReactApplication { + + override fun attachBaseContext(base: Context?) { + super.attachBaseContext(base) + if (base != null) { + SplitCompat.install(base) + } + } + + override fun onCreate() { + super.onCreate() + if (BuildConfig.DEBUG) { + Timber.plant(Timber.DebugTree()) + } + } + + override val reactNativeHost by lazy { + object : DefaultReactNativeHost(this) { + override fun getUseDeveloperSupport() = BuildConfig.DEBUG + + override fun getPackages(): List { + val packages = PackageList(this).packages.toMutableList() + packages.add(NativePackage()) + packages.add(LinearGradientPackage()) + return packages + } + + override fun getJSBundleFile(): String? { + return CodePush.getJSBundleFile() + } + } + } +} diff --git a/android/app/src/main/java/com/naviapp/app/NaviApplication.kt b/android/app/src/main/java/com/naviapp/app/NaviApplication.kt index e500f71422..abaa834c2e 100644 --- a/android/app/src/main/java/com/naviapp/app/NaviApplication.kt +++ b/android/app/src/main/java/com/naviapp/app/NaviApplication.kt @@ -1,109 +1,37 @@ /* * - * * Copyright © 2019-2024 by Navi Technologies Limited + * * Copyright © 2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ package com.naviapp.app -import android.app.Activity -import android.app.Application -import android.content.Context -import android.os.Build -import android.os.Bundle -import android.view.WindowManager import androidx.annotation.OptIn import androidx.media3.common.util.UnstableApi import androidx.media3.database.StandaloneDatabaseProvider import androidx.media3.datasource.cache.LeastRecentlyUsedCacheEvictor import androidx.media3.datasource.cache.SimpleCache -import androidx.multidex.MultiDexApplication import coil.ImageLoader import coil.ImageLoaderFactory -import coil.decode.SvgDecoder -import coil.request.CachePolicy -import com.BV.LinearGradient.LinearGradientPackage -import com.chuckerteam.chucker.api.ChuckerCollector -import com.chuckerteam.chucker.api.ChuckerInterceptor -import com.facebook.react.PackageList -import com.facebook.react.ReactApplication -import com.facebook.react.ReactPackage -import com.facebook.react.defaults.DefaultReactNativeHost -import com.facebook.react.modules.network.NetworkingModule -import com.facebook.soloader.SoLoader -import com.github.anrwatchdog.ANRWatchDog -import com.google.android.play.core.splitcompat.SplitCompat -import com.microsoft.codepush.react.CodePush -import com.navi.alfred.AlfredManager -import com.navi.alfred.network.AlfredApiLogsManager -import com.navi.alfred.utils.AlfredConstants -import com.navi.alfred.utils.log -import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.cache.repository.NaviCacheRepository -import com.navi.base.security.interceptor.EncryptionHashInterceptor -import com.navi.base.sharedpref.PreferenceManager -import com.navi.base.utils.AppLaunchUtils -import com.navi.base.utils.NetWatchManger -import com.navi.base.utils.isNull -import com.navi.chat.base.ChatBaseActivity -import com.navi.common.CommonLibManager import com.navi.common.media3simplecache.Media3SimpleCache -import com.navi.common.resourcemanager.manager.ResourceManager -import com.navi.common.ui.activity.BaseActivity -import com.navi.common.utils.BiometricPromptUtils -import com.navi.common.utils.CommonUtils.isQaRelease -import com.navi.common.utils.Constants.ScreenLockConstants.ENABLED -import com.navi.common.utils.Constants.ScreenLockConstants.IS_SCREEN_LOCK_ENABLED -import com.navi.insurance.health.activity.BaseActivity as InsuranceBaseActivity import com.navi.pay.common.setup.NaviPayManager -import com.naviapp.BuildConfig -import com.naviapp.analytics.deeplink.DeeplinkManager -import com.naviapp.analytics.utils.AlfredApiLogsProviderImpl -import com.naviapp.analytics.utils.NaviAnalytics.Companion.ANR_MESSAGE -import com.naviapp.analytics.utils.NaviAnalytics.Companion.ANR_STACK_TRACE -import com.naviapp.analytics.utils.NaviAnalytics.Companion.APP_IN_FOREGROUND -import com.naviapp.analytics.utils.NaviAnalytics.Companion.GLOBAL_ANR -import com.naviapp.analytics.utils.NaviAnalytics.Companion.GLOBAL_ANR_THIRD_PARTY -import com.naviapp.analytics.utils.NaviAnalytics.Companion.GLOBAL_APP_CRASH -import com.naviapp.analytics.utils.NaviAnalytics.Companion.LINE_NUMBER -import com.naviapp.analytics.utils.NaviAnalytics.Companion.METHOD_NAME -import com.naviapp.analytics.utils.NaviAnalytics.Companion.NAVIAPP_BACKGROUND_PUSH -import com.naviapp.analytics.utils.NaviAnalytics.Companion.SCREEN_NAME -import com.naviapp.analytics.utils.NaviAnalytics.Companion.STACK_TRACE -import com.naviapp.analytics.utils.NaviSDKHelper +import com.naviapp.app.facades.ThirdPartyObjectProvider +import com.naviapp.app.initializers.ComponentInitializer import com.naviapp.common.transformer.AppLoadTimerMapper import com.naviapp.home.common.setup.NotificationManager -import com.naviapp.home.compose.activity.HomePageActivity -import com.naviapp.react_native.native_bridge.NativePackage -import com.naviapp.releaselog.utils.NetWatchUtil -import com.naviapp.utils.Constants -import com.naviapp.utils.QA import com.naviapp.utils.isDifferentPackage import dagger.Lazy import dagger.hilt.android.HiltAndroidApp import java.io.File import javax.inject.Inject -import kotlinx.coroutines.CancellationException -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.Job -import kotlinx.coroutines.launch -import timber.log.Timber @HiltAndroidApp -open class NaviApplication : - MultiDexApplication(), - Application.ActivityLifecycleCallbacks, - ImageLoaderFactory, - ReactApplication, - Media3SimpleCache { - - private var appForegroundCounter: Int = 0 - private var enableAppUpdate = true - private var isDifferentPackage: Boolean = false - - @OptIn(UnstableApi::class) private lateinit var media3SimpleCache: SimpleCache +open class NaviApplication : BaseApplication(), ImageLoaderFactory, Media3SimpleCache { + companion object { + lateinit var instance: NaviApplication + } // This will initialize NaviPayManager lazily i.e. when NaviPayManager::init() will be called @Inject lateinit var naviPayManager: Lazy @@ -112,250 +40,33 @@ open class NaviApplication : @Inject lateinit var notificationManager: Lazy - private var rnJob = Job() - private val applicationScope = CoroutineScope(Dispatchers.IO + rnJob) + @Inject + lateinit var componentInitializers: Lazy> - override val reactNativeHost = - object : DefaultReactNativeHost(this) { - override fun getUseDeveloperSupport() = BuildConfig.DEBUG + @Inject lateinit var thirdPartyObjectProvider: ThirdPartyObjectProvider - override fun getPackages(): List { - val packages = PackageList(this).packages.toMutableList() - packages.add(NativePackage()) - packages.add(LinearGradientPackage()) - return packages - } + @OptIn(UnstableApi::class) private lateinit var media3SimpleCache: SimpleCache - override fun getJSBundleFile(): String? { - return CodePush.getJSBundleFile() - } - } + private val isDifferentPackageValue: Boolean by lazy { + isDifferentPackage(this@NaviApplication) + } + private var enableAppUpdate = true + private var appForegroundCounter: Int = 0 override fun onCreate() { System.setProperty("gson.allowCapturingTypeVariables", "true") AppLoadTimerMapper.onAppLoadingStart() super.onCreate() instance = this - isDifferentPackage = isDifferentPackage(this) - if (BuildConfig.DEBUG) { - Timber.plant(Timber.DebugTree()) - } - if (BuildConfig.FLAVOR == QA && !BuildConfig.DEBUG) { - NetWatchManger.init(context = applicationContext, flavour = BuildConfig.FLAVOR) - AlfredApiLogsManager.init(AlfredApiLogsProviderImpl()) - } - // Initialize SDKs - PreferenceManager.init(this) - NaviSDKHelper.init(naviApplication = this) - registerActivityLifecycleCallbacks(this) - // Dumping anr data to click stream - ANRWatchDog(WATCHDOG_ANR_TIMEOUT) - .setIgnoreDebugger(true) - .setReportMainThreadOnly() - .setANRListener { - if (it.cause?.stackTrace.isNullOrEmpty()) { - return@setANRListener - } - val className = it.cause?.stackTrace?.get(0)?.className.orEmpty() - val anrEventProperties = - mutableMapOf( - SCREEN_NAME to (NaviTrackEvent.currentScreenName ?: className), - METHOD_NAME to it.cause?.stackTrace?.get(0)?.methodName.orEmpty(), - LINE_NUMBER to it.cause?.stackTrace?.get(0)?.lineNumber.toString(), - APP_IN_FOREGROUND to isAppInForeground().toString(), - ANR_MESSAGE to it.message.toString(), - ANR_STACK_TRACE to it.stackTraceToString() - ) - NaviTrackEvent.trackEventOnClickStream( - if (className.contains(Constants.ANR_NAVI_REGEX)) GLOBAL_ANR - else GLOBAL_ANR_THIRD_PARTY, - anrEventProperties - ) - if (isDifferentPackage.not()) { - anrEventProperties[STACK_TRACE] = it.cause?.stackTrace?.get(0).toString() - AlfredManager.handleAnrEvent(anrEventProperties) - } - } - .start() - - // Crash Reporting to backend - val defaultHandler = Thread.getDefaultUncaughtExceptionHandler() - Thread.setDefaultUncaughtExceptionHandler { thread, exception -> - if (exception.stackTrace.isNullOrEmpty()) { - defaultHandler?.uncaughtException(thread, exception) - return@setDefaultUncaughtExceptionHandler - } - try { - val crashEventProperties = - mutableMapOf( - SCREEN_NAME to - (NaviTrackEvent.currentScreenName - ?: exception.stackTrace[0]?.className.orEmpty()), - METHOD_NAME to exception.stackTrace[0]?.methodName.orEmpty(), - LINE_NUMBER to exception.stackTrace[0]?.lineNumber.toString(), - APP_IN_FOREGROUND to isAppInForeground().toString() - ) - NaviTrackEvent.trackEventOnClickStream(GLOBAL_APP_CRASH, crashEventProperties) - if (isDifferentPackage.not()) { - exception.stackTrace[0]?.let { stackTraceElement -> - crashEventProperties[STACK_TRACE] = stackTraceElement.toString() - } - AlfredManager.handleCrashEvent(crashEventProperties) - } - } finally { - defaultHandler?.uncaughtException(thread, exception) - } - } - rnJob.invokeOnCompletion { cause -> - if (cause is CancellationException) { - cause.log() - } - } - - applicationScope.launch { - SoLoader.init(this@NaviApplication, false) - NetworkingModule.setCustomClientBuilder { builder -> - builder.addInterceptor(CommonLibManager.getHeaderInterceptorForReact()) - builder.addInterceptor(EncryptionHashInterceptor(applicationContext)) - if (BuildConfig.DEBUG) { - builder.addInterceptor( - ChuckerInterceptor.Builder(applicationContext) - .collector(ChuckerCollector(applicationContext)) - .maxContentLength(250000L) - .redactHeaders(arrayListOf("X-Click-Stream-Data")) - .alwaysReadResponseBody(false) - .build() - ) - } - } - } + initializeComponents() AppLoadTimerMapper.applicationOnCreateTime() } - companion object { - lateinit var instance: NaviApplication - private const val WATCHDOG_ANR_TIMEOUT = 10000 + private fun initializeComponents() { + componentInitializers.get().forEach { it.initialize(this@NaviApplication) } } - override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) { - if (activity is HomePageActivity) { - AppLaunchUtils.resetAppOpenOnLaunch() - } - if ( - Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && - PreferenceManager.getStringPreference(IS_SCREEN_LOCK_ENABLED).isNull() && - BiometricPromptUtils().isDeviceSecure(this) - ) { - PreferenceManager.setStringPreference(IS_SCREEN_LOCK_ENABLED, ENABLED) - } - } - - override fun onActivityStarted(activity: Activity) { - if (appForegroundCounter == 0) { - BiometricPromptUtils.appInForegroundTimeStamp = System.currentTimeMillis() - } - appForegroundCounter++ - if (appForegroundCounter > 0) { - DeeplinkManager.initFirebase(this) - } - } - - override fun onActivityResumed(activity: Activity) { - if (!NaviPayManager.isNpciClActivity(activity)) { - activity.window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) - } - - if (appForegroundCounter > 0) { - startAlfredRecording(activity) - if (isQaRelease()) { - NetWatchUtil.addUniversalButtonToActivity(activity, applicationContext) - } - } - } - - override fun onActivityPaused(activity: Activity) { - if ((activity is HomePageActivity).not()) { - activity.window.setFlags( - WindowManager.LayoutParams.FLAG_SECURE, - WindowManager.LayoutParams.FLAG_SECURE - ) - } - } - - override fun onActivityStopped(activity: Activity) { - appForegroundCounter-- - if (appForegroundCounter == 0) { - BiometricPromptUtils.appInBackgroundTimeStamp = System.currentTimeMillis() - DeeplinkManager.deInitFirebase(this) - if (isDifferentPackage.not()) { - AlfredManager.stopRecording() - ResourceManager.initResourceDownloadWorker(applicationContext) - } - val screenName = - when (activity) { - is BaseActivity -> { - activity.screenName - } - is InsuranceBaseActivity -> { - activity.screenName - } - is ChatBaseActivity -> { - activity.screenName - } - else -> { - activity.javaClass.simpleName - } - } - NaviTrackEvent.trackEventOnClickStream( - eventName = NAVIAPP_BACKGROUND_PUSH, - mapOf("screenName" to screenName) - ) - } - } - - override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {} - - override fun onActivityDestroyed(activity: Activity) {} - - private fun startAlfredRecording(activity: Activity) { - if (isDifferentPackage) { - return - } - 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 = applicationContext, - screenName = screenName, - moduleName = moduleName, - activity = activity - ) - } catch (e: Exception) { - e.log() - } - } - - private fun isAppInForeground(): Boolean { - return appForegroundCounter >= 1 - } + fun isDifferentPackage() = isDifferentPackageValue fun setEnableAppUpdate(isEnable: Boolean) { enableAppUpdate = isEnable @@ -363,28 +74,19 @@ open class NaviApplication : fun getEnableAppUpdate() = enableAppUpdate - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - if (base != null) { - SplitCompat.install(base) - } - } + fun incrementAppInForeground() = appForegroundCounter++ - override fun newImageLoader(): ImageLoader { - return ImageLoader.Builder(this.applicationContext) - .components { add(SvgDecoder.Factory()) } - .respectCacheHeaders(enable = false) - .diskCachePolicy(CachePolicy.ENABLED) - .memoryCachePolicy(CachePolicy.ENABLED) - .allowHardware(false) - .build() - } + fun decrementAppInForeground() = appForegroundCounter-- + + fun getAppInForegroundCounter() = appForegroundCounter + + override fun newImageLoader(): ImageLoader = + thirdPartyObjectProvider.createImageLoader(applicationContext) @OptIn(UnstableApi::class) override fun getMedia3SimpleCache(): SimpleCache { if (::media3SimpleCache.isInitialized.not()) { val downloadContentDirectory = File(this.getExternalFilesDir(null), "downloads") - media3SimpleCache = SimpleCache( downloadContentDirectory, @@ -392,7 +94,6 @@ open class NaviApplication : StandaloneDatabaseProvider(this) ) } - return media3SimpleCache } } 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 new file mode 100644 index 0000000000..e9a9a574f0 --- /dev/null +++ b/android/app/src/main/java/com/naviapp/app/facades/AlfredFacade.kt @@ -0,0 +1,63 @@ +/* + * + * * Copyright © 2024 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/ThirdPartyObjectProvider.kt b/android/app/src/main/java/com/naviapp/app/facades/ThirdPartyObjectProvider.kt new file mode 100644 index 0000000000..e44ada987d --- /dev/null +++ b/android/app/src/main/java/com/naviapp/app/facades/ThirdPartyObjectProvider.kt @@ -0,0 +1,26 @@ +/* + * + * * Copyright © 2024 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.naviapp.app.facades + +import android.content.Context +import coil.ImageLoader +import coil.decode.SvgDecoder +import coil.request.CachePolicy +import javax.inject.Inject + +class ThirdPartyObjectProvider @Inject constructor() { + fun createImageLoader(context: Context): ImageLoader { + return ImageLoader.Builder(context) + .components { add(SvgDecoder.Factory()) } + .respectCacheHeaders(enable = false) + .diskCachePolicy(CachePolicy.ENABLED) + .memoryCachePolicy(CachePolicy.ENABLED) + .allowHardware(false) + .build() + } +} 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 new file mode 100644 index 0000000000..078e99cd02 --- /dev/null +++ b/android/app/src/main/java/com/naviapp/app/initializers/AnrErrorHandlerInitializer.kt @@ -0,0 +1,86 @@ +/* + * + * * Copyright © 2024 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +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.analytics.utils.NaviTrackEvent +import com.naviapp.analytics.utils.NaviAnalytics.Companion.ANR_MESSAGE +import com.naviapp.analytics.utils.NaviAnalytics.Companion.ANR_STACK_TRACE +import com.naviapp.analytics.utils.NaviAnalytics.Companion.APP_IN_FOREGROUND +import com.naviapp.analytics.utils.NaviAnalytics.Companion.GLOBAL_ANR +import com.naviapp.analytics.utils.NaviAnalytics.Companion.GLOBAL_ANR_THIRD_PARTY +import com.naviapp.analytics.utils.NaviAnalytics.Companion.LINE_NUMBER +import com.naviapp.analytics.utils.NaviAnalytics.Companion.METHOD_NAME +import com.naviapp.analytics.utils.NaviAnalytics.Companion.SCREEN_NAME +import com.naviapp.analytics.utils.NaviAnalytics.Companion.STACK_TRACE +import com.naviapp.app.NaviApplication +import com.naviapp.utils.Constants +import javax.inject.Inject + +class AnrErrorHandlerInitializer @Inject constructor() : ComponentInitializer { + + private lateinit var application: NaviApplication + + companion object { + private const val WATCHDOG_ANR_TIMEOUT_MILLIS = 10_000 + } + + override fun initialize(application: NaviApplication) { + this.application = application + ANRWatchDog(WATCHDOG_ANR_TIMEOUT_MILLIS) + .setIgnoreDebugger(true) + .setReportMainThreadOnly() + .setANRListener(getAnrListener()) + .start() + } + + private fun getAnrListener(): ANRListener { + return ANRListener { error: ANRError -> + val stackTraceElement = error.cause?.stackTrace?.firstOrNull() ?: return@ANRListener + val className = stackTraceElement.className + + val anrEventProperties = buildAnrEventProperties(error, stackTraceElement, className) + trackEvent(className, anrEventProperties) + handleAnrEventIfNeeded(anrEventProperties, stackTraceElement) + } + } + + private fun buildAnrEventProperties( + error: ANRError, + stackTraceElement: StackTraceElement, + className: String + ): MutableMap { + return mutableMapOf( + SCREEN_NAME to (NaviTrackEvent.currentScreenName ?: className), + METHOD_NAME to stackTraceElement.methodName, + LINE_NUMBER to stackTraceElement.lineNumber.toString(), + APP_IN_FOREGROUND to application.getAppInForegroundCounter().toString(), + ANR_MESSAGE to error.message.orEmpty(), + ANR_STACK_TRACE to error.stackTraceToString() + ) + } + + private fun trackEvent(className: String, anrEventProperties: MutableMap) { + val eventType = + if (className.contains(Constants.ANR_NAVI_REGEX)) GLOBAL_ANR else GLOBAL_ANR_THIRD_PARTY + NaviTrackEvent.trackEventOnClickStream(eventType, anrEventProperties) + } + + private fun handleAnrEventIfNeeded( + anrEventProperties: MutableMap, + stackTraceElement: StackTraceElement + ) { + if (!application.isDifferentPackage()) { + anrEventProperties[STACK_TRACE] = stackTraceElement.toString() + AlfredManager.handleAnrEvent(anrEventProperties) + } + } +} 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 new file mode 100644 index 0000000000..db818ae478 --- /dev/null +++ b/android/app/src/main/java/com/naviapp/app/initializers/AppLifecycleManagerInitializer.kt @@ -0,0 +1,140 @@ +/* + * + * * Copyright © 2024 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.naviapp.app.initializers + +import android.app.Activity +import android.app.Application +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 +import com.navi.base.utils.isNull +import com.navi.chat.base.ChatBaseActivity +import com.navi.common.resourcemanager.manager.ResourceManager +import com.navi.common.ui.activity.BaseActivity +import com.navi.common.utils.BiometricPromptUtils +import com.navi.common.utils.CommonUtils.isQaRelease +import com.navi.common.utils.Constants.ScreenLockConstants.ENABLED +import com.navi.common.utils.Constants.ScreenLockConstants.IS_SCREEN_LOCK_ENABLED +import com.navi.insurance.health.activity.BaseActivity as InsuranceBaseActivity +import com.navi.pay.common.setup.NaviPayManager +import com.naviapp.analytics.deeplink.DeeplinkManager +import com.naviapp.analytics.utils.NaviAnalytics.Companion.NAVIAPP_BACKGROUND_PUSH +import com.naviapp.app.NaviApplication +import com.naviapp.app.facades.AlfredFacade +import com.naviapp.home.compose.activity.HomePageActivity +import com.naviapp.releaselog.utils.NetWatchUtil +import javax.inject.Inject + +class AppLifecycleManagerInitializer +@Inject +constructor( + private val alfredInitializer: AlfredFacade, +) : ComponentInitializer { + + private lateinit var application: NaviApplication + + override fun initialize(application: NaviApplication) { + this.application = application + application.registerActivityLifecycleCallbacks(activityLifecycleCallback) + } + + private val activityLifecycleCallback = + object : Application.ActivityLifecycleCallbacks { + + override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) { + if (activity is HomePageActivity) { + AppLaunchUtils.resetAppOpenOnLaunch() + } + if ( + Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && + PreferenceManager.getStringPreference(IS_SCREEN_LOCK_ENABLED).isNull() && + BiometricPromptUtils().isDeviceSecure(application) + ) { + PreferenceManager.setStringPreference(IS_SCREEN_LOCK_ENABLED, ENABLED) + } + } + + override fun onActivityStarted(activity: Activity) { + if (application.getAppInForegroundCounter() == 0) { + BiometricPromptUtils.appInForegroundTimeStamp = System.currentTimeMillis() + } + + application.incrementAppInForeground() + if (application.getAppInForegroundCounter() > 0) { + DeeplinkManager.initFirebase(application) + } + } + + override fun onActivityResumed(activity: Activity) { + if (!NaviPayManager.isNpciClActivity(activity)) { + activity.window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) + } + + if (application.getAppInForegroundCounter() > 0) { + alfredInitializer.initAlfredRecording(application, activity) + if (isQaRelease()) { + NetWatchUtil.addUniversalButtonToActivity( + activity, + application.applicationContext + ) + } + } + } + + override fun onActivityPaused(activity: Activity) { + if ((activity is HomePageActivity).not()) { + activity.window.setFlags( + WindowManager.LayoutParams.FLAG_SECURE, + WindowManager.LayoutParams.FLAG_SECURE + ) + } + } + + override fun onActivityStopped(activity: Activity) { + application.decrementAppInForeground() + + if (application.getAppInForegroundCounter() == 0) { + BiometricPromptUtils.appInBackgroundTimeStamp = System.currentTimeMillis() + DeeplinkManager.deInitFirebase(application) + + if (application.isDifferentPackage().not()) { + AlfredManager.stopRecording() + ResourceManager.initResourceDownloadWorker(application.applicationContext) + } + + val screenName = + when (activity) { + is BaseActivity -> { + activity.screenName + } + is InsuranceBaseActivity -> { + activity.screenName + } + is ChatBaseActivity -> { + activity.screenName + } + else -> { + activity.javaClass.simpleName + } + } + NaviTrackEvent.trackEventOnClickStream( + eventName = NAVIAPP_BACKGROUND_PUSH, + mapOf("screenName" to screenName) + ) + } + } + + override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {} + + override fun onActivityDestroyed(activity: Activity) {} + } +} diff --git a/android/app/src/main/java/com/naviapp/app/initializers/ComponentInitializer.kt b/android/app/src/main/java/com/naviapp/app/initializers/ComponentInitializer.kt new file mode 100644 index 0000000000..6afced0256 --- /dev/null +++ b/android/app/src/main/java/com/naviapp/app/initializers/ComponentInitializer.kt @@ -0,0 +1,26 @@ +/* + * + * * Copyright © 2024 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.naviapp.app.initializers + +import com.naviapp.app.NaviApplication +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.SupervisorJob + +object ApplicationComponent { + val applicationJob: Job + get() = SupervisorJob() + + val applicationScope: CoroutineScope = CoroutineScope(Dispatchers.IO + applicationJob) +} + +interface ComponentInitializer { + + fun initialize(application: NaviApplication) +} 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 new file mode 100644 index 0000000000..e210c5a4e9 --- /dev/null +++ b/android/app/src/main/java/com/naviapp/app/initializers/CrashHandlerInitializer.kt @@ -0,0 +1,67 @@ +/* + * + * * Copyright © 2024 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.naviapp.app.initializers + +import com.navi.alfred.AlfredManager +import com.navi.analytics.utils.NaviTrackEvent +import com.naviapp.analytics.utils.NaviAnalytics.Companion.APP_IN_FOREGROUND +import com.naviapp.analytics.utils.NaviAnalytics.Companion.GLOBAL_APP_CRASH +import com.naviapp.analytics.utils.NaviAnalytics.Companion.LINE_NUMBER +import com.naviapp.analytics.utils.NaviAnalytics.Companion.METHOD_NAME +import com.naviapp.analytics.utils.NaviAnalytics.Companion.SCREEN_NAME +import com.naviapp.analytics.utils.NaviAnalytics.Companion.STACK_TRACE +import com.naviapp.app.NaviApplication +import javax.inject.Inject + +class CrashHandlerInitializer @Inject constructor() : ComponentInitializer { + + private lateinit var application: NaviApplication + private val defaultHandler: Thread.UncaughtExceptionHandler? by lazy { + Thread.getDefaultUncaughtExceptionHandler() + } + + private val uncaughtExceptionHandler = + Thread.UncaughtExceptionHandler { thread, exception -> + handleUncaughtException(thread, exception) + } + + override fun initialize(application: NaviApplication) { + this.application = application + Thread.setDefaultUncaughtExceptionHandler(uncaughtExceptionHandler) + } + + private fun handleUncaughtException(thread: Thread, exception: Throwable) { + if (exception.stackTrace.isNullOrEmpty()) { + defaultHandler?.uncaughtException(thread, exception) + return + } + + val crashEventProperties = buildCrashEventProperties(exception) + + try { + NaviTrackEvent.trackEventOnClickStream(GLOBAL_APP_CRASH, crashEventProperties) + + if (!application.isDifferentPackage()) { + crashEventProperties[STACK_TRACE] = exception.stackTrace.firstOrNull().toString() + AlfredManager.handleCrashEvent(crashEventProperties) + } + } finally { + defaultHandler?.uncaughtException(thread, exception) + } + } + + private fun buildCrashEventProperties(exception: Throwable): MutableMap { + return mutableMapOf( + SCREEN_NAME to + (NaviTrackEvent.currentScreenName ?: exception.stackTrace[0].className.orEmpty()), + METHOD_NAME to exception.stackTrace[0].methodName.orEmpty(), + LINE_NUMBER to exception.stackTrace[0].lineNumber.toString(), + APP_IN_FOREGROUND to application.getAppInForegroundCounter().toString() + ) + } +} diff --git a/android/app/src/main/java/com/naviapp/app/initializers/NetworkConfigurationInitializer.kt b/android/app/src/main/java/com/naviapp/app/initializers/NetworkConfigurationInitializer.kt new file mode 100644 index 0000000000..a4e13b627d --- /dev/null +++ b/android/app/src/main/java/com/naviapp/app/initializers/NetworkConfigurationInitializer.kt @@ -0,0 +1,51 @@ +/* + * + * * Copyright © 2024 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.naviapp.app.initializers + +import com.chuckerteam.chucker.api.ChuckerCollector +import com.chuckerteam.chucker.api.ChuckerInterceptor +import com.facebook.react.modules.network.NetworkingModule +import com.facebook.soloader.SoLoader +import com.navi.alfred.utils.log +import com.navi.base.security.interceptor.EncryptionHashInterceptor +import com.navi.common.CommonLibManager +import com.naviapp.BuildConfig +import com.naviapp.app.NaviApplication +import com.naviapp.app.initializers.ApplicationComponent.applicationJob +import com.naviapp.app.initializers.ApplicationComponent.applicationScope +import javax.inject.Inject +import kotlin.coroutines.cancellation.CancellationException +import kotlinx.coroutines.launch + +class NetworkConfigurationInitializer @Inject constructor() : ComponentInitializer { + + override fun initialize(application: NaviApplication) { + applicationJob.invokeOnCompletion { cause -> + if (cause is CancellationException) { + cause.log() + } + } + applicationScope.launch { + SoLoader.init(application, false) + NetworkingModule.setCustomClientBuilder { builder -> + builder.addInterceptor(CommonLibManager.getHeaderInterceptorForReact()) + builder.addInterceptor(EncryptionHashInterceptor(application.applicationContext)) + if (BuildConfig.DEBUG) { + builder.addInterceptor( + ChuckerInterceptor.Builder(application.applicationContext) + .collector(ChuckerCollector(application.applicationContext)) + .maxContentLength(250000L) + .redactHeaders(arrayListOf("X-Click-Stream-Data")) + .alwaysReadResponseBody(false) + .build() + ) + } + } + } + } +} 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 new file mode 100644 index 0000000000..31f36b3163 --- /dev/null +++ b/android/app/src/main/java/com/naviapp/app/initializers/SdkInitializer.kt @@ -0,0 +1,37 @@ +/* + * + * * Copyright © 2024 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.naviapp.app.initializers + +import android.content.Context +import com.navi.alfred.network.AlfredApiLogsManager +import com.navi.base.sharedpref.PreferenceManager +import com.navi.base.utils.NetWatchManger +import com.navi.common.uitron.util.UiTronDependencyProvider +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 +import javax.inject.Inject + +class SdkInitializer @Inject constructor() : ComponentInitializer { + override fun initialize(application: NaviApplication) { + PreferenceManager.init(application) + NaviSDKHelper.init(naviApplication = application) + UiTronSdkManager.init(UiTronDependencyProvider(application.applicationContext)) + initSdkDebugMode(application.applicationContext) + } + + private fun initSdkDebugMode(applicationContext: Context) { + if (BuildConfig.FLAVOR == QA && !BuildConfig.DEBUG) { + NetWatchManger.init(context = applicationContext, flavour = BuildConfig.FLAVOR) + AlfredApiLogsManager.init(AlfredApiLogsProviderImpl()) + } + } +} diff --git a/android/app/src/main/java/com/naviapp/common/di/AppModule.kt b/android/app/src/main/java/com/naviapp/common/di/AppModule.kt index 6ab1cbc4ff..eca42a5a03 100644 --- a/android/app/src/main/java/com/naviapp/common/di/AppModule.kt +++ b/android/app/src/main/java/com/naviapp/common/di/AppModule.kt @@ -11,6 +11,12 @@ import com.navi.base.utils.BaseUtils import com.navi.common.network.BaseUrls import com.naviapp.BuildConfig import com.naviapp.app.NaviApplication +import com.naviapp.app.initializers.AnrErrorHandlerInitializer +import com.naviapp.app.initializers.AppLifecycleManagerInitializer +import com.naviapp.app.initializers.ComponentInitializer +import com.naviapp.app.initializers.CrashHandlerInitializer +import com.naviapp.app.initializers.NetworkConfigurationInitializer +import com.naviapp.app.initializers.SdkInitializer import com.naviapp.deeplinkmanagement.analytics.NaviDeeplinkAnalytics import com.naviapp.network.di.CoroutineScopeIO import dagger.Module @@ -47,4 +53,22 @@ object AppModule { @CoroutineScopeIO @Singleton fun provideCoroutineScopeIO(): CoroutineScope = CoroutineScope(Dispatchers.IO) + + @Provides + @Singleton + fun provideComponentInitializers( + sdkInitializer: SdkInitializer, + anrErrorHandlerInitializer: AnrErrorHandlerInitializer, + crashHandlerInitializer: CrashHandlerInitializer, + appLifecycleManagerInitializer: AppLifecycleManagerInitializer, + networkConfigurationInitializer: NetworkConfigurationInitializer, + ): List { + return listOf( + sdkInitializer, + anrErrorHandlerInitializer, + crashHandlerInitializer, + appLifecycleManagerInitializer, + networkConfigurationInitializer + ) + } } diff --git a/android/app/src/main/java/com/naviapp/launcher/vm/LauncherVM.kt b/android/app/src/main/java/com/naviapp/launcher/vm/LauncherVM.kt index f894e9ede3..41b3079e4b 100644 --- a/android/app/src/main/java/com/naviapp/launcher/vm/LauncherVM.kt +++ b/android/app/src/main/java/com/naviapp/launcher/vm/LauncherVM.kt @@ -88,15 +88,13 @@ open class LauncherVM @Inject constructor(private val configRepository: ConfigRe } private fun initHyperVerge() { - viewModelScope.launch { - if (HyperSnapSDK.isInitialised().not()) { - HyperSnapSDK.init( - NaviApplication.instance, - BuildConfig.HYPERVERGE_APP_ID, - BuildConfig.HYPERVERGE_APP_KEY, - HyperSnapParams.Region.India - ) - } + if (HyperSnapSDK.isInitialised().not()) { + HyperSnapSDK.init( + NaviApplication.instance, + BuildConfig.HYPERVERGE_APP_ID, + BuildConfig.HYPERVERGE_APP_KEY, + HyperSnapParams.Region.India + ) } } diff --git a/android/app/src/main/java/com/naviapp/network/retrofit/ResponseCallback.kt b/android/app/src/main/java/com/naviapp/network/retrofit/ResponseCallback.kt index e338065d53..06568599e7 100644 --- a/android/app/src/main/java/com/naviapp/network/retrofit/ResponseCallback.kt +++ b/android/app/src/main/java/com/naviapp/network/retrofit/ResponseCallback.kt @@ -11,8 +11,8 @@ import com.google.firebase.crashlytics.FirebaseCrashlytics import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.navi.analytics.utils.NaviTrackEvent +import com.navi.base.AppServiceManager import com.navi.base.utils.BaseUtils -import com.navi.common.CommonLibManager import com.navi.common.R as CommonR import com.navi.common.network.ApiConstants import com.navi.common.network.ApiConstants.API_CODE_ERROR @@ -180,7 +180,7 @@ abstract class ResponseCallback { NaviTrackEvent.trackEvent(eventName = "Restart needed: $isRestartNeeded") if (isRestartNeeded.not()) { errorMessage.message = - CommonLibManager.application.getString(CommonR.string.something_went_wrong) + AppServiceManager.application.getString(CommonR.string.something_went_wrong) errorMessage.statusCode = ApiConstants.API_CODE_SSL_HANDSHAKE_EXCEPTION } } else { diff --git a/android/app/src/main/java/com/naviapp/pushnotification/NotificationHandler.kt b/android/app/src/main/java/com/naviapp/pushnotification/NotificationHandler.kt index ddf816bec1..b70f9f1e5a 100644 --- a/android/app/src/main/java/com/naviapp/pushnotification/NotificationHandler.kt +++ b/android/app/src/main/java/com/naviapp/pushnotification/NotificationHandler.kt @@ -19,8 +19,8 @@ import com.google.android.gms.tasks.OnCompleteListener import com.google.firebase.messaging.FirebaseMessaging import com.moengage.push.amp.plus.MiPushHelper import com.navi.analytics.appsflyer.AppsFlyerUtil -import com.navi.analytics.moengage.MoengageUtil import com.navi.analytics.utils.NaviTrackEvent +import com.navi.base.AppServiceManager import com.navi.base.sharedpref.CommonPrefConstants import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.BaseUtils.areNotificationsEnabled @@ -53,7 +53,6 @@ import com.navi.common.utils.isInstalledInProfile import com.navi.common.utils.isLastLocationMocked import com.navi.common.utils.log import com.naviapp.analytics.utils.NaviAnalytics -import com.naviapp.app.NaviApplication import com.naviapp.permission.utils.hasPermissionsAny import com.naviapp.receiver.LocationReceiver import com.naviapp.registration.repositories.RegisterRepository @@ -204,7 +203,10 @@ object NotificationHandler { mapOf(com.navi.common.utils.Constants.FCM_TOKEN to token) ) if (isUserLoggedIn()) { - MoengageUtil.passPushToken(NaviApplication.instance.applicationContext, token) + NaviTrackEvent.moengageUtil.passPushToken( + AppServiceManager.application.applicationContext, + token + ) } } catch (e: Exception) { e.log() diff --git a/android/app/src/main/java/com/naviapp/pushnotification/firebase/NaviFirebaseMessagingService.kt b/android/app/src/main/java/com/naviapp/pushnotification/firebase/NaviFirebaseMessagingService.kt index 7d7119017f..c16c29b8cc 100644 --- a/android/app/src/main/java/com/naviapp/pushnotification/firebase/NaviFirebaseMessagingService.kt +++ b/android/app/src/main/java/com/naviapp/pushnotification/firebase/NaviFirebaseMessagingService.kt @@ -24,7 +24,6 @@ import com.bumptech.glide.request.target.CustomTarget import com.bumptech.glide.request.transition.Transition import com.google.firebase.messaging.FirebaseMessagingService import com.google.firebase.messaging.RemoteMessage -import com.navi.analytics.moengage.MoengageUtil import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.BaseUtils @@ -125,8 +124,8 @@ class NaviFirebaseMessagingService : FirebaseMessagingService() { private fun handleNotificationForSuperApp(remoteMessage: RemoteMessage, context: Context) { try { - if (MoengageUtil.isFromMoEngagePlatform(remoteMessage.data)) { - MoengageUtil.passPushPayload(context, remoteMessage.data) + if (NaviTrackEvent.moengageUtil.isFromMoEngagePlatform(remoteMessage.data)) { + NaviTrackEvent.moengageUtil.passPushPayload(context, remoteMessage.data) return } } catch (e: Exception) { @@ -419,7 +418,7 @@ class NaviFirebaseMessagingService : FirebaseMessagingService() { mapOf(com.navi.common.utils.Constants.FCM_TOKEN to token) ) if (BaseUtils.isUserLoggedIn()) { - MoengageUtil.passPushToken(applicationContext, token) + NaviTrackEvent.moengageUtil.passPushToken(applicationContext, token) } } catch (e: Exception) { e.log() diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/coins/CoinLambdaImpl.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/coins/CoinLambdaImpl.kt index 659ed62bad..cb4888cb0f 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/coins/CoinLambdaImpl.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/coins/CoinLambdaImpl.kt @@ -12,9 +12,9 @@ import com.navi.ap.common.lambda.handler.LambdaHandler import com.navi.ap.common.models.LambdaResponseType import com.navi.ap.common.models.LambdaState import com.navi.ap.utils.constants.COINS_VALIDATE_UPI_ID +import com.navi.base.AppServiceManager import com.navi.base.utils.isNotNull import com.navi.base.utils.isNull -import com.navi.common.CommonLibManager import com.navi.common.uitron.model.action.ApiType import com.navi.common.uitron.model.action.LambdaApiAction import kotlinx.coroutines.Dispatchers @@ -24,7 +24,7 @@ internal class CoinLambdaImpl(private val lambdaHandler: LambdaHandler) { private val repository = CoinsLambdaRepositoryProvider() - .getRepository(CommonLibManager.application.applicationContext) + .getRepository(AppServiceManager.application.applicationContext) fun validateCoinsUPIId( lambdaApiAction: LambdaApiAction, diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/generic/GenericLambdaImpl.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/generic/GenericLambdaImpl.kt index c80fea19d7..8173b828dc 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/generic/GenericLambdaImpl.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/generic/GenericLambdaImpl.kt @@ -16,7 +16,7 @@ import com.navi.ap.utils.constants.GENERIC_LAMBDA_TRIGGER_PRE_LAUNCH import com.navi.ap.utils.constants.METHOD_NAME import com.navi.ap.utils.constants.TRUE import com.navi.ap.utils.logApEvent -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.uitron.model.action.LambdaApiAction import com.navi.common.utils.Constants import kotlinx.coroutines.Dispatchers @@ -26,7 +26,7 @@ import kotlinx.coroutines.launch internal class GenericLambdaImpl(private val lambdaHandler: LambdaHandler) { private val repository: GenericLambdaRepository = - GenericLambdaProvider().getRepository(CommonLibManager.application.applicationContext) + GenericLambdaProvider().getRepository(AppServiceManager.application.applicationContext) private val lambdaHelper by lazy { GenericLambdaHelper(lambdaHandler) } diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/personalloan/PLLambdaImpl.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/personalloan/PLLambdaImpl.kt index 11caf4428b..87b924526c 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/personalloan/PLLambdaImpl.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/personalloan/PLLambdaImpl.kt @@ -100,6 +100,7 @@ import com.navi.ap.utils.getSignalPaymentData import com.navi.ap.utils.injector.BasePathInjector import com.navi.ap.utils.injector.PathInjector import com.navi.ap.utils.jsonToType +import com.navi.base.AppServiceManager import com.navi.base.model.CtaData import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.BaseUtils @@ -108,7 +109,6 @@ import com.navi.base.utils.isNotNull import com.navi.base.utils.isNotNullAndNotEmpty import com.navi.base.utils.isNull import com.navi.base.utils.orFalse -import com.navi.common.CommonLibManager import com.navi.common.awsupload.model.AWSPresignedUrlRequest import com.navi.common.uitron.model.action.ApiType import com.navi.common.uitron.model.action.LambdaApiAction @@ -131,7 +131,7 @@ internal class PLLambdaImpl( private val lambdaHandler: LambdaHandler, ) { - private val applicationContext = CommonLibManager.application.applicationContext + private val applicationContext = AppServiceManager.application.applicationContext private val repository = PLLambdaProvider().getRepository(applicationContext) diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/personalloan/PLLambdaRepository.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/personalloan/PLLambdaRepository.kt index 764ad3c68c..d432548ae2 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/personalloan/PLLambdaRepository.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/personalloan/PLLambdaRepository.kt @@ -39,7 +39,7 @@ import com.navi.ap.screens.vkyc.models.VKYCAgentAssignedResponse import com.navi.ap.screens.vkyc.utils.getCancelVKYCCallReason import com.navi.ap.screens.vkyc.utils.getVKYCPermissionGrantedList import com.navi.ap.utils.constants.ORCHESTRATION_PL -import com.navi.common.CommonLibManager +import com.navi.common.CommonRetrofitProvider import com.navi.common.awsupload.model.AWSPresignedUrlRequest import com.navi.common.awsupload.model.AWSPresignedUrlResponse import com.navi.common.model.ModuleName @@ -316,7 +316,7 @@ class PLLambdaRepository @Inject constructor(private val retrofitService: APRetr awsPresignedUrlRequest: AWSPresignedUrlRequest ): ApRepoResult { val response = - CommonLibManager.commonRetrofitService.postAWSPreSignedUrl(awsPresignedUrlRequest) + CommonRetrofitProvider.commonRetrofitService.postAWSPreSignedUrl(awsPresignedUrlRequest) logApiResponseEvents(methodName = ::postAWSPresignedUrl.name, response = response) return apiResponseCallback(response = response, apiTag = ApiType.LambdaApiAction.name) } diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/vkyc/VKYCLambdaImpl.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/vkyc/VKYCLambdaImpl.kt index 80b001e7f9..b1bf9cb471 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/vkyc/VKYCLambdaImpl.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/lambda/verticals/vkyc/VKYCLambdaImpl.kt @@ -16,9 +16,9 @@ import com.navi.ap.common.models.LambdaState import com.navi.ap.network.model.getBottomSheetStructure import com.navi.ap.utils.helper.BottomSheetHelper import com.navi.ap.utils.injector.BasePathInjector +import com.navi.base.AppServiceManager import com.navi.base.utils.isNotNull import com.navi.base.utils.isNull -import com.navi.common.CommonLibManager import com.navi.common.uitron.model.action.ApiType import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -26,7 +26,7 @@ import kotlinx.coroutines.launch internal class VKYCLambdaImpl(private val lambdaHandler: VKYCLambdaHandler) { private val repository: PLLambdaRepository = - PLLambdaProvider().getRepository(CommonLibManager.application.applicationContext) + PLLambdaProvider().getRepository(AppServiceManager.application.applicationContext) fun fetchVKYCLottieCardData() { lambdaHandler.bridge.getViewModelScope().launch(Dispatchers.IO) { diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/viewmodel/ApplicationPlatformVM.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/viewmodel/ApplicationPlatformVM.kt index a758ce22a8..f095d5ad4a 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/viewmodel/ApplicationPlatformVM.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/viewmodel/ApplicationPlatformVM.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2023 by Navi Technologies Limited + * * Copyright © 2023-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -64,11 +64,11 @@ import com.navi.ap.utils.helper.BottomSheetHelper import com.navi.ap.utils.helper.PeriodicTaskSchedulerFacade import com.navi.ap.utils.toMap import com.navi.ap.utils.toMutableMap +import com.navi.base.AppServiceManager import com.navi.base.model.CtaData import com.navi.base.utils.isNotNull import com.navi.base.utils.orElse import com.navi.base.utils.orFalse -import com.navi.common.CommonLibManager import com.navi.common.constants.API_SUCCESS_CODE import com.navi.common.network.ApiConstants import com.navi.common.uitron.model.action.AnalyticsActionV2 @@ -805,9 +805,9 @@ abstract class ApplicationPlatformVM( fun initHyperVergeSDK() { viewModelScope.launch(Dispatchers.IO) { HyperSnapSDK.init( - CommonLibManager.application, - CommonLibManager.hypervergeAppId, - CommonLibManager.hypervergeAppKey, + AppServiceManager.application, + AppServiceManager.hypervergeAppId, + AppServiceManager.hypervergeAppKey, HyperSnapParams.Region.India ) } diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/model/ErrorBottomSheetConfig.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/model/ErrorBottomSheetConfig.kt index a84f3d5cde..755bfba0c5 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/model/ErrorBottomSheetConfig.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/model/ErrorBottomSheetConfig.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2023 by Navi Technologies Limited + * * Copyright © 2023-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -14,7 +14,7 @@ import com.google.gson.reflect.TypeToken import com.navi.ap.R import com.navi.ap.common.models.ApScreenStructure import com.navi.ap.utils.getGsonBuilders -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.network.models.GenericErrorBottomSheetFields import com.navi.common.uitron.model.action.CtaAction import com.navi.common.uitron.model.action.UpdateStateHandleActionV2 @@ -25,7 +25,7 @@ import org.json.JSONObject private fun getJsonObject(key: String): String { val inputStream = - CommonLibManager.application.resources.openRawResource( + AppServiceManager.application.resources.openRawResource( R.raw.generic_error_bottom_sheet_config ) val dataString = String(inputStream.readBytes(), StandardCharsets.UTF_8) diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/retrofit/ApResponseCallback.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/retrofit/ApResponseCallback.kt index 7ee3b8b6a5..d68ad08725 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/retrofit/ApResponseCallback.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/retrofit/ApResponseCallback.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2023 by Navi Technologies Limited + * * Copyright © 2023-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -23,9 +23,9 @@ import com.navi.ap.utils.constants.RESULT import com.navi.ap.utils.constants.STATUS_CODE import com.navi.ap.utils.getGsonBuilders import com.navi.ap.utils.logApEvent +import com.navi.base.AppServiceManager import com.navi.base.utils.EMPTY import com.navi.base.utils.orZero -import com.navi.common.CommonLibManager import com.navi.common.R import com.navi.common.network.ApiConstants import com.navi.common.network.ApiConstants.API_BAD_REQUEST @@ -161,7 +161,7 @@ abstract class ApResponseCallback { if (isNetworkAvailable().not() || response.code() == ApiConstants.NO_INTERNET) { statusCode = ApiConstants.NO_INTERNET methodName = NetworkErrorType.NO_INTERNET.name - CommonLibManager.application.apply { + AppServiceManager.application.apply { title = getString(R.string.no_internet_connection) description = getString(R.string.no_internet_connection_description) } @@ -170,7 +170,7 @@ abstract class ApResponseCallback { ApiConstants.API_CODE_CONNECT_EXCEPTION -> { statusCode = ApiConstants.API_CODE_CONNECT_EXCEPTION methodName = NetworkErrorType.CONNECT_ERROR.name - CommonLibManager.application.apply { + AppServiceManager.application.apply { title = getString(R.string.no_internet_connection) description = getString(R.string.no_internet_connection_description) } @@ -178,7 +178,7 @@ abstract class ApResponseCallback { ApiConstants.API_CODE_UNKNOWN_HOST -> { statusCode = ApiConstants.API_CODE_UNKNOWN_HOST methodName = NetworkErrorType.UNKNOWN_HOST.name - CommonLibManager.application.apply { + AppServiceManager.application.apply { title = getString(R.string.no_internet_connection) description = getString(R.string.no_internet_connection_description) } @@ -186,7 +186,7 @@ abstract class ApResponseCallback { ApiConstants.API_CODE_SOCKET_TIMEOUT -> { statusCode = ApiConstants.API_CODE_SOCKET_TIMEOUT methodName = NetworkErrorType.SOCKET_TIMEOUT.name - CommonLibManager.application.apply { + AppServiceManager.application.apply { title = getString(R.string.internet_too_slow) description = getString(R.string.check_internet_connectivity) } @@ -194,7 +194,7 @@ abstract class ApResponseCallback { ApiConstants.API_WRONG_ERROR_RESPONSE -> { statusCode = ApiConstants.API_WRONG_ERROR_RESPONSE methodName = NetworkErrorType.JSON_PARSE.name - CommonLibManager.application.apply { + AppServiceManager.application.apply { title = getString(R.string.something_went_wrong) description = getString(R.string.technical_issue) } @@ -204,7 +204,7 @@ abstract class ApResponseCallback { fetchNewKeyFromFirebaseAndRestart() statusCode = ApiConstants.API_CODE_SSL_HANDSHAKE_EXCEPTION methodName = NetworkErrorType.SSL_HANDSHAKE.name - CommonLibManager.application.apply { + AppServiceManager.application.apply { title = getString(R.string.secure_connection_issue) description = getString(R.string.secure_connection_issue_description) } @@ -212,7 +212,7 @@ abstract class ApResponseCallback { ApiConstants.IO_EXCEPTION_ERROR -> { statusCode = ApiConstants.IO_EXCEPTION_ERROR methodName = NetworkErrorType.ILLEGAL_ARGUMENT.name - CommonLibManager.application.apply { + AppServiceManager.application.apply { title = getString(R.string.invalid_request) description = getString(R.string.invalid_request_description) } @@ -220,7 +220,7 @@ abstract class ApResponseCallback { else -> { statusCode = ApiConstants.API_CODE_ERROR methodName = NetworkErrorType.NETWORK_API_CODE.name - CommonLibManager.application.apply { + AppServiceManager.application.apply { title = getString(R.string.something_went_wrong) description = getString(R.string.technical_issue) } @@ -277,8 +277,8 @@ abstract class ApResponseCallback { val statusCode = ApiConstants.API_CODE_ERROR val methodName = NetworkErrorType.NETWORK_API_CODE.name - val title = CommonLibManager.application.getString(R.string.something_went_wrong) - val description = CommonLibManager.application.getString(R.string.technical_issue) + val title = AppServiceManager.application.getString(R.string.something_went_wrong) + val description = AppServiceManager.application.getString(R.string.technical_issue) val ctaAction: List = getApiRetryActions(apiTag) val ctaTitle: String = getApiRetryCtaText(apiTag) @@ -341,6 +341,6 @@ fun getApiRetryCtaText(apiTag: String): String { ApiType.GetScreenDefinition.name ) ) - CommonLibManager.application.getString(R.string.retry) - else CommonLibManager.application.getString(R.string.okay) + AppServiceManager.application.getString(R.string.retry) + else AppServiceManager.application.getString(R.string.okay) } diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/screens/vkyc/utils/Utils.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/screens/vkyc/utils/Utils.kt index ada94d8d51..d8d989836c 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/screens/vkyc/utils/Utils.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/screens/vkyc/utils/Utils.kt @@ -9,7 +9,7 @@ package com.navi.ap.screens.vkyc.utils import com.navi.ap.network.model.getHideBottomSheetAction import com.navi.ap.network.model.getHideBottomSheetAndStartVkycAgentPoll -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.R import com.navi.common.network.models.GenericErrorBottomSheetFields import com.navi.common.permission.Permission @@ -41,11 +41,11 @@ fun getVKYCBottomSheetFields(errorType: String?) = when (errorType) { ErrorType.VKYC_WAITING_SCREEN_AGENT_POILING_API_TIMEOUT.name -> GenericErrorBottomSheetFields( - title = CommonLibManager.application.getString(R.string.taking_longer_time_title), + title = AppServiceManager.application.getString(R.string.taking_longer_time_title), description = - CommonLibManager.application.getString(R.string.taking_longer_time_desc), + AppServiceManager.application.getString(R.string.taking_longer_time_desc), ctaTitle = - CommonLibManager.application.getString( + AppServiceManager.application.getString( com.navi.naviwidgets.R.string.retry_label ), ctaAction = getHideBottomSheetAndStartVkycAgentPoll(), @@ -53,10 +53,11 @@ fun getVKYCBottomSheetFields(errorType: String?) = ) ErrorType.VKYC_WAITING_SCREEN_AGENT_POLLING_API_FAILED.name -> GenericErrorBottomSheetFields( - title = CommonLibManager.application.getString(R.string.something_went_wrong), - description = CommonLibManager.application.getString(R.string.technical_issue_text), + title = AppServiceManager.application.getString(R.string.something_went_wrong), + description = + AppServiceManager.application.getString(R.string.technical_issue_text), ctaTitle = - CommonLibManager.application.getString( + AppServiceManager.application.getString( com.navi.naviwidgets.R.string.retry_label ), ctaAction = getHideBottomSheetAndStartVkycAgentPoll(), @@ -64,9 +65,9 @@ fun getVKYCBottomSheetFields(errorType: String?) = ) else -> GenericErrorBottomSheetFields( - title = CommonLibManager.application.getString(R.string.something_went_wrong), - description = CommonLibManager.application.getString(R.string.technical_issue), - ctaTitle = CommonLibManager.application.getString(R.string.okay), + title = AppServiceManager.application.getString(R.string.something_went_wrong), + description = AppServiceManager.application.getString(R.string.technical_issue), + ctaTitle = AppServiceManager.application.getString(R.string.okay), ctaAction = getHideBottomSheetAction() ) } diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/utils/MockUtil.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/utils/MockUtil.kt index 31f58c998e..c1357cf45c 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/utils/MockUtil.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/utils/MockUtil.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2023 by Navi Technologies Limited + * * Copyright © 2023-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -11,12 +11,12 @@ import com.google.gson.JsonObject import com.google.gson.JsonParser import com.navi.ap.R import com.navi.ap.network.retrofit.ApRepoResult -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import java.lang.reflect.Type import java.nio.charset.StandardCharsets fun mockApiResponse(type: Type, jsonKey: String): ApRepoResult { - val inputStream = CommonLibManager.application.resources.openRawResource(R.raw.ap_mock) + val inputStream = AppServiceManager.application.resources.openRawResource(R.raw.ap_mock) val dataString = String(inputStream.readBytes(), StandardCharsets.UTF_8) val jsonElement = (JsonParser.parseString(dataString) as? JsonObject)?.get(jsonKey) return ApRepoResult(data = getGsonBuilders().fromJson(jsonElement, type)) diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/utils/Utils.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/utils/Utils.kt index 32565f410f..e7df099609 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/utils/Utils.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/utils/Utils.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2023 by Navi Technologies Limited + * * Copyright © 2023-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -44,8 +44,8 @@ import com.navi.ap.utils.constants.SOURCE_AP import com.navi.ap.utils.constants.VIEW_ID import com.navi.ap.utils.constants.WIDGET_ID import com.navi.ap.utils.extractor.filterEntries +import com.navi.base.AppServiceManager import com.navi.base.utils.isNotNull -import com.navi.common.CommonLibManager import com.navi.common.uitron.model.action.FillApiData import com.navi.common.uitron.model.action.SourceType import com.navi.common.utils.CommonUtils @@ -149,7 +149,7 @@ fun hideKeyboard( suspend fun cacheImages(uiTronResponse: UiTronResponse?) = withContext(Dispatchers.IO) { if (uiTronResponse == null) return@withContext - val context = CommonLibManager.application.applicationContext + val context = AppServiceManager.application.applicationContext val request = ImageRequest.Builder(context) .networkCachePolicy(CachePolicy.ENABLED) @@ -188,7 +188,7 @@ fun getResolvedFieldValue( val value = getDeviceData( sourceProperty = item.sourceProperty.orEmpty(), - context = CommonLibManager.application.applicationContext, + context = AppServiceManager.application.applicationContext, additionalValues = item.additionalParameters ) map[name] = value diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/utils/helper/BottomsheetHelper.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/utils/helper/BottomsheetHelper.kt index 449b1ab56d..5d136557a3 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/utils/helper/BottomsheetHelper.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/utils/helper/BottomsheetHelper.kt @@ -13,7 +13,7 @@ import com.navi.ap.network.model.getHideBottomSheetAndRetryGetNextScreen import com.navi.ap.network.retrofit.getApiRetryActions import com.navi.ap.network.retrofit.getApiRetryCtaText import com.navi.ap.screens.vkyc.utils.KYCScreenName -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.R import com.navi.common.network.models.GenericErrorBottomSheetFields import com.navi.naviwidgets.R as WidgetsR @@ -25,11 +25,11 @@ object BottomSheetHelper { ScreenType.LOADER_SCREEN.name -> GenericErrorBottomSheetFields( title = - CommonLibManager.application.getString(R.string.taking_longer_time_title), + AppServiceManager.application.getString(R.string.taking_longer_time_title), description = - CommonLibManager.application.getString(R.string.taking_longer_time_desc), + AppServiceManager.application.getString(R.string.taking_longer_time_desc), ctaTitle = - CommonLibManager.application.getString(WidgetsR.string.continue_text), + AppServiceManager.application.getString(WidgetsR.string.continue_text), ctaAction = getHideBottomSheetAndRetryGetNextScreen(), isCancellable = false ) @@ -38,29 +38,31 @@ object BottomSheetHelper { KYCScreenName.KYC_TRACKER_SCREEN.name -> GenericErrorBottomSheetFields( title = - CommonLibManager.application.getString( + AppServiceManager.application.getString( R.string.taking_longer_time_title ), description = - CommonLibManager.application.getString( + AppServiceManager.application.getString( R.string.taking_longer_time_desc ), ctaTitle = - CommonLibManager.application.getString(WidgetsR.string.retry_label), + AppServiceManager.application.getString( + WidgetsR.string.retry_label + ), ctaAction = getHideBottomSheetAndRetryGetNextScreen(), isCancellable = false ) else -> GenericErrorBottomSheetFields( title = - CommonLibManager.application.getString( + AppServiceManager.application.getString( R.string.something_went_wrong ), description = - CommonLibManager.application.getString( + AppServiceManager.application.getString( R.string.error_description_time_out ), - ctaTitle = CommonLibManager.application.getString(R.string.okay), + ctaTitle = AppServiceManager.application.getString(R.string.okay), ctaAction = getHideBottomSheetAction() ) } @@ -69,8 +71,8 @@ object BottomSheetHelper { fun getLambdaErrorBottomSheet(apiTag: String) = GenericErrorBottomSheetFields( - title = CommonLibManager.application.getString(R.string.something_went_wrong), - description = CommonLibManager.application.getString(R.string.technical_issue), + title = AppServiceManager.application.getString(R.string.something_went_wrong), + description = AppServiceManager.application.getString(R.string.technical_issue), ctaTitle = getApiRetryCtaText(apiTag), ctaAction = getApiRetryActions(apiTag) ) diff --git a/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/FundCategoryListingPrefetchingTask.kt b/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/FundCategoryListingPrefetchingTask.kt index c52ea1d237..426b44cf8a 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/FundCategoryListingPrefetchingTask.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/FundCategoryListingPrefetchingTask.kt @@ -10,10 +10,10 @@ package com.navi.amc.common.taskProcessor import androidx.annotation.WorkerThread import com.navi.amc.fundbuy.repository.FundListRepository import com.navi.amc.utils.Constant +import com.navi.base.AppServiceManager import com.navi.base.model.GenericAnalyticsData import com.navi.base.model.LineItem import com.navi.base.utils.isNull -import com.navi.common.CommonLibManager import com.navi.common.firebasedb.FirebaseStatusType import com.navi.common.model.PreloadTask import com.navi.common.model.common.CacheConfig @@ -31,7 +31,7 @@ constructor(private val taskConfig: PreloadTask, private val listener: AmcTaskLi init { val fundListingPrefetchFactory = EntryPointAccessors.fromApplication( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, FundLandingPrefetchTaskEntryPoint::class.java ) fundListRepository = fundListingPrefetchFactory.funLandingRepository diff --git a/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/FundLandingPrefetchTask.kt b/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/FundLandingPrefetchTask.kt index c4dedde720..65597e76e8 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/FundLandingPrefetchTask.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/FundLandingPrefetchTask.kt @@ -11,10 +11,10 @@ import androidx.annotation.WorkerThread import com.navi.amc.fundbuy.repository.FundListRepository import com.navi.amc.utils.AmcAnalytics import com.navi.amc.utils.Constant +import com.navi.base.AppServiceManager import com.navi.base.model.GenericAnalyticsData import com.navi.base.model.LineItem import com.navi.base.utils.isNull -import com.navi.common.CommonLibManager import com.navi.common.firebasedb.FirebaseStatusType import com.navi.common.model.PreloadTask import com.navi.common.model.common.CacheConfig @@ -41,7 +41,7 @@ constructor(private val taskConfig: PreloadTask, private val listener: AmcTaskLi init { val fundLandingPrefetchFactory = EntryPointAccessors.fromApplication( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, FundLandingPrefetchTaskEntryPoint::class.java ) fundListRepository = fundLandingPrefetchFactory.funLandingRepository diff --git a/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/FundListingPrefetchTask.kt b/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/FundListingPrefetchTask.kt index 9026d96626..6c28e35964 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/FundListingPrefetchTask.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/FundListingPrefetchTask.kt @@ -9,9 +9,9 @@ package com.navi.amc.common.taskProcessor import androidx.annotation.WorkerThread import com.navi.amc.fundbuy.repository.FundListRepository +import com.navi.base.AppServiceManager import com.navi.base.model.GenericAnalyticsData import com.navi.base.utils.isNull -import com.navi.common.CommonLibManager import com.navi.common.firebasedb.FirebaseStatusType import com.navi.common.model.PreloadTask import com.navi.common.model.common.CacheConfig @@ -29,7 +29,7 @@ constructor(private val taskConfig: PreloadTask, private val listener: AmcTaskLi init { val fundListingPrefetchFactory = EntryPointAccessors.fromApplication( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, FundLandingPrefetchTaskEntryPoint::class.java ) fundListRepository = fundListingPrefetchFactory.funLandingRepository diff --git a/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/OrdersPrefetchTask.kt b/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/OrdersPrefetchTask.kt index 596795446a..6cc7cd8de7 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/OrdersPrefetchTask.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/OrdersPrefetchTask.kt @@ -9,9 +9,9 @@ package com.navi.amc.common.taskProcessor import androidx.annotation.WorkerThread import com.navi.amc.portfolio.repositories.OrdersRepository +import com.navi.base.AppServiceManager import com.navi.base.model.GenericAnalyticsData import com.navi.base.utils.isNull -import com.navi.common.CommonLibManager import com.navi.common.firebasedb.FirebaseStatusType import com.navi.common.model.PreloadTask import com.navi.common.model.common.CacheConfig @@ -38,7 +38,7 @@ constructor(private val taskConfig: PreloadTask, private val listener: AmcTaskLi init { val orderPrefetchFactory = EntryPointAccessors.fromApplication( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, OrdersPrefetchTaskEntryPoint::class.java ) ordersRepository = orderPrefetchFactory.ordersRepository diff --git a/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/PortfolioPrefetchTask.kt b/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/PortfolioPrefetchTask.kt index 4bd1b5dc73..f64bbbe4c8 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/PortfolioPrefetchTask.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/PortfolioPrefetchTask.kt @@ -9,9 +9,9 @@ package com.navi.amc.common.taskProcessor import androidx.annotation.WorkerThread import com.navi.amc.portfolio.repositories.PortfolioScreenRepository +import com.navi.base.AppServiceManager import com.navi.base.model.GenericAnalyticsData import com.navi.base.utils.isNull -import com.navi.common.CommonLibManager import com.navi.common.firebasedb.FirebaseStatusType import com.navi.common.model.PreloadTask import com.navi.common.model.common.CacheConfig @@ -38,7 +38,7 @@ constructor(private val taskConfig: PreloadTask, private val listener: AmcTaskLi init { val portfolioPrefetchFactory = EntryPointAccessors.fromApplication( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, PortfolioPrefetchTaskEntryPoint::class.java ) portfolioRepository = portfolioPrefetchFactory.portfolioRepository diff --git a/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/SipListPrefetchTask.kt b/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/SipListPrefetchTask.kt index f86b7cd51a..ccc506dbbc 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/SipListPrefetchTask.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/common/taskProcessor/SipListPrefetchTask.kt @@ -9,9 +9,9 @@ package com.navi.amc.common.taskProcessor import androidx.annotation.WorkerThread import com.navi.amc.portfolio.repositories.SipDetailsRepository +import com.navi.base.AppServiceManager import com.navi.base.model.GenericAnalyticsData import com.navi.base.utils.isNull -import com.navi.common.CommonLibManager import com.navi.common.firebasedb.FirebaseStatusType import com.navi.common.model.PreloadTask import com.navi.common.model.common.CacheConfig @@ -41,7 +41,7 @@ constructor( init { val sipPrefetchFactory = EntryPointAccessors.fromApplication( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, SipListPrefetchTaskEntryPoint::class.java ) sipRepository = sipPrefetchFactory.sipRepository diff --git a/android/navi-amc/src/main/java/com/navi/amc/digio/esign/DigioEsignVerificationHelper.kt b/android/navi-amc/src/main/java/com/navi/amc/digio/esign/DigioEsignVerificationHelper.kt index 98691ac5e6..dea3c4f69f 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/digio/esign/DigioEsignVerificationHelper.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/digio/esign/DigioEsignVerificationHelper.kt @@ -11,6 +11,7 @@ import android.app.Activity import androidx.appcompat.app.AppCompatActivity import com.navi.amc.digio.DigioEsignResponse import com.navi.amc.utils.AmcAnalytics +import com.navi.base.AppServiceManager import com.navi.base.utils.PROD import com.navi.common.CommonLibManager import com.navi.common.constants.AMC_GLOBAL_3RD_PARTY_ERRORS @@ -91,7 +92,7 @@ class DigioEsignVerificationHelper(private val moduleName: String = ModuleNameV2 moduleName = moduleName, vendorName = ProviderType.DIGIO, flowName = AmcAnalytics.AMC_DIGIO_ESIGN, - networkType = getNetworkType(CommonLibManager.application.applicationContext), + networkType = getNetworkType(AppServiceManager.application.applicationContext), eventName = AMC_GLOBAL_3RD_PARTY_ERRORS ) e.log() diff --git a/android/navi-amc/src/main/java/com/navi/amc/digio/kyc/DigioKycVerificationHelper.kt b/android/navi-amc/src/main/java/com/navi/amc/digio/kyc/DigioKycVerificationHelper.kt index 035f99b56c..bfd311b6d5 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/digio/kyc/DigioKycVerificationHelper.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/digio/kyc/DigioKycVerificationHelper.kt @@ -11,6 +11,7 @@ import android.app.Activity import androidx.appcompat.app.AppCompatActivity import com.navi.amc.digio.DigioKycResponse import com.navi.amc.utils.AmcAnalytics +import com.navi.base.AppServiceManager import com.navi.base.utils.PROD import com.navi.common.CommonLibManager import com.navi.common.constants.AMC_GLOBAL_3RD_PARTY_ERRORS @@ -80,7 +81,7 @@ class DigioKycVerificationHelper(private val moduleName: String = ModuleNameV2.A moduleName = moduleName, vendorName = ProviderType.DIGIO, flowName = AmcAnalytics.AMC_DIGIO_KYC, - networkType = getNetworkType(CommonLibManager.application.applicationContext), + networkType = getNetworkType(AppServiceManager.application.applicationContext), eventName = AMC_GLOBAL_3RD_PARTY_ERRORS ) e.log() diff --git a/android/navi-amc/src/main/java/com/navi/amc/fundbuy/fragments/NfoDetailsFragment.kt b/android/navi-amc/src/main/java/com/navi/amc/fundbuy/fragments/NfoDetailsFragment.kt index 2c5ee3174d..a8aacef424 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/fundbuy/fragments/NfoDetailsFragment.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/fundbuy/fragments/NfoDetailsFragment.kt @@ -28,12 +28,12 @@ import com.navi.amc.utils.Constant.DATA import com.navi.amc.utils.Constant.DOWNLOADING import com.navi.amc.utils.Constant.SHOW_BOTTOMSHEET import com.navi.amc.utils.getBottomSheet +import com.navi.base.AppServiceManager import com.navi.base.model.ActionData import com.navi.base.model.FundDocumentDownloadWidgetClickAction import com.navi.base.model.NaviClickAction import com.navi.base.model.NaviWidgetClickWithCtaData import com.navi.base.utils.BaseUtils -import com.navi.common.CommonLibManager import com.navi.common.downloader.DownloadUtil import com.navi.common.listeners.FragmentInterchangeListener import com.navi.common.listeners.HeaderInteractionListener @@ -158,11 +158,11 @@ class NfoDetailsFragment : AmcBaseFragment(), WidgetCallback, NewBottomSheetList private fun downloadDocuments(downloadUrl: String?) { val path = BaseUtils.cacheDirUri( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, ("NFO_" + System.currentTimeMillis().toString()) ) DownloadUtil.download( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, Uri.parse(downloadUrl), URI.create(path) ) diff --git a/android/navi-amc/src/main/java/com/navi/amc/kyc/fragment/PermissionFragment.kt b/android/navi-amc/src/main/java/com/navi/amc/kyc/fragment/PermissionFragment.kt index 0636ce8cb6..1dc95cadf5 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/kyc/fragment/PermissionFragment.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/kyc/fragment/PermissionFragment.kt @@ -31,8 +31,8 @@ import com.navi.amc.utils.AmcAnalytics import com.navi.amc.utils.Constant import com.navi.amc.utils.toNavigateAmcModule import com.navi.analytics.utils.NaviTrackEvent +import com.navi.base.AppServiceManager import com.navi.base.model.ActionData -import com.navi.common.CommonLibManager import com.navi.common.R as CommonR import com.navi.common.decorator.TopMarginItemDecoration import com.navi.common.listeners.FragmentInterchangeListener @@ -214,7 +214,7 @@ class PermissionFragment : AmcBaseFragment(), FooterInteractionListener, Permiss val intent = Intent( Settings.ACTION_APPLICATION_DETAILS_SETTINGS, - Uri.parse(Constant.PACKAGE.plus(CommonLibManager.applicationId)) + Uri.parse(Constant.PACKAGE.plus(AppServiceManager.applicationId)) ) startActivity(intent) } @@ -325,7 +325,7 @@ class PermissionFragment : AmcBaseFragment(), FooterInteractionListener, Permiss } private fun getAlternatePermissionTilesV2(): List { - val application = CommonLibManager.application.applicationContext + val application = AppServiceManager.application.applicationContext return listOf( PermissionTile( null, diff --git a/android/navi-amc/src/main/java/com/navi/amc/network/di/NetworkModule.kt b/android/navi-amc/src/main/java/com/navi/amc/network/di/NetworkModule.kt index 5fd13f1467..ed6acbaab1 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/network/di/NetworkModule.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/network/di/NetworkModule.kt @@ -14,7 +14,7 @@ import com.navi.amc.network.retrofit.NaviHttpClient import com.navi.amc.network.retrofit.RetrofitService import com.navi.amc.network.util.getNetworkInfo import com.navi.amc.network.util.getNetworkInfoSuperApp -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.model.ModuleNameV2 import com.navi.common.model.NetworkInfo import com.navi.common.network.converter.EmptyBodyHandlingConverterFactory @@ -47,14 +47,15 @@ object NetworkModule { @Provides @AMCRetrofit fun providesOkHttpClient(@AMCRetrofit networkInfo: NetworkInfo): NaviHttpClient = - NaviHttpClient(networkInfo, CommonLibManager.application.applicationContext) + NaviHttpClient(networkInfo, AppServiceManager.application.applicationContext) @Singleton @Provides @SuperAppRetroFitForAmc fun providesOkHttpClientForSuperApp( @SuperAppRetroFitForAmc networkInfo: NetworkInfo - ): NaviHttpClient = NaviHttpClient(networkInfo, CommonLibManager.application.applicationContext) + ): NaviHttpClient = + NaviHttpClient(networkInfo, AppServiceManager.application.applicationContext) @Singleton @Provides @@ -74,7 +75,7 @@ object NetworkModule { ): RetrofitService { val retrofit = Retrofit.Builder() - .baseUrl(CommonLibManager.baseUrl) + .baseUrl(AppServiceManager.baseUrl) .addConverterFactory(EmptyBodyHandlingConverterFactory(ModuleNameV2.AMC.name)) .addConverterFactory(GsonConverterFactory.create(deserializer)) .client(naviHttpClient.httpClientBuilder.build()) @@ -91,7 +92,7 @@ object NetworkModule { ): RetrofitService { val retrofit = Retrofit.Builder() - .baseUrl(CommonLibManager.baseUrl) + .baseUrl(AppServiceManager.baseUrl) .addConverterFactory(EmptyBodyHandlingConverterFactory(ModuleNameV2.AMC.name)) .addConverterFactory(GsonConverterFactory.create(percentDeserializer)) .client(naviHttpClient.httpClientBuilder.build()) diff --git a/android/navi-amc/src/main/java/com/navi/amc/network/util/Utils.kt b/android/navi-amc/src/main/java/com/navi/amc/network/util/Utils.kt index 1fae7517b2..63056e8b9f 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/network/util/Utils.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/network/util/Utils.kt @@ -7,15 +7,15 @@ package com.navi.amc.network.util -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.model.ModuleName import com.navi.common.model.NetworkInfo fun getNetworkInfo(timeOutInSeconds: Long = ApiConstants.API_CONNECT_TIMEOUT_VALUE): NetworkInfo { return NetworkInfo( - baseUrl = CommonLibManager.baseUrl, - appVersionName = CommonLibManager.appVersionName, - appVersionCode = CommonLibManager.appVersionCode, + baseUrl = AppServiceManager.baseUrl, + appVersionName = AppServiceManager.appVersionName, + appVersionCode = AppServiceManager.appVersionCode, moduleName = ModuleName.AMC, timeoutInSec = timeOutInSeconds ) @@ -25,9 +25,9 @@ fun getNetworkInfoSuperApp( timeOutInSeconds: Long = ApiConstants.API_CONNECT_TIMEOUT_VALUE ): NetworkInfo { return NetworkInfo( - baseUrl = CommonLibManager.baseUrl, - appVersionName = CommonLibManager.appVersionName, - appVersionCode = CommonLibManager.appVersionCode, + baseUrl = AppServiceManager.baseUrl, + appVersionName = AppServiceManager.appVersionName, + appVersionCode = AppServiceManager.appVersionCode, moduleName = null, timeoutInSec = timeOutInSeconds ) diff --git a/android/navi-amc/src/main/java/com/navi/amc/utils/CommonUtils.kt b/android/navi-amc/src/main/java/com/navi/amc/utils/CommonUtils.kt index 9b989e15e9..cdb5f5b16e 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/utils/CommonUtils.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/utils/CommonUtils.kt @@ -21,13 +21,13 @@ import com.navi.amc.fundbuy.models.FundDuration import com.navi.amc.fundbuy.models.NavInfo import com.navi.amc.network.deserializer.FundListDeserializer import com.navi.amc.utils.Constant.UPI_APP_INTENT_URL +import com.navi.base.AppServiceManager import com.navi.base.model.ActionData import com.navi.base.utils.BaseUtils import com.navi.base.utils.SPACE import com.navi.base.utils.UNDERSCORE import com.navi.base.utils.orFalse import com.navi.base.utils.orZero -import com.navi.common.CommonLibManager import com.navi.common.downloader.DownloadUtil import com.navi.design.textview.NaviTextView import com.navi.design.utils.dpToPx @@ -183,9 +183,9 @@ fun getTimeStampFromSystemTime(formatString: String): String? { fun downloadDocuments(context: Context, downloadUrl: String?, fileName: String) { Toast.makeText(context, "Downloading", Toast.LENGTH_SHORT).show() - val path = BaseUtils.cacheDirUri(CommonLibManager.application.applicationContext, fileName) + val path = BaseUtils.cacheDirUri(AppServiceManager.application.applicationContext, fileName) DownloadUtil.download( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, Uri.parse(downloadUrl), URI.create(path) ) diff --git a/android/navi-amc/src/main/java/com/navi/amc/utils/MockUtil.kt b/android/navi-amc/src/main/java/com/navi/amc/utils/MockUtil.kt index 201ee5c391..a85f2c2966 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/utils/MockUtil.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/utils/MockUtil.kt @@ -13,7 +13,7 @@ import com.google.gson.JsonObject import com.google.gson.JsonParser import com.navi.amc.R import com.navi.amc.network.deserializer.FundListDeserializer -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.network.models.RepoResult import com.navi.naviwidgets.models.NaviWidget import com.navi.naviwidgets.models.response.CardType @@ -29,7 +29,9 @@ fun mockApiResponse( @RawRes mockResponseRscId: Int = R.raw.amc_mock1 ): RepoResult { val inputStream = - CommonLibManager.application.applicationContext.resources.openRawResource(mockResponseRscId) + AppServiceManager.application.applicationContext.resources.openRawResource( + mockResponseRscId + ) val dataString = String(inputStream.readBytes(), StandardCharsets.UTF_8) val jsonElement = (JsonParser.parseString(dataString) as? JsonObject)?.get(jsonKey) val customGson = 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 14c19c70a6..613703fb26 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 @@ -34,6 +34,14 @@ object NaviTrackEvent { private var startTs: Long = 0L private var previousScreenName: String? = null var currentScreenName: String? = null + private lateinit var analyticsConfiguration: AnalyticsConfiguration + private lateinit var inAppOptOutScreens: MutableSet> + private lateinit var appContext: Application + + val moengageUtil by lazy { + MoengageUtil.init(appContext, analyticsConfiguration.moengageData, inAppOptOutScreens) + MoengageUtil + } fun appInit( appContext: Application, @@ -42,7 +50,9 @@ object NaviTrackEvent { ) { applicationContext = appContext FcmAnalyticsUtil.analytics.init() - MoengageUtil.init(appContext, analyticsConfiguration.moengageData, inAppOptOutScreens) + this.analyticsConfiguration = analyticsConfiguration + this.inAppOptOutScreens = inAppOptOutScreens + this.appContext = appContext val pulseConfig = PulseSDKConfig.Configuration.Builder() .setAppName(analyticsConfiguration.appInfo.appName) @@ -52,6 +62,7 @@ object NaviTrackEvent { .setEventBatchSize(analyticsConfiguration.pulseConfig.eventBatchSize) .setEventInterval(analyticsConfiguration.pulseConfig.eventInterval) .build() + if (analyticsConfiguration.disableAlfred.not()) { val alfredConfig = AlfredConfig( @@ -94,7 +105,7 @@ object NaviTrackEvent { isNeededForFirebase: Boolean = true ) { screenName?.apply { - MoengageUtil.trackScreenName(this, context = applicationContext) + moengageUtil.trackScreenName(this, context = applicationContext) if (isNeededForFirebase) FcmAnalyticsUtil.analytics.trackScreenOpen(this) PulseManager.trackEvent(screenName) if (isEventWhiteListedForAppsflyer(this)) { @@ -110,7 +121,7 @@ object NaviTrackEvent { isNeededForFirebase: Boolean = true ) { screenName?.apply { - MoengageUtil.trackEvent(this, eventValues, context = applicationContext) + moengageUtil.trackEvent(this, eventValues, context = applicationContext) if (isNeededForFirebase) FcmAnalyticsUtil.analytics.trackEvent(this, eventValues) PulseManager.trackEvent(this, eventValues) if (isEventWhiteListedForAppsflyer(this)) { @@ -149,7 +160,7 @@ object NaviTrackEvent { isNeededForAppsflyer: Boolean = false, isNeededForFirebase: Boolean = false ) { - MoengageUtil.trackEvent(eventName, eventValues, applicationContext) + moengageUtil.trackEvent(eventName, eventValues, applicationContext) if (isNeededForFirebase) FcmAnalyticsUtil.analytics.trackEvent(eventName, eventValues) PulseManager.trackEvent(eventName, eventValues) if (isNeededForAppsflyer || isEventWhiteListedForAppsflyer(eventName)) { @@ -164,7 +175,7 @@ object NaviTrackEvent { } fun trackEventOnAllThirdParty(eventName: String, eventValues: Map? = null) { - MoengageUtil.trackEvent(eventName, eventValues, applicationContext) + moengageUtil.trackEvent(eventName, eventValues, applicationContext) if (isEventWhiteListedForAppsflyer(eventName)) { AppsFlyerUtil.instance.trackEvent(applicationContext, eventName, eventValues) } @@ -172,7 +183,7 @@ object NaviTrackEvent { } fun setUserId(id: String) { - MoengageUtil.setUserId(id, applicationContext) + moengageUtil.setUserId(id, applicationContext) FcmAnalyticsUtil.analytics.setUserId(id) AppsFlyerUtil.instance.setCustomerId(id) PulseManager.setUserId(id) @@ -194,7 +205,7 @@ object NaviTrackEvent { monthlyIncomeAmount: Double? = null, gender: String? = null ) { - MoengageUtil.setUserAttributes( + moengageUtil.setUserAttributes( applicationContext, name, phoneNumber, @@ -209,10 +220,10 @@ object NaviTrackEvent { } fun setLatLongAttribute(location: UserLocation?) = - MoengageUtil.setLatLongAttribute(location, applicationContext) + moengageUtil.setLatLongAttribute(location, applicationContext) fun logoutUser() { - MoengageUtil.logoutUser(applicationContext) + moengageUtil.logoutUser(applicationContext) PulseManager.setUserId(null) } diff --git a/android/navi-base/src/main/java/com/navi/base/AppServiceManager.kt b/android/navi-base/src/main/java/com/navi/base/AppServiceManager.kt new file mode 100644 index 0000000000..eb410697e0 --- /dev/null +++ b/android/navi-base/src/main/java/com/navi/base/AppServiceManager.kt @@ -0,0 +1,45 @@ +/* + * + * * Copyright © 2024 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.navi.base + +import android.app.Application + +object AppServiceManager { + lateinit var application: Application + lateinit var applicationId: String + lateinit var sslPinningKey: String + lateinit var baseUrl: String + lateinit var appVersionCode: String + lateinit var appVersionName: String + lateinit var hypervergeAppId: String + lateinit var hypervergeAppKey: String + + fun init( + application: Application, + baseUrl: String, + appVersionName: String, + appVersionCode: String, + applicationId: String, + sslPinningKey: String, + hypervergeAppId: String, + hypervergeAppKey: String, + ) { + this.sslPinningKey = sslPinningKey + this.baseUrl = baseUrl + this.appVersionCode = appVersionCode + this.appVersionName = appVersionName + this.hypervergeAppId = hypervergeAppId + this.hypervergeAppKey = hypervergeAppKey + this.application = application + this.applicationId = applicationId + } + + fun isBaseUrlInitialized(): Boolean { + return this::baseUrl.isInitialized + } +} diff --git a/android/navi-base/src/main/java/com/navi/base/deeplink/DeepLinkManager.kt b/android/navi-base/src/main/java/com/navi/base/deeplink/DeepLinkManager.kt index 138f927d29..1edcd925d8 100644 --- a/android/navi-base/src/main/java/com/navi/base/deeplink/DeepLinkManager.kt +++ b/android/navi-base/src/main/java/com/navi/base/deeplink/DeepLinkManager.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2021-2023 by Navi Technologies Limited + * * Copyright © 2021-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -12,8 +12,8 @@ import com.navi.base.deeplink.listener.DeepLinkListener object DeepLinkManager { private var deepLinkListener: DeepLinkListener? = null - fun init(deepLinkListenerTemp: DeepLinkListener) { - deepLinkListener = deepLinkListenerTemp + fun init(deepLinkListener: DeepLinkListener) { + this.deepLinkListener = deepLinkListener } fun getDeepLinkListener(): DeepLinkListener? { diff --git a/android/navi-base/src/main/java/com/navi/base/sharedpref/PreferenceManager.kt b/android/navi-base/src/main/java/com/navi/base/sharedpref/PreferenceManager.kt index 7f150bbb9b..0e2c1b15b2 100644 --- a/android/navi-base/src/main/java/com/navi/base/sharedpref/PreferenceManager.kt +++ b/android/navi-base/src/main/java/com/navi/base/sharedpref/PreferenceManager.kt @@ -23,7 +23,6 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.launch -import timber.log.Timber object PreferenceManager { @@ -32,49 +31,50 @@ object PreferenceManager { private const val PREFS_FILENAME_SECURE_SESSION = "com.naviapp.secure.preferences" private const val PREFS_FILENAME_SECURE_APP = "com.naviapp.secure.app" + private lateinit var application: Application + private val gson: Gson by lazy { Gson() } + private val masterKey by lazy { + MasterKey.Builder(application).setKeyScheme(MasterKey.KeyScheme.AES256_GCM).build() + } + // Cleared on logout/endOfSession private lateinit var sharedPreferencesForSession: SharedPreferences - private var secureSharedPreferencesForSession: SharedPreferences? = null + private val secureSharedPreferencesForSession: SharedPreferences? by lazy { + return@lazy try { + EncryptedSharedPreferences.create( + application, + PREFS_FILENAME_SECURE_SESSION, + masterKey, + EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, + EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM + ) + } catch (e: Exception) { + null + } + } // Not cleared on logout/endOfSession private lateinit var sharedPreferencesForApp: SharedPreferences - private var secureSharedPreferencesForApp: SharedPreferences? = null - - private lateinit var gson: Gson + private val secureSharedPreferencesForApp: SharedPreferences? by lazy { + return@lazy try { + EncryptedSharedPreferences.create( + application, + PREFS_FILENAME_SECURE_APP, + masterKey, + EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, + EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM + ) + } catch (e: Exception) { + null + } + } fun init(application: Application) { - gson = Gson() + this.application = application sharedPreferencesForSession = application.getSharedPreferences(PREFS_FILENAME_SESSION, Context.MODE_PRIVATE) sharedPreferencesForApp = application.getSharedPreferences(PREFS_FILENAME, Context.MODE_PRIVATE) - try { - val masterKey = - MasterKey.Builder(application).setKeyScheme(MasterKey.KeyScheme.AES256_GCM).build() - secureSharedPreferencesForSession = - EncryptedSharedPreferences.create( - application, - PREFS_FILENAME_SECURE_SESSION, - masterKey, - EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, - EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM - ) - - secureSharedPreferencesForApp = - EncryptedSharedPreferences.create( - application, - PREFS_FILENAME_SECURE_APP, - masterKey, - EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, - EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM - ) - } catch (e: Exception) { - // NaviTrackEvent.trackEventOnClickStream( - // "secure_shared_pref_crash", - // mapOf(Pair("reason", e.message.orEmpty())) - // ) - Timber.e(e) - } } fun getStringPreference(key: String): String? { diff --git a/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/LocalJsonDataSource.kt b/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/LocalJsonDataSource.kt index 68c2574981..411c8bec0c 100644 --- a/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/LocalJsonDataSource.kt +++ b/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/LocalJsonDataSource.kt @@ -10,7 +10,7 @@ package com.navi.bbps.common import com.google.gson.GsonBuilder import com.google.gson.JsonObject import com.google.gson.JsonParser -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import java.lang.reflect.Type import java.nio.charset.StandardCharsets import javax.inject.Inject @@ -21,7 +21,7 @@ class LocalJsonDataSource @Inject constructor() { GsonBuilder().registerTypeAdapter(DateTime::class.java, DateTimeConverterAdapter()).create() fun getDataFromJsonFile(type: Type, jsonKey: String, filePath: Int): T { - val inputStream = CommonLibManager.application.resources.openRawResource(filePath) + val inputStream = AppServiceManager.application.resources.openRawResource(filePath) val dataString = String(inputStream.readBytes(), StandardCharsets.UTF_8) val jsonElement = (JsonParser.parseString(dataString) as? JsonObject)?.get(jsonKey) return gson.fromJson(jsonElement, type) diff --git a/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/MockUtils.kt b/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/MockUtils.kt index 227f8e99ed..9c6b79f76f 100644 --- a/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/MockUtils.kt +++ b/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/MockUtils.kt @@ -10,8 +10,8 @@ package com.navi.bbps.common import com.google.gson.GsonBuilder import com.google.gson.JsonObject import com.google.gson.JsonParser +import com.navi.base.AppServiceManager import com.navi.bbps.R -import com.navi.common.CommonLibManager import com.navi.common.network.models.ErrorMessage import com.navi.common.network.models.RepoResult import java.lang.reflect.Type @@ -24,7 +24,7 @@ class MockUtils { fun mockApiResponse(type: Type, jsonKey: String): RepoResult { val inputStream = - CommonLibManager.application.resources.openRawResource(R.raw.navi_bbps_mock) + AppServiceManager.application.resources.openRawResource(R.raw.navi_bbps_mock) val dataString = String(inputStream.readBytes(), StandardCharsets.UTF_8) val jsonElement = (JsonParser.parseString(dataString) as? JsonObject)?.get(jsonKey) return RepoResult(mockGson.fromJson(jsonElement, type)) diff --git a/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/viewmodel/NaviBbpsBaseVM.kt b/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/viewmodel/NaviBbpsBaseVM.kt index 950d58c3e9..97fdfa0cd1 100644 --- a/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/viewmodel/NaviBbpsBaseVM.kt +++ b/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/viewmodel/NaviBbpsBaseVM.kt @@ -8,6 +8,7 @@ package com.navi.bbps.common.viewmodel import androidx.lifecycle.viewModelScope +import com.navi.base.AppServiceManager import com.navi.base.utils.ResourceProvider import com.navi.bbps.R import com.navi.bbps.common.model.NaviBbpsVmData @@ -18,7 +19,6 @@ import com.navi.bbps.common.model.view.NaviBbpsErrorConfig import com.navi.bbps.common.model.view.NaviBbpsErrorEvent import com.navi.bbps.common.utils.ErrorEventHandler import com.navi.bbps.common.utils.NaviBbpsEventBus -import com.navi.common.CommonLibManager import com.navi.common.R as CommonR import com.navi.common.network.models.AssetDetails import com.navi.common.network.models.ErrorMessage @@ -157,13 +157,13 @@ abstract class NaviBbpsBaseVM(val naviBbpsVmData: NaviBbpsVmData) : BaseVM() { private fun defaultButtonConfig() = NaviBbpsErrorButtonConfig( - text = CommonLibManager.application.resources.getString(R.string.bbps_okay), + text = AppServiceManager.application.resources.getString(R.string.bbps_okay), type = NaviBbpsButtonTheme.Primary, action = NaviBbpsButtonAction.Dismiss ) private fun Action.toNaviBbpsErrorButtonConfig(): NaviBbpsErrorButtonConfig { - val text = title ?: CommonLibManager.application.resources.getString(R.string.bbps_okay) + val text = title ?: AppServiceManager.application.resources.getString(R.string.bbps_okay) val type = when (tag?.lowercase()) { CTA_THEME_PRIMARY -> NaviBbpsButtonTheme.Primary @@ -177,7 +177,7 @@ abstract class NaviBbpsBaseVM(val naviBbpsVmData: NaviBbpsVmData) : BaseVM() { else -> { if ( text.contains( - CommonLibManager.application.resources.getString(R.string.bbps_retry) + AppServiceManager.application.resources.getString(R.string.bbps_retry) ) ) NaviBbpsButtonAction.Retry("") @@ -216,7 +216,7 @@ abstract class NaviBbpsBaseVM(val naviBbpsVmData: NaviBbpsVmData) : BaseVM() { } fun getNoInternetErrorConfig(): NaviBbpsErrorConfig { - val noInternetGenericResponse = getNoInternetData(context = CommonLibManager.application) + val noInternetGenericResponse = getNoInternetData(context = AppServiceManager.application) return NaviBbpsErrorConfig( iconResId = R.drawable.ic_bbps_error_alert_circle, title = diff --git a/android/navi-bbps/src/main/kotlin/com/navi/bbps/network/di/NaviBbpsModule.kt b/android/navi-bbps/src/main/kotlin/com/navi/bbps/network/di/NaviBbpsModule.kt index 26d3ca33a3..0ef639050d 100644 --- a/android/navi-bbps/src/main/kotlin/com/navi/bbps/network/di/NaviBbpsModule.kt +++ b/android/navi-bbps/src/main/kotlin/com/navi/bbps/network/di/NaviBbpsModule.kt @@ -10,6 +10,7 @@ package com.navi.bbps.network.di import android.content.Context import com.google.gson.Gson import com.google.gson.GsonBuilder +import com.navi.base.AppServiceManager import com.navi.bbps.common.DateTimeConverterAdapter import com.navi.bbps.feature.contactlist.PhoneContactManager import com.navi.bbps.feature.contactlist.PhoneContactManagerImpl @@ -17,7 +18,6 @@ import com.navi.bbps.feature.permission.utils.PermissionStateProvider import com.navi.bbps.feature.permission.utils.PermissionStateProviderImpl import com.navi.bbps.network.NaviBbpsHttpClient import com.navi.bbps.network.service.NaviBbpsRetrofitService -import com.navi.common.CommonLibManager import com.navi.common.model.ModuleName import com.navi.common.model.ModuleNameV2 import com.navi.common.model.NetworkInfo @@ -44,9 +44,9 @@ object NaviBbpsNetworkModule { @NaviBbpsNetworkInfo fun providesNetworkInfo(): NetworkInfo = NetworkInfo( - baseUrl = CommonLibManager.baseUrl, - appVersionName = CommonLibManager.appVersionName, - appVersionCode = CommonLibManager.appVersionCode, + baseUrl = AppServiceManager.baseUrl, + appVersionName = AppServiceManager.appVersionName, + appVersionCode = AppServiceManager.appVersionCode, moduleName = ModuleName.BBPS, timeoutInSec = NAVI_BBPS_NETWORK_INFO_TIMEOUT ) diff --git a/android/navi-chat/src/main/java/com/navi/chat/utils/MockUtil.kt b/android/navi-chat/src/main/java/com/navi/chat/utils/MockUtil.kt index d2d135c44e..24b16ca650 100644 --- a/android/navi-chat/src/main/java/com/navi/chat/utils/MockUtil.kt +++ b/android/navi-chat/src/main/java/com/navi/chat/utils/MockUtil.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2022-2023 by Navi Technologies Limited + * * Copyright © 2022-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -10,8 +10,8 @@ package com.navi.chat.utils import com.google.gson.GsonBuilder import com.google.gson.JsonObject import com.google.gson.JsonParser +import com.navi.base.AppServiceManager import com.navi.chat.R -import com.navi.common.CommonLibManager import com.navi.common.network.models.RepoResult import com.navi.naviwidgets.models.NaviWidget import com.navi.naviwidgets.models.ParameterValue @@ -26,7 +26,7 @@ fun mockApiResponse( type: Type, jsonKey: String, ): RepoResult { - val inputStream = CommonLibManager.application.resources.openRawResource(R.raw.mock_api) + val inputStream = AppServiceManager.application.resources.openRawResource(R.raw.mock_api) val dataString = String(inputStream.readBytes(), StandardCharsets.UTF_8) val jsonElement = (JsonParser.parseString(dataString) as? JsonObject)?.get(jsonKey) val customGson = diff --git a/android/navi-coin/src/main/java/com/navi/coin/di/module/NetworkModule.kt b/android/navi-coin/src/main/java/com/navi/coin/di/module/NetworkModule.kt index b24792e166..621ac2d404 100644 --- a/android/navi-coin/src/main/java/com/navi/coin/di/module/NetworkModule.kt +++ b/android/navi-coin/src/main/java/com/navi/coin/di/module/NetworkModule.kt @@ -8,6 +8,7 @@ package com.navi.coin.di.module import com.google.gson.Gson +import com.navi.base.AppServiceManager import com.navi.coin.di.qualifiers.CoinRetrofit import com.navi.coin.network.CoinHttpClient import com.navi.coin.network.RetrofitService @@ -48,7 +49,7 @@ object NetworkModule { @Provides @CoinRetrofit fun providesOkHttpClient(@CoinRetrofit networkInfo: NetworkInfo): CoinHttpClient = - CoinHttpClient(networkInfo, CommonLibManager.application.applicationContext) + CoinHttpClient(networkInfo, AppServiceManager.application.applicationContext) @Singleton @Provides @Named("coinGson") fun providesDeserializer(): Gson = getGsonBuilders() @@ -61,11 +62,11 @@ object NetworkModule { ): RetrofitService { val retrofit = Retrofit.Builder() - .baseUrl(CommonLibManager.baseUrl) + .baseUrl(AppServiceManager.baseUrl) .callFactory( priorityRequestManagerFacade.getPriorityHandlerFactory( naviHttpClient.httpClientBuilder, - CommonLibManager.baseUrl + AppServiceManager.baseUrl ) ) .addConverterFactory(EmptyBodyHandlingConverterFactory(ModuleNameV2.COIN.name)) diff --git a/android/navi-coin/src/main/java/com/navi/coin/utils/CommonUtils.kt b/android/navi-coin/src/main/java/com/navi/coin/utils/CommonUtils.kt index 11d6180e63..481e3af16a 100644 --- a/android/navi-coin/src/main/java/com/navi/coin/utils/CommonUtils.kt +++ b/android/navi-coin/src/main/java/com/navi/coin/utils/CommonUtils.kt @@ -15,10 +15,10 @@ import androidx.compose.ui.unit.sp import coil.imageLoader import coil.request.CachePolicy import coil.request.ImageRequest +import com.navi.base.AppServiceManager import com.navi.base.utils.isNull import com.navi.coin.ui.activity.CoinBaseActivity import com.navi.coin.utils.ext.filterEntries -import com.navi.common.CommonLibManager import com.navi.common.forge.model.ScreenStructure import com.navi.common.navigation.NavArgs import com.navi.common.navigation.NavHostControllerOwner @@ -67,7 +67,7 @@ fun setSpannableString( suspend fun cacheCoinHomeImages(screenStructure: ScreenStructure?) = withContext(Dispatchers.IO) { if (screenStructure == null) return@withContext - val context = CommonLibManager.application.applicationContext + val context = AppServiceManager.application.applicationContext val request = ImageRequest.Builder(context) .networkCachePolicy(CachePolicy.ENABLED) @@ -118,7 +118,7 @@ fun navigateTo( suspend fun cacheListOfImageUrls(imageUrls: List) = withContext(Dispatchers.IO) { - val context = CommonLibManager.application.applicationContext + val context = AppServiceManager.application.applicationContext val request = ImageRequest.Builder(context) .networkCachePolicy(CachePolicy.ENABLED) diff --git a/android/navi-coin/src/main/java/com/navi/coin/utils/mock/CoinMockUtils.kt b/android/navi-coin/src/main/java/com/navi/coin/utils/mock/CoinMockUtils.kt index 9372b0a606..ad0b94f050 100644 --- a/android/navi-coin/src/main/java/com/navi/coin/utils/mock/CoinMockUtils.kt +++ b/android/navi-coin/src/main/java/com/navi/coin/utils/mock/CoinMockUtils.kt @@ -9,15 +9,15 @@ package com.navi.coin.utils.mock import com.google.gson.JsonObject import com.google.gson.JsonParser +import com.navi.base.AppServiceManager import com.navi.coin.R -import com.navi.common.CommonLibManager import com.navi.common.network.models.RepoResult import com.navi.rr.utils.getGsonBuilders import java.lang.reflect.Type import java.nio.charset.StandardCharsets fun mockApiResponse(type: Type, jsonKey: String): RepoResult { - val inputStream = CommonLibManager.application.resources.openRawResource(R.raw.coin_mock) + val inputStream = AppServiceManager.application.resources.openRawResource(R.raw.coin_mock) val dataString = String(inputStream.readBytes(), StandardCharsets.UTF_8) val jsonElement = (JsonParser.parseString(dataString) as? JsonObject)?.get(jsonKey) return RepoResult(data = getGsonBuilders().fromJson(jsonElement, type)) diff --git a/android/navi-common/src/main/java/com/navi/common/CommonLibManager.kt b/android/navi-common/src/main/java/com/navi/common/CommonLibManager.kt index 804e76b1b4..ec4158bc5a 100644 --- a/android/navi-common/src/main/java/com/navi/common/CommonLibManager.kt +++ b/android/navi-common/src/main/java/com/navi/common/CommonLibManager.kt @@ -8,38 +8,50 @@ package com.navi.common import android.app.Application +import com.navi.base.AppServiceManager +import com.navi.base.AppServiceManager.appVersionCode +import com.navi.base.AppServiceManager.appVersionName +import com.navi.base.AppServiceManager.application +import com.navi.base.AppServiceManager.baseUrl import com.navi.base.deeplink.DeepLinkManager import com.navi.base.deeplink.listener.DeepLinkListener import com.navi.common.model.BuildConfigDetails -import com.navi.common.model.ModuleNameV2 import com.navi.common.model.NetworkInfo import com.navi.common.network.ApiConstants -import com.navi.common.network.authenticator.AuthenticationRetrofitService -import com.navi.common.network.authenticator.AuthenticatorHttpClient -import com.navi.common.network.converter.EmptyBodyHandlingConverterFactory import com.navi.common.network.retrofit.CommonHttpClient -import com.navi.common.network.retrofit.RetrofitService import com.navi.common.upi.UpiSdkHelper import okhttp3.Interceptor -import okhttp3.OkHttpClient -import retrofit2.Retrofit -import retrofit2.converter.gson.GsonConverterFactory object CommonLibManager { - lateinit var commonRetrofitService: RetrofitService - lateinit var authenticationRetrofitService: AuthenticationRetrofitService - lateinit var application: Application - lateinit var applicationId: String - lateinit var buildConfigDetails: BuildConfigDetails - lateinit var sslPinningKey: String - lateinit var baseUrl: String - lateinit var appVersionCode: String - lateinit var appVersionName: String + + lateinit var flavor: String + private lateinit var upiSdkHelper: UpiSdkHelper - lateinit var hypervergeAppId: String - lateinit var hypervergeAppKey: String - private lateinit var reactHeaderMap: Map - private lateinit var reactHeaderInterceptor: Interceptor + private val reactHeaderMap: Map by lazy { commonHttpClient.reactHeaderMapData } + private val reactHeaderInterceptor: Interceptor by lazy { + commonHttpClient.reactHeaderInterceptor + } + + val networkInfo by lazy { + NetworkInfo( + baseUrl = baseUrl, + appVersionName = appVersionName, + appVersionCode = appVersionCode, + moduleName = null, + timeoutInSec = ApiConstants.API_CONNECT_TIMEOUT_VALUE + ) + } + + val buildConfigDetails: BuildConfigDetails by lazy { + BuildConfigDetails( + baseUrl = baseUrl, + appVersionName = appVersionName, + appVersionCode = appVersionCode, + flavor = flavor + ) + } + + private val commonHttpClient by lazy { CommonHttpClient(networkInfo, application) } fun init( application: Application, @@ -54,77 +66,19 @@ object CommonLibManager { hypervergeAppId: String, hypervergeAppKey: String, ) { - this.sslPinningKey = sslPinningKey - this.baseUrl = baseUrl - this.appVersionCode = appVersionCode - this.appVersionName = appVersionName this.upiSdkHelper = upiSdkHelper - this.hypervergeAppId = hypervergeAppId - this.hypervergeAppKey = hypervergeAppKey - CommonLibManager.application = application + this.flavor = flavor DeepLinkManager.init(listener) - - val networkInfo = - NetworkInfo( - baseUrl = baseUrl, - appVersionName = appVersionName, - appVersionCode = appVersionCode, - moduleName = null, - timeoutInSec = ApiConstants.API_CONNECT_TIMEOUT_VALUE - ) - - val commonHttpClient = CommonHttpClient(networkInfo, application) - commonRetrofitService = - createRetrofitService( - baseUrl, - CommonHttpClient(networkInfo, application).httpClientBuilder - ) - this.applicationId = applicationId - this.reactHeaderMap = commonHttpClient.reactHeaderMapData - this.reactHeaderInterceptor = commonHttpClient.reactHeaderInterceptor - - authenticationRetrofitService = - createAuthenticationRetrofitService( - baseUrl, - AuthenticatorHttpClient(networkInfo, application).httpClientBuilder - ) - - this.buildConfigDetails = - BuildConfigDetails( - baseUrl = baseUrl, - appVersionName = appVersionName, - appVersionCode = appVersionCode, - flavor = flavor - ) - this.applicationId = applicationId - } - - private fun createRetrofitService( - baseUrl: String, - okttpClientBuilder: OkHttpClient.Builder - ): RetrofitService { - val retrofitClient = - Retrofit.Builder() - .baseUrl(baseUrl) - .addConverterFactory(EmptyBodyHandlingConverterFactory(ModuleNameV2.COMMON.name)) - .addConverterFactory(GsonConverterFactory.create()) - .client(okttpClientBuilder.build()) - .build() - return retrofitClient.create(RetrofitService::class.java) - } - - private fun createAuthenticationRetrofitService( - baseUrl: String, - okttpClientBuilder: OkHttpClient.Builder - ): AuthenticationRetrofitService { - val retrofitClient = - Retrofit.Builder() - .baseUrl(baseUrl) - .addConverterFactory(EmptyBodyHandlingConverterFactory(ModuleNameV2.COMMON.name)) - .addConverterFactory(GsonConverterFactory.create()) - .client(okttpClientBuilder.build()) - .build() - return retrofitClient.create(AuthenticationRetrofitService::class.java) + AppServiceManager.init( + application = application, + baseUrl = baseUrl, + appVersionName = appVersionName, + appVersionCode = appVersionCode, + applicationId = applicationId, + sslPinningKey = sslPinningKey, + hypervergeAppId = hypervergeAppId, + hypervergeAppKey = hypervergeAppKey, + ) } fun getUpiSdkHelper(): UpiSdkHelper { @@ -138,8 +92,4 @@ object CommonLibManager { fun getHeaderInterceptorForReact(): Interceptor { return reactHeaderInterceptor } - - fun isBaseUrlInitialized(): Boolean { - return this::baseUrl.isInitialized - } } diff --git a/android/navi-common/src/main/java/com/navi/common/CommonRetrofitProvider.kt b/android/navi-common/src/main/java/com/navi/common/CommonRetrofitProvider.kt new file mode 100644 index 0000000000..300f96eb66 --- /dev/null +++ b/android/navi-common/src/main/java/com/navi/common/CommonRetrofitProvider.kt @@ -0,0 +1,63 @@ +/* + * + * * Copyright © 2024 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.navi.common + +import com.navi.base.AppServiceManager.application +import com.navi.base.AppServiceManager.baseUrl +import com.navi.common.CommonLibManager.networkInfo +import com.navi.common.model.ModuleNameV2 +import com.navi.common.network.authenticator.AuthenticationRetrofitService +import com.navi.common.network.authenticator.AuthenticatorHttpClient +import com.navi.common.network.converter.EmptyBodyHandlingConverterFactory +import com.navi.common.network.retrofit.CommonHttpClient +import com.navi.common.network.retrofit.RetrofitService +import okhttp3.OkHttpClient +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory + +object CommonRetrofitProvider { + + val commonRetrofitService: RetrofitService by lazy { + createRetrofitService(baseUrl, CommonHttpClient(networkInfo, application).httpClientBuilder) + } + + val authenticationRetrofitService: AuthenticationRetrofitService by lazy { + createAuthenticationRetrofitService( + baseUrl, + AuthenticatorHttpClient(networkInfo, application).httpClientBuilder + ) + } + + private fun createRetrofitService( + baseUrl: String, + okHttpClientBuilder: OkHttpClient.Builder + ): RetrofitService { + val retrofitClient = + Retrofit.Builder() + .baseUrl(baseUrl) + .addConverterFactory(EmptyBodyHandlingConverterFactory(ModuleNameV2.COMMON.name)) + .addConverterFactory(GsonConverterFactory.create()) + .client(okHttpClientBuilder.build()) + .build() + return retrofitClient.create(RetrofitService::class.java) + } + + private fun createAuthenticationRetrofitService( + baseUrl: String, + okHttpClientBuilder: OkHttpClient.Builder + ): AuthenticationRetrofitService { + val retrofitClient = + Retrofit.Builder() + .baseUrl(baseUrl) + .addConverterFactory(EmptyBodyHandlingConverterFactory(ModuleNameV2.COMMON.name)) + .addConverterFactory(GsonConverterFactory.create()) + .client(okHttpClientBuilder.build()) + .build() + return retrofitClient.create(AuthenticationRetrofitService::class.java) + } +} 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 fb33b0edb8..c09c54f3f5 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 @@ -17,7 +17,7 @@ import com.navi.common.R object FirebaseRemoteConfigHelper { - private lateinit var remoteConfig: FirebaseRemoteConfig + private val remoteConfig: FirebaseRemoteConfig by lazy { getFirebaseRemoteConfig() } private const val CONFIG_SYNC_INTERVAL: Long = 60 * 60 const val FRONT_LAYER_UPPER_CONTENT_LENGTH = "FRONT_LAYER_UPPER_CONTENT_LENGTH" @@ -199,10 +199,6 @@ object FirebaseRemoteConfigHelper { const val RETRY_INTERCEPTOR_ENABLED = "RETRY_INTERCEPTOR_ENABLED" - fun init() { - remoteConfig = getFirebaseRemoteConfig() - } - private fun getFirebaseRemoteConfig(): FirebaseRemoteConfig { val remoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { diff --git a/android/navi-common/src/main/java/com/navi/common/managers/NaviLocationManager.kt b/android/navi-common/src/main/java/com/navi/common/managers/NaviLocationManager.kt index 6a80c48c81..632951e5fa 100644 --- a/android/navi-common/src/main/java/com/navi/common/managers/NaviLocationManager.kt +++ b/android/navi-common/src/main/java/com/navi/common/managers/NaviLocationManager.kt @@ -34,6 +34,7 @@ import com.navi.analytics.model.LocationPrecision import com.navi.analytics.model.UserLocation import com.navi.analytics.utils.NaviTrackEvent import com.navi.analytics.utils.NaviTrackEvent.trackEventOnClickStream +import com.navi.base.AppServiceManager import com.navi.base.sharedpref.CommonPrefConstants.IS_LOCATION_DATA_POST import com.navi.base.sharedpref.CommonPrefConstants.IS_MOCK_LOCATION import com.navi.base.sharedpref.CommonPrefConstants.LOCATION_UPDATE_ENABLED @@ -43,7 +44,6 @@ import com.navi.base.utils.orElse import com.navi.base.utils.orFalse import com.navi.base.utils.orZero import com.navi.base.utils.toDoubleWithSafe -import com.navi.common.CommonLibManager import com.navi.common.R import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper import com.navi.common.geocoding.FetchGeocodingUseCase @@ -62,7 +62,7 @@ import kotlinx.coroutines.launch import timber.log.Timber class NaviLocationManager( - val applicationContext: Context? = CommonLibManager.application, + val applicationContext: Context? = AppServiceManager.application, val forceUpdateLocation: Boolean = false ) : Application.ActivityLifecycleCallbacks { private val fusedLocationClient = diff --git a/android/navi-common/src/main/java/com/navi/common/model/Money.kt b/android/navi-common/src/main/java/com/navi/common/model/Money.kt index 1def82360d..5961d58a92 100644 --- a/android/navi-common/src/main/java/com/navi/common/model/Money.kt +++ b/android/navi-common/src/main/java/com/navi/common/model/Money.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2019-2023 by Navi Technologies Limited + * * Copyright © 2019-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -9,7 +9,7 @@ package com.navi.common.model import android.os.Parcelable import com.google.gson.annotations.SerializedName -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.R import kotlinx.parcelize.Parcelize @@ -22,7 +22,7 @@ data class Money( fun getDisplayAmount(): String = "$symbol ${String.format( - CommonLibManager.application.resources.getString(R.string.price_double_no_prec), + AppServiceManager.application.resources.getString(R.string.price_double_no_prec), amount )}" } diff --git a/android/navi-common/src/main/java/com/navi/common/network/NetworkUtil.kt b/android/navi-common/src/main/java/com/navi/common/network/NetworkUtil.kt index adb146fdf0..fbe24f3f18 100644 --- a/android/navi-common/src/main/java/com/navi/common/network/NetworkUtil.kt +++ b/android/navi-common/src/main/java/com/navi/common/network/NetworkUtil.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2023 by Navi Technologies Limited + * * Copyright © 2023-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -10,8 +10,8 @@ package com.navi.common.network import com.google.gson.JsonParseException import com.navi.analytics.utils.NaviAnalyticsHelper import com.navi.analytics.utils.NaviTrackEvent +import com.navi.base.AppServiceManager import com.navi.base.utils.BaseUtils -import com.navi.common.CommonLibManager import com.navi.common.constants.NETWORK_CRASH import com.navi.common.network.models.ErrorMessage import com.navi.common.network.models.GenericResponse @@ -33,7 +33,7 @@ fun handleException(e: Throwable, tag: String? = null): ErrorMessage { Timber.d(e, "Failure during processing") NaviAnalyticsHelper.recordException(e) val errorMessage = ErrorMessage() - if (!BaseUtils.isNetworkAvailable(CommonLibManager.application)) { + if (!BaseUtils.isNetworkAvailable(AppServiceManager.application)) { errorMessage.statusCode = ApiConstants.NO_INTERNET errorMessage.errorTag = tag ?: ApiErrorTagType.NO_INTERNET_ERROR.value } else if (e is ConnectException) { diff --git a/android/navi-common/src/main/java/com/navi/common/network/SSLPinningUtil.kt b/android/navi-common/src/main/java/com/navi/common/network/SSLPinningUtil.kt index 27c56787be..c5a4be53fc 100644 --- a/android/navi-common/src/main/java/com/navi/common/network/SSLPinningUtil.kt +++ b/android/navi-common/src/main/java/com/navi/common/network/SSLPinningUtil.kt @@ -8,9 +8,9 @@ package com.navi.common.network import com.navi.analytics.utils.NaviTrackEvent +import com.navi.base.AppServiceManager import com.navi.base.utils.BaseUtils import com.navi.base.utils.orTrue -import com.navi.common.CommonLibManager import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper import com.navi.common.utils.CommonUtils import java.net.URL @@ -21,7 +21,7 @@ import timber.log.Timber fun getCertificatePinner(baseUrl: String): CertificatePinner { var key = CommonUtils.getSSLKeyFromPreference() if (key == null) { - key = CommonLibManager.sslPinningKey + key = AppServiceManager.sslPinningKey CommonUtils.saveSSLKeyToPreference(key) NaviTrackEvent.trackEvent( eventName = "fetchedNewKeyFromBuildConfig", @@ -45,7 +45,7 @@ fun fetchNewKeyFromFirebaseAndRestart(): Boolean { } Timber.d("Firebase fetch key and restart") CommonUtils.saveSSLKeyToPreference(sslKeyFromRemoteConfig) - BaseUtils.triggerAppRestart(CommonLibManager.application.applicationContext) + BaseUtils.triggerAppRestart(AppServiceManager.application.applicationContext) return true } diff --git a/android/navi-common/src/main/java/com/navi/common/network/authenticator/TokenAuthenticator.kt b/android/navi-common/src/main/java/com/navi/common/network/authenticator/TokenAuthenticator.kt index 50eecb702a..12d5df08e7 100644 --- a/android/navi-common/src/main/java/com/navi/common/network/authenticator/TokenAuthenticator.kt +++ b/android/navi-common/src/main/java/com/navi/common/network/authenticator/TokenAuthenticator.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2023 by Navi Technologies Limited + * * Copyright © 2023-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -11,7 +11,7 @@ import com.navi.base.deeplink.DeepLinkManager import com.navi.base.deeplink.util.DeeplinkConstants.LOGOUT import com.navi.base.model.CtaData import com.navi.base.utils.BaseUtils -import com.navi.common.CommonLibManager +import com.navi.common.CommonRetrofitProvider import com.navi.common.network.ApiConstants.API_SUCCESS_CODE import com.navi.common.network.ApiConstants.API_UNAUTHORIZED import com.navi.common.network.BaseHttpClient @@ -132,7 +132,7 @@ private constructor( val refreshTokenApiResponse = apiResponseCallback( - CommonLibManager.authenticationRetrofitService.refreshToken( + CommonRetrofitProvider.authenticationRetrofitService.refreshToken( refreshTokenRequest = refreshTokenRequest ) ) diff --git a/android/navi-common/src/main/java/com/navi/common/network/retrofit/ResponseCallback.kt b/android/navi-common/src/main/java/com/navi/common/network/retrofit/ResponseCallback.kt index a4a9f2803d..774c3ea984 100644 --- a/android/navi-common/src/main/java/com/navi/common/network/retrofit/ResponseCallback.kt +++ b/android/navi-common/src/main/java/com/navi/common/network/retrofit/ResponseCallback.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2019-2023 by Navi Technologies Limited + * * Copyright © 2019-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -10,8 +10,8 @@ package com.navi.common.network.retrofit import com.google.firebase.crashlytics.FirebaseCrashlytics import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.navi.base.AppServiceManager import com.navi.base.utils.orZero -import com.navi.common.CommonLibManager import com.navi.common.R import com.navi.common.network.ApiConstants.API_BAD_REQUEST import com.navi.common.network.ApiConstants.API_CODE_ERROR @@ -132,22 +132,22 @@ abstract class ResponseCallback { FirebaseCrashlytics.getInstance().log("Api url logging error: ${th.message.toString()}") } if (!isNetworkAvailable() || e is ConnectException) { - errorMessage.message = CommonLibManager.application.getString(R.string.no_internet) + errorMessage.message = AppServiceManager.application.getString(R.string.no_internet) errorMessage.statusCode = NO_INTERNET } else if (e is SocketTimeoutException) { errorMessage.message = - CommonLibManager.application.getString(R.string.internet_too_slow) + AppServiceManager.application.getString(R.string.internet_too_slow) errorMessage.statusCode = API_CODE_SOCKET_TIMEOUT } else if (e is SSLHandshakeException || e is SSLPeerUnverifiedException) { val isRestartNeeded = fetchNewKeyFromFirebaseAndRestart() if (isRestartNeeded.not()) { errorMessage.message = - CommonLibManager.application.getString(R.string.something_went_wrong) + AppServiceManager.application.getString(R.string.something_went_wrong) errorMessage.statusCode = API_CODE_SSL_HANDSHAKE_EXCEPTION } } else { errorMessage.message = - CommonLibManager.application.getString(R.string.something_went_wrong) + AppServiceManager.application.getString(R.string.something_went_wrong) errorMessage.statusCode = API_CODE_ERROR } result.error = errorMessage 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 3591eaa5ac..7b7e20ecb7 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 @@ -38,7 +38,6 @@ import com.google.android.play.core.appupdate.AppUpdateManager import com.google.firebase.auth.FirebaseAuth import com.navi.alfred.AlfredManager import com.navi.analytics.firebase.FcmAnalyticsUtil -import com.navi.analytics.moengage.MoengageUtil import com.navi.analytics.utils.NaviAnalyticsHelper import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.deeplink.DeepLinkManager @@ -551,7 +550,7 @@ abstract class BaseActivity : override fun onStart() { super.onStart() - MoengageUtil.showInApp(WeakReference(this)) + NaviTrackEvent.moengageUtil.showInApp(WeakReference(this)) latencyMapper = LatencyMapper(screenName) lifecycle.addObserver(latencyMapper) try { diff --git a/android/navi-common/src/main/java/com/navi/common/ui/fragment/BaseFragment.kt b/android/navi-common/src/main/java/com/navi/common/ui/fragment/BaseFragment.kt index c3e7ccbac9..bf200d5a25 100644 --- a/android/navi-common/src/main/java/com/navi/common/ui/fragment/BaseFragment.kt +++ b/android/navi-common/src/main/java/com/navi/common/ui/fragment/BaseFragment.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2019-2023 by Navi Technologies Limited + * * Copyright © 2019-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -18,7 +18,6 @@ import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.lifecycleScope import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.navi.alfred.utils.AlfredConstants.FRAGMENT_SCREEN_NAME -import com.navi.analytics.moengage.MoengageUtil import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.model.CtaData import com.navi.base.utils.orFalse @@ -217,7 +216,7 @@ abstract class BaseFragment : Fragment() { override fun onResume() { super.onResume() - context?.let { MoengageUtil.showInApp(WeakReference(it)) } + context?.let { NaviTrackEvent.moengageUtil.showInApp(WeakReference(it)) } if (arguments == null) { arguments = Bundle() } diff --git a/android/navi-common/src/main/java/com/navi/common/uitron/render/VideoViewRenderer.kt b/android/navi-common/src/main/java/com/navi/common/uitron/render/VideoViewRenderer.kt index dc41aac9bf..6e600d9924 100644 --- a/android/navi-common/src/main/java/com/navi/common/uitron/render/VideoViewRenderer.kt +++ b/android/navi-common/src/main/java/com/navi/common/uitron/render/VideoViewRenderer.kt @@ -39,8 +39,8 @@ import androidx.media3.exoplayer.source.MediaSource import androidx.media3.exoplayer.source.ProgressiveMediaSource import androidx.media3.ui.AspectRatioFrameLayout.RESIZE_MODE_ZOOM import androidx.media3.ui.PlayerView +import com.navi.base.AppServiceManager import com.navi.base.utils.orTrue -import com.navi.common.CommonLibManager import com.navi.common.media3simplecache.Media3SimpleCache import com.navi.common.uitron.model.data.VideoViewData import com.navi.common.uitron.model.property.VideoViewProperty @@ -190,7 +190,7 @@ class VideoViewRenderer(private val parentScrollState: (() -> ScrollState)? = nu @OptIn(UnstableApi::class) private fun getProgressiveMediaSource(context: Context, mediaUrl: String): MediaSource { val downloadCache = - (CommonLibManager.application as Media3SimpleCache).getMedia3SimpleCache() + (AppServiceManager.application as Media3SimpleCache).getMedia3SimpleCache() val cacheSink = CacheDataSink.Factory().setCache(downloadCache) val downstreamFactory = FileDataSource.Factory() val upstreamFactory = diff --git a/android/navi-common/src/main/java/com/navi/common/useruploaddata/utils/PermissionUtil.kt b/android/navi-common/src/main/java/com/navi/common/useruploaddata/utils/PermissionUtil.kt index 9d992e82c3..19910b8bc3 100644 --- a/android/navi-common/src/main/java/com/navi/common/useruploaddata/utils/PermissionUtil.kt +++ b/android/navi-common/src/main/java/com/navi/common/useruploaddata/utils/PermissionUtil.kt @@ -17,10 +17,10 @@ import android.provider.Telephony import android.util.Base64 import androidx.core.content.ContextCompat import com.google.gson.Gson +import com.navi.base.AppServiceManager.application import com.navi.base.utils.isNotNull import com.navi.base.utils.orFalse import com.navi.base.utils.orZero -import com.navi.common.CommonLibManager.application import com.navi.common.managers.PermissionsManager import com.navi.common.model.UploadDataAsyncResponse import com.navi.common.model.UserSms diff --git a/android/navi-common/src/main/java/com/navi/common/utils/AnimationUtils.kt b/android/navi-common/src/main/java/com/navi/common/utils/AnimationUtils.kt index a80b5a4a21..82e502e07b 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/AnimationUtils.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/AnimationUtils.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2022 by Navi Technologies Limited + * * Copyright © 2022-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -12,14 +12,14 @@ import android.view.animation.Animation import android.view.animation.Animation.AnimationListener import android.view.animation.AnimationUtils import android.view.animation.TranslateAnimation -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.R import timber.log.Timber fun setEaseInAnimation(vararg views: View, startOffset: Long? = null) { try { val animation = - AnimationUtils.loadAnimation(CommonLibManager.application, R.anim.ease_in_animation) + AnimationUtils.loadAnimation(AppServiceManager.application, R.anim.ease_in_animation) startOffset?.let { animation.startOffset = it } views.forEach { it.animation = animation diff --git a/android/navi-common/src/main/java/com/navi/common/utils/CommonDeviceUtil.kt b/android/navi-common/src/main/java/com/navi/common/utils/CommonDeviceUtil.kt index 1ec8573fb5..f47fa4242b 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/CommonDeviceUtil.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/CommonDeviceUtil.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2020-2022 by Navi Technologies Limited + * * Copyright © 2020-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -22,10 +22,10 @@ import android.provider.Settings import android.telephony.TelephonyManager import android.text.format.Formatter import android.view.WindowManager +import com.navi.base.AppServiceManager import com.navi.base.sharedpref.CommonPrefConstants.IS_MOCK_LOCATION import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.orFalse -import com.navi.common.CommonLibManager import com.navi.common.model.HardwareDetail import com.navi.common.utils.Constants.ANDROID_SMALL_CASE import com.navi.common.utils.Constants.DIMEN @@ -43,7 +43,7 @@ fun isRedmiDevice(): Boolean { val deviceId: String get() = Settings.System.getString( - CommonLibManager.application.applicationContext.contentResolver, + AppServiceManager.application.applicationContext.contentResolver, Settings.Secure.ANDROID_ID ) @@ -163,7 +163,7 @@ private fun capitalize(s: String?): String { fun getWifiName(): String? { try { val wm = - CommonLibManager.application.applicationContext.getSystemService(Context.WIFI_SERVICE) + AppServiceManager.application.applicationContext.getSystemService(Context.WIFI_SERVICE) as? WifiManager if (wm?.isWifiEnabled.orFalse()) { val wifiInfo = wm?.connectionInfo @@ -179,7 +179,7 @@ fun getWifiAddress(): String? = try { var ipAddress: String? = null val wm = - CommonLibManager.application.applicationContext.getSystemService(Context.WIFI_SERVICE) + AppServiceManager.application.applicationContext.getSystemService(Context.WIFI_SERVICE) as? WifiManager if (wm?.isWifiEnabled.orFalse()) { val wifiInfo = wm?.connectionInfo @@ -195,7 +195,7 @@ fun fetchGmails(): String? { try { val gmailsData = StringBuilder() val accounts = - AccountManager.get(CommonLibManager.application.applicationContext) + AccountManager.get(AppServiceManager.application.applicationContext) .getAccountsByType("com.google") var isCommaNeeded = false accounts.forEach { a -> @@ -219,7 +219,7 @@ fun fetchGmails(): String? { fun fetchEmails(): String? { try { val emailsData = StringBuilder() - val accounts = AccountManager.get(CommonLibManager.application.applicationContext).accounts + val accounts = AccountManager.get(AppServiceManager.application.applicationContext).accounts var isCommaNeeded = false accounts.forEach { a -> if (isCommaNeeded) emailsData.append("," + a.name) diff --git a/android/navi-common/src/main/java/com/navi/common/utils/CommonUtils.kt b/android/navi-common/src/main/java/com/navi/common/utils/CommonUtils.kt index 2c5329aeed..0222b5f25d 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/CommonUtils.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/CommonUtils.kt @@ -35,6 +35,7 @@ import com.google.accompanist.pager.PagerDefaults import com.google.accompanist.pager.PagerState import com.navi.analytics.model.UserLocation import com.navi.analytics.utils.NaviTrackEvent +import com.navi.base.AppServiceManager import com.navi.base.model.LineItem import com.navi.base.sharedpref.CommonPrefConstants import com.navi.base.sharedpref.PreferenceManager @@ -309,7 +310,7 @@ object CommonUtils { fragmentManager = activity.supportFragmentManager, screenName = screenName, activity = activity, - appVersionCode = CommonLibManager.appVersionCode, + appVersionCode = AppServiceManager.appVersionCode, externalId = PreferenceManager.getStringPreference(CommonPrefConstants.USER_EXTERNAL_ID) .toString(), diff --git a/android/navi-common/src/main/java/com/navi/common/utils/DynamicDeliveryUtil.kt b/android/navi-common/src/main/java/com/navi/common/utils/DynamicDeliveryUtil.kt index 8dcbf97ece..15629e1371 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/DynamicDeliveryUtil.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/DynamicDeliveryUtil.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2023 by Navi Technologies Limited + * * Copyright © 2023-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -10,11 +10,11 @@ package com.navi.common.utils import com.google.android.play.core.splitinstall.SplitInstallManager import com.google.android.play.core.splitinstall.SplitInstallManagerFactory import com.google.android.play.core.splitinstall.SplitInstallRequest +import com.navi.base.AppServiceManager import com.navi.base.sharedpref.PreferenceManager.getBooleanPreferenceApp import com.navi.base.sharedpref.PreferenceManager.getLongPreferenceApp import com.navi.base.sharedpref.PreferenceManager.setBooleanPreferenceApp import com.navi.base.sharedpref.PreferenceManager.setLongPreferenceApp -import com.navi.common.CommonLibManager import com.navi.common.utils.Constants.HL_DYNAMIC_MODULE_DOWNLOAD_SIZE_IN_BYTES import com.navi.common.utils.Constants.HL_DYNAMIC_MODULE_NAME import com.navi.common.utils.Constants.IS_HL_DYNAMIC_MODULE_INSTALLED @@ -22,7 +22,7 @@ import com.navi.common.utils.Constants.IS_PL_DYNAMIC_MODULE_INSTALLED import com.navi.common.utils.Constants.PL_DYNAMIC_MODULE_DOWNLOAD_SIZE_IN_BYTES import com.navi.common.utils.Constants.PL_DYNAMIC_MODULE_NAME -fun getSplitInstallManager() = SplitInstallManagerFactory.create(CommonLibManager.application) +fun getSplitInstallManager() = SplitInstallManagerFactory.create(AppServiceManager.application) fun getInstalledDynamicModules(splitInstallManager: SplitInstallManager): Set = splitInstallManager.installedModules diff --git a/android/navi-common/src/main/java/com/navi/common/utils/Ext.kt b/android/navi-common/src/main/java/com/navi/common/utils/Ext.kt index 2c1daed44c..a3b65e0804 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/Ext.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/Ext.kt @@ -46,6 +46,7 @@ import androidx.recyclerview.widget.RecyclerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.navi.analytics.utils.NaviTrackEvent +import com.navi.base.AppServiceManager import com.navi.base.model.ActionData import com.navi.base.model.CtaData import com.navi.base.model.LineItem @@ -53,7 +54,7 @@ import com.navi.base.model.StyledTextWithIconCode import com.navi.base.utils.isNotNull import com.navi.base.utils.isNull import com.navi.base.utils.orElse -import com.navi.common.CommonLibManager +import com.navi.common.CommonRetrofitProvider import com.navi.common.R import com.navi.common.customview.CustomTypefaceSpan import com.navi.common.listeners.ClickableTextListener @@ -80,7 +81,7 @@ import retrofit2.Invocation import timber.log.Timber fun retrofitService(): RetrofitService { - return CommonLibManager.commonRetrofitService + return CommonRetrofitProvider.commonRetrofitService } fun Float.half(): Float { @@ -613,7 +614,7 @@ fun String.appendStrings(vararg string: String): String { } fun File.getUri(context: Context): Uri { - return FileProvider.getUriForFile(context, "${CommonLibManager.applicationId}.provider", this) + return FileProvider.getUriForFile(context, "${AppServiceManager.applicationId}.provider", this) } /** diff --git a/android/navi-common/src/main/java/com/navi/common/utils/Utility.kt b/android/navi-common/src/main/java/com/navi/common/utils/Utility.kt index 6e9435205d..b78e6f50b8 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/Utility.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/Utility.kt @@ -30,6 +30,7 @@ import com.google.gson.GsonBuilder import com.navi.alfred.utils.log import com.navi.analytics.appsflyer.AppsFlyerUtil import com.navi.analytics.utils.NaviTrackEvent +import com.navi.base.AppServiceManager import com.navi.base.model.CtaData import com.navi.base.security.AlgorithmKeyEnum import com.navi.base.security.AppKeyHelper.getAllSignatures @@ -40,7 +41,6 @@ import com.navi.base.utils.NaviNetworkConnectivityImpl import com.navi.base.utils.orFalse import com.navi.base.utils.orTrue import com.navi.base.utils.orZero -import com.navi.common.CommonLibManager import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.FC_DISABLE import com.navi.common.model.DeviceDetail @@ -97,7 +97,7 @@ import okhttp3.RequestBody.Companion.toRequestBody fun isNetworkAvailable(): Boolean { val connectivityManager = - CommonLibManager.application.getSystemService(Context.CONNECTIVITY_SERVICE) + AppServiceManager.application.getSystemService(Context.CONNECTIVITY_SERVICE) as? ConnectivityManager return connectivityManager?.activeNetworkInfo?.isConnected.orFalse() } @@ -259,7 +259,7 @@ fun getTimerData(millisUntilFinished: Long): String { } fun getDeviceDetails(verticalScanRate: String?): DeviceDetail { - val context: Context = CommonLibManager.application + val context: Context = AppServiceManager.application val gaId = PreferenceManager.getStringPreference(GOOGLE_ADVERTISING_ID) val fcmToken = PreferenceManager.getStringPreference(FCM_TOKEN) NaviTrackEvent.trackEventOnClickStream( diff --git a/android/navi-common/src/main/java/com/navi/common/viewmodel/BaseVM.kt b/android/navi-common/src/main/java/com/navi/common/viewmodel/BaseVM.kt index e6a10fa167..1493215b92 100644 --- a/android/navi-common/src/main/java/com/navi/common/viewmodel/BaseVM.kt +++ b/android/navi-common/src/main/java/com/navi/common/viewmodel/BaseVM.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2019-2023 by Navi Technologies Limited + * * Copyright © 2019-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -10,8 +10,8 @@ package com.navi.common.viewmodel import androidx.lifecycle.MutableLiveData import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope +import com.navi.base.AppServiceManager import com.navi.base.utils.orZero -import com.navi.common.CommonLibManager import com.navi.common.R import com.navi.common.network.ApiConstants.API_BAD_GATEWAY import com.navi.common.network.ApiConstants.API_BAD_REQUEST @@ -141,7 +141,7 @@ abstract class BaseVM( API_CODE_UNKNOWN_HOST -> { Triple( getNoInternetData( - CommonLibManager.application, + AppServiceManager.application, error.statusCode, apiUrl = error.apiUrl, logMessage = error.message, @@ -154,7 +154,7 @@ abstract class BaseVM( API_CODE_SOCKET_TIMEOUT -> { Triple( getSocketTimeOutData( - CommonLibManager.application, + AppServiceManager.application, error.statusCode, apiUrl = error.apiUrl, logMessage = error.message, @@ -168,7 +168,7 @@ abstract class BaseVM( if (showFullScreenError) { Triple( getApiFailedData( - CommonLibManager.application, + AppServiceManager.application, error.statusCode, apiUrl = error.apiUrl, logMessage = error.message, @@ -181,8 +181,8 @@ abstract class BaseVM( } else { Triple( getErrorData( - CommonLibManager.application.resources.getString(R.string.okay), - CommonLibManager.application.applicationContext, + AppServiceManager.application.resources.getString(R.string.okay), + AppServiceManager.application.applicationContext, error.statusCode, apiUrl = error.apiUrl, logMessage = error.message, @@ -204,7 +204,7 @@ abstract class BaseVM( if (showFullScreenError) { Triple( getApiFailedData( - CommonLibManager.application, + AppServiceManager.application, error.statusCode, apiUrl = error.apiUrl, logMessage = error.message, @@ -217,7 +217,7 @@ abstract class BaseVM( } else { Triple( getErrorData( - context = CommonLibManager.application, + context = AppServiceManager.application, statusCode = error.statusCode, apiUrl = error.apiUrl, logMessage = error.message, @@ -233,7 +233,7 @@ abstract class BaseVM( if (isNetworkAvailable()) { Triple( getErrorData( - context = CommonLibManager.application, + context = AppServiceManager.application, statusCode = error?.statusCode, apiUrl = error?.apiUrl, logMessage = error?.message, @@ -246,7 +246,7 @@ abstract class BaseVM( } else { Triple( getNoInternetData( - CommonLibManager.application, + AppServiceManager.application, error?.statusCode, apiUrl = error?.apiUrl, logMessage = error?.message, @@ -277,7 +277,7 @@ abstract class BaseVM( } if (errors == null && warning == null) { errorResponse.postValue( - Triple(getErrorData(context = CommonLibManager.application), tag, cancelable) + Triple(getErrorData(context = AppServiceManager.application), tag, cancelable) ) } } diff --git a/android/navi-common/src/main/java/com/navi/common/viewmodel/NetworkVM.kt b/android/navi-common/src/main/java/com/navi/common/viewmodel/NetworkVM.kt index 7944674bb0..e8233a49e9 100644 --- a/android/navi-common/src/main/java/com/navi/common/viewmodel/NetworkVM.kt +++ b/android/navi-common/src/main/java/com/navi/common/viewmodel/NetworkVM.kt @@ -17,11 +17,11 @@ import android.net.Uri import androidx.core.net.toUri import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.navi.base.AppServiceManager import com.navi.base.sharedpref.CommonPrefConstants.LATEST_NETWORK_SPEED_IN_MBps import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.ifLet import com.navi.base.utils.orFalse -import com.navi.common.CommonLibManager import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper import com.navi.common.model.InternetSpeedCheckConfig import com.navi.common.utils.CommonNaviAnalytics @@ -41,7 +41,7 @@ class NetworkVM : BaseVM(false) { private var downloadStartTimeInMilli: Long? = null private var rxBytesBefore: Long? = null private val downloadDestinationPath = - cacheDirUri(SPEED_TEST_DOWNLOAD_FILE_NAME, CommonLibManager.application.applicationContext) + cacheDirUri(SPEED_TEST_DOWNLOAD_FILE_NAME, AppServiceManager.application.applicationContext) init { try { @@ -85,7 +85,7 @@ class NetworkVM : BaseVM(false) { private fun downloadFile(url: String) { val downloadManager = - CommonLibManager.application.applicationContext.getSystemService( + AppServiceManager.application.applicationContext.getSystemService( Context.DOWNLOAD_SERVICE ) as? DownloadManager val request = @@ -95,7 +95,7 @@ class NetworkVM : BaseVM(false) { DownloadManager.Request.NETWORK_WIFI or DownloadManager.Request.NETWORK_MOBILE ) .setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN) - CommonLibManager.application.applicationContext.registerReceiver( + AppServiceManager.application.applicationContext.registerReceiver( downloadCompleteReceiver, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE) ) diff --git a/android/navi-cycs/src/main/kotlin/com/navi/cycs/common/utils/CycsUtils.kt b/android/navi-cycs/src/main/kotlin/com/navi/cycs/common/utils/CycsUtils.kt index 67147efbe7..db6cdf27ad 100644 --- a/android/navi-cycs/src/main/kotlin/com/navi/cycs/common/utils/CycsUtils.kt +++ b/android/navi-cycs/src/main/kotlin/com/navi/cycs/common/utils/CycsUtils.kt @@ -10,12 +10,12 @@ package com.navi.cycs.common.utils import androidx.compose.ui.graphics.Color import com.google.gson.Gson import com.google.gson.GsonBuilder +import com.navi.base.AppServiceManager import com.navi.base.deeplink.DeepLinkManager import com.navi.base.model.CtaData import com.navi.base.model.LineItem import com.navi.base.utils.UNDERSCORE import com.navi.base.utils.isNotNullAndNotEmpty -import com.navi.common.CommonLibManager import com.navi.common.utils.Constants.APP_PLATFORM_APPLICATION_TYPE import com.navi.common.utils.registerUiTronDeSerializers import com.navi.common.utils.registerUiTronSerializer @@ -141,11 +141,11 @@ fun getLandingScreenBackButtonBottomSheetConfig( cycsActivity: CycsActivity ) = BottomSheetConfig( - title = CommonLibManager.application.getString(R.string.cycs_back_bottom_sheet_title), + title = AppServiceManager.application.getString(R.string.cycs_back_bottom_sheet_title), description = - CommonLibManager.application.getString(R.string.cycs_back_bottom_sheet_description), - primaryButtonText = CommonLibManager.application.getString(R.string.cycs_check_score), - secondaryButtonText = CommonLibManager.application.getString(R.string.cycs_yes_exit), + AppServiceManager.application.getString(R.string.cycs_back_bottom_sheet_description), + primaryButtonText = AppServiceManager.application.getString(R.string.cycs_check_score), + secondaryButtonText = AppServiceManager.application.getString(R.string.cycs_yes_exit), onPrimaryButtonClicked = { viewModel.updateBottomSheetState(state = CycsBottomSheetState.Hidden) }, diff --git a/android/navi-cycs/src/main/kotlin/com/navi/cycs/entry/CycsMainViewModel.kt b/android/navi-cycs/src/main/kotlin/com/navi/cycs/entry/CycsMainViewModel.kt index 5d6ed253b7..d798ff559c 100644 --- a/android/navi-cycs/src/main/kotlin/com/navi/cycs/entry/CycsMainViewModel.kt +++ b/android/navi-cycs/src/main/kotlin/com/navi/cycs/entry/CycsMainViewModel.kt @@ -9,6 +9,7 @@ package com.navi.cycs.entry import androidx.compose.runtime.mutableStateOf import androidx.lifecycle.viewModelScope +import com.navi.base.AppServiceManager import com.navi.base.cache.model.NaviCacheAltSourceEntity import com.navi.base.cache.model.NaviCacheEntity import com.navi.base.cache.repository.NaviCacheRepository @@ -348,7 +349,7 @@ constructor( iconId = R.drawable.ic_cycs_error_red_gradient, title = errorConfig?.title, description = errorConfig?.message, - primaryButtonText = CommonLibManager.application.getString(R.string.cycs_okay_got_it), + primaryButtonText = AppServiceManager.application.getString(R.string.cycs_okay_got_it), onPrimaryButtonClicked = { updateBottomSheetState(CycsBottomSheetState.Hidden) } ) } diff --git a/android/navi-cycs/src/main/kotlin/com/navi/cycs/network/di/CycsModule.kt b/android/navi-cycs/src/main/kotlin/com/navi/cycs/network/di/CycsModule.kt index f4861054b5..8dd144d986 100644 --- a/android/navi-cycs/src/main/kotlin/com/navi/cycs/network/di/CycsModule.kt +++ b/android/navi-cycs/src/main/kotlin/com/navi/cycs/network/di/CycsModule.kt @@ -9,7 +9,7 @@ package com.navi.cycs.network.di import android.content.Context import com.google.gson.Gson -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.model.ModuleName import com.navi.common.model.ModuleNameV2 import com.navi.common.model.NetworkInfo @@ -37,9 +37,9 @@ object CycsNetworkModule { @CycsNetworkInfo fun providesNetworkInfo(): NetworkInfo = NetworkInfo( - baseUrl = CommonLibManager.baseUrl, - appVersionName = CommonLibManager.appVersionName, - appVersionCode = CommonLibManager.appVersionCode, + baseUrl = AppServiceManager.baseUrl, + appVersionName = AppServiceManager.appVersionName, + appVersionCode = AppServiceManager.appVersionCode, moduleName = ModuleName.CYCS, timeoutInSec = CYCS_NETWORK_INFO_TIMEOUT ) diff --git a/android/navi-gold/src/main/java/com/navi/gold/di/NetworkModule.kt b/android/navi-gold/src/main/java/com/navi/gold/di/NetworkModule.kt index ab6b27b1c5..0b9c143f1d 100644 --- a/android/navi-gold/src/main/java/com/navi/gold/di/NetworkModule.kt +++ b/android/navi-gold/src/main/java/com/navi/gold/di/NetworkModule.kt @@ -9,7 +9,7 @@ package com.navi.gold.di import com.google.gson.Gson import com.google.gson.GsonBuilder -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.model.ModuleName import com.navi.common.model.NetworkInfo import com.navi.common.network.converter.EmptyBodyHandlingConverterFactory @@ -47,14 +47,15 @@ object NetworkModule { @Provides @GoldRetrofit fun providesOkHttpClient(@GoldRetrofit networkInfo: NetworkInfo): NaviHttpClient = - NaviHttpClient(networkInfo, CommonLibManager.application.applicationContext) + NaviHttpClient(networkInfo, AppServiceManager.application.applicationContext) @Singleton @Provides @SuperAppRetroFitForGold fun providesOkHttpClientForSuperApp( @SuperAppRetroFitForGold networkInfo: NetworkInfo - ): NaviHttpClient = NaviHttpClient(networkInfo, CommonLibManager.application.applicationContext) + ): NaviHttpClient = + NaviHttpClient(networkInfo, AppServiceManager.application.applicationContext) @Singleton @Provides @@ -74,7 +75,7 @@ object NetworkModule { ): RetrofitService { val retrofit = Retrofit.Builder() - .baseUrl(CommonLibManager.baseUrl) + .baseUrl(AppServiceManager.baseUrl) .addConverterFactory(EmptyBodyHandlingConverterFactory(ModuleName.KUBER.name)) .addConverterFactory(GsonConverterFactory.create(deserializer)) .client(naviHttpClient.httpClientBuilder.build()) @@ -91,7 +92,7 @@ object NetworkModule { ): RetrofitService { val retrofit = Retrofit.Builder() - .baseUrl(CommonLibManager.baseUrl) + .baseUrl(AppServiceManager.baseUrl) .addConverterFactory(EmptyBodyHandlingConverterFactory(ModuleName.KUBER.name)) .addConverterFactory(GsonConverterFactory.create(percentDeserializer)) .client(naviHttpClient.httpClientBuilder.build()) diff --git a/android/navi-gold/src/main/java/com/navi/gold/ui/CommonPermissionFragment.kt b/android/navi-gold/src/main/java/com/navi/gold/ui/CommonPermissionFragment.kt index 45b4977db2..4ed19484c8 100644 --- a/android/navi-gold/src/main/java/com/navi/gold/ui/CommonPermissionFragment.kt +++ b/android/navi-gold/src/main/java/com/navi/gold/ui/CommonPermissionFragment.kt @@ -24,6 +24,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.navi.analytics.utils.NaviTrackEvent import com.navi.analytics.utils.NaviTrackEvent.trackEvent +import com.navi.base.AppServiceManager import com.navi.base.model.ActionData import com.navi.base.sharedpref.CommonPrefConstants import com.navi.base.sharedpref.PreferenceManager @@ -32,7 +33,6 @@ import com.navi.chat.ui.activities.NaviChatActivity import com.navi.chat.utils.DIGITAL_GOLD import com.navi.chat.utils.GenericScreens import com.navi.chat.utils.NAVI_CHAT_SYSTEM_LOCAL_DATA -import com.navi.common.CommonLibManager import com.navi.common.R as CommonR import com.navi.common.decorator.TopMarginItemDecoration import com.navi.common.listeners.FragmentInterchangeListener @@ -255,7 +255,7 @@ class CommonPermissionFragment : val intent = Intent( Settings.ACTION_APPLICATION_DETAILS_SETTINGS, - Uri.parse(PACKAGE.plus(CommonLibManager.applicationId)) + Uri.parse(PACKAGE.plus(AppServiceManager.applicationId)) ) startActivity(intent) } @@ -370,7 +370,7 @@ class CommonPermissionFragment : } private fun getAlternatePermissionTilesV2(): List { - val application = CommonLibManager.application.applicationContext + val application = AppServiceManager.application.applicationContext return listOf( PermissionTile( null, diff --git a/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldHomeActivity.kt b/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldHomeActivity.kt index 4c8e5a9f5b..5c69fc8272 100644 --- a/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldHomeActivity.kt +++ b/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldHomeActivity.kt @@ -35,6 +35,7 @@ import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import com.navi.analytics.utils.NaviTrackEvent import com.navi.analytics.utils.SCREEN_NAME +import com.navi.base.AppServiceManager import com.navi.base.deeplink.DeepLinkManager import com.navi.base.deeplink.util.DeeplinkConstants.HOME import com.navi.base.model.ActionData @@ -58,7 +59,6 @@ import com.navi.chat.ui.activities.SupportScreenActivity import com.navi.chat.utils.DIGITAL_GOLD import com.navi.chat.utils.GenericScreens import com.navi.chat.utils.NAVI_CHAT_SYSTEM_LOCAL_DATA -import com.navi.common.CommonLibManager import com.navi.common.constants.COLOR_TRANSPARENT import com.navi.common.downloader.DownloadUtil import com.navi.common.enach.ProviderType @@ -1442,7 +1442,7 @@ class DigitalGoldHomeActivity : Intent( Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse( - com.navi.common.utils.Constants.PACKAGE.plus(CommonLibManager.applicationId) + com.navi.common.utils.Constants.PACKAGE.plus(AppServiceManager.applicationId) ) ) startActivity(intent) diff --git a/android/navi-gold/src/main/java/com/navi/gold/util/MockUtil.kt b/android/navi-gold/src/main/java/com/navi/gold/util/MockUtil.kt index 5c37af4bdc..55526f6dcd 100644 --- a/android/navi-gold/src/main/java/com/navi/gold/util/MockUtil.kt +++ b/android/navi-gold/src/main/java/com/navi/gold/util/MockUtil.kt @@ -10,7 +10,7 @@ package com.navi.gold.util import com.google.gson.GsonBuilder import com.google.gson.JsonObject import com.google.gson.JsonParser -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.network.models.RepoResult import com.navi.gold.R import com.navi.naviwidgets.models.NaviWidget @@ -24,7 +24,7 @@ import java.nio.charset.StandardCharsets fun mockApiResponse(type: Type, jsonKey: String): RepoResult { val inputStream = - CommonLibManager.application.applicationContext.resources.openRawResource( + AppServiceManager.application.applicationContext.resources.openRawResource( R.raw.mock_api_gold ) val dataString = String(inputStream.readBytes(), StandardCharsets.UTF_8) diff --git a/android/navi-gold/src/main/java/com/navi/gold/utils.kt b/android/navi-gold/src/main/java/com/navi/gold/utils.kt index b297b60458..58982f1d96 100644 --- a/android/navi-gold/src/main/java/com/navi/gold/utils.kt +++ b/android/navi-gold/src/main/java/com/navi/gold/utils.kt @@ -8,7 +8,7 @@ package com.navi.gold import android.graphics.drawable.GradientDrawable -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.model.ModuleName import com.navi.common.model.NetworkInfo import com.navi.design.utils.CornerRadius @@ -19,9 +19,9 @@ import com.navi.gold.util.Constants.SHOW_BOTTOM_SHEET fun getNetworkInfo(timeOutInSeconds: Long = ApiConstants.API_CONNECT_TIMEOUT_VALUE): NetworkInfo { return NetworkInfo( - baseUrl = CommonLibManager.baseUrl, - appVersionName = CommonLibManager.appVersionName, - appVersionCode = CommonLibManager.appVersionCode, + baseUrl = AppServiceManager.baseUrl, + appVersionName = AppServiceManager.appVersionName, + appVersionCode = AppServiceManager.appVersionCode, moduleName = ModuleName.KUBER, timeoutInSec = timeOutInSeconds ) @@ -31,9 +31,9 @@ fun getNetworkInfoSuperApp( timeOutInSeconds: Long = ApiConstants.API_CONNECT_TIMEOUT_VALUE ): NetworkInfo { return NetworkInfo( - baseUrl = CommonLibManager.baseUrl, - appVersionName = CommonLibManager.appVersionName, - appVersionCode = CommonLibManager.appVersionCode, + baseUrl = AppServiceManager.baseUrl, + appVersionName = AppServiceManager.appVersionName, + appVersionCode = AppServiceManager.appVersionCode, moduleName = null, timeoutInSec = timeOutInSeconds ) diff --git a/android/navi-hl/src/main/java/com/navi/homeloan/common/network/di/HLNetworkModule.kt b/android/navi-hl/src/main/java/com/navi/homeloan/common/network/di/HLNetworkModule.kt index 05103f78d4..7f35eecbaa 100644 --- a/android/navi-hl/src/main/java/com/navi/homeloan/common/network/di/HLNetworkModule.kt +++ b/android/navi-hl/src/main/java/com/navi/homeloan/common/network/di/HLNetworkModule.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2022 by Navi Technologies Limited + * * Copyright © 2022-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -9,7 +9,7 @@ package com.navi.homeloan.common.network.di import com.google.gson.Gson import com.google.gson.GsonBuilder -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.model.ModuleNameV2 import com.navi.common.model.NetworkInfo import com.navi.common.network.converter.EmptyBodyHandlingConverterFactory @@ -47,14 +47,15 @@ object NetworkModule { @Provides @HLRetrofit fun providesOkHttpClient(@HLRetrofit networkInfo: NetworkInfo): NaviHttpClient = - NaviHttpClient(networkInfo, CommonLibManager.application.applicationContext) + NaviHttpClient(networkInfo, AppServiceManager.application.applicationContext) @Singleton @Provides @SuperAppRetroFitForHL fun providesOkHttpClientForSuperApp( @SuperAppRetroFitForHL networkInfo: NetworkInfo - ): NaviHttpClient = NaviHttpClient(networkInfo, CommonLibManager.application.applicationContext) + ): NaviHttpClient = + NaviHttpClient(networkInfo, AppServiceManager.application.applicationContext) @Singleton @Provides @@ -74,7 +75,7 @@ object NetworkModule { ): RetrofitService { val retrofit = Retrofit.Builder() - .baseUrl(CommonLibManager.baseUrl) + .baseUrl(AppServiceManager.baseUrl) .addConverterFactory(EmptyBodyHandlingConverterFactory(ModuleNameV2.HL.name)) .addConverterFactory(GsonConverterFactory.create(deserializer)) .client(naviHttpClient.httpClientBuilder.build()) @@ -91,7 +92,7 @@ object NetworkModule { ): RetrofitService { val retrofit = Retrofit.Builder() - .baseUrl(CommonLibManager.baseUrl) + .baseUrl(AppServiceManager.baseUrl) .addConverterFactory(EmptyBodyHandlingConverterFactory(ModuleNameV2.HL.name)) .addConverterFactory(GsonConverterFactory.create(percentDeserializer)) .client(naviHttpClient.httpClientBuilder.build()) diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/analytics/NaviInsuranceAnalytics.kt b/android/navi-insurance/src/main/java/com/navi/insurance/analytics/NaviInsuranceAnalytics.kt index 0527e24b12..4938f6f2f7 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/analytics/NaviInsuranceAnalytics.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/analytics/NaviInsuranceAnalytics.kt @@ -14,13 +14,12 @@ import com.google.firebase.analytics.analytics import com.google.firebase.analytics.logEvent import com.google.firebase.crashlytics.FirebaseCrashlytics import com.navi.analytics.model.UserLocation -import com.navi.analytics.moengage.MoengageUtil import com.navi.analytics.utils.NaviTrackEvent +import com.navi.base.AppServiceManager import com.navi.base.model.AnalyticsEvent import com.navi.base.utils.BaseUtils import com.navi.base.utils.orFalse import com.navi.base.utils.orZero -import com.navi.common.CommonLibManager import com.navi.insurance.models.request.OfferRequest import com.navi.insurance.models.response.CustomerPolicy import com.navi.insurance.sharedpref.NaviPreferenceManager @@ -150,7 +149,7 @@ class NaviInsuranceAnalytics private constructor() { UserLocation::class.java ) userLocation?.let { - MoengageUtil.setLatLongAttribute( + NaviTrackEvent.moengageUtil.setLatLongAttribute( UserLocation(latitude = it.latitude, longitude = it.longitude), context ) @@ -169,7 +168,7 @@ class NaviInsuranceAnalytics private constructor() { eventProperties?.let { updatedEventProperties.putAll(it) } // Passing device ID for every event updatedEventProperties[InsuranceAnalyticsConstants.DEVICE_ID] = - BaseUtils.getDeviceId(applicationContext = CommonLibManager.application) + BaseUtils.getDeviceId(applicationContext = AppServiceManager.application) NaviTrackEvent.trackEvent( eventName, updatedEventProperties.toImmutableMap(), diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/custom_view/AgeDataCreator.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/custom_view/AgeDataCreator.kt index d22b9e9826..a3d70681b6 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/custom_view/AgeDataCreator.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/custom_view/AgeDataCreator.kt @@ -7,7 +7,7 @@ package com.navi.insurance.common.custom_view -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.insurance.R import com.navi.insurance.health.conversational_form.adapter.FormInputMembersAgeV3 import com.navi.insurance.models.AgeViewObj @@ -27,7 +27,7 @@ object AgeDataCreator { ages.add( AgeViewObj( age, - CommonLibManager.application.getString(R.string.years_with_number, age) + AppServiceManager.application.getString(R.string.years_with_number, age) ) ) } @@ -41,7 +41,7 @@ object AgeDataCreator { ages.add( AgeViewObj( age, - CommonLibManager.application.getString(R.string.months_with_number, age) + AppServiceManager.application.getString(R.string.months_with_number, age) ) ) } @@ -49,7 +49,7 @@ object AgeDataCreator { ages.add( AgeViewObj( age, - CommonLibManager.application.getString(R.string.years_with_number, age) + AppServiceManager.application.getString(R.string.years_with_number, age) ) ) } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/di/GiModule.kt b/android/navi-insurance/src/main/java/com/navi/insurance/di/GiModule.kt index 91a2b524c4..1ffc2444c3 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/di/GiModule.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/di/GiModule.kt @@ -7,7 +7,7 @@ package com.navi.insurance.di -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.insurance.health.repository.QuoteRepository import com.navi.insurance.location.NaviLocationManager import com.navi.insurance.models.UserLocation @@ -43,7 +43,7 @@ object GiModule { @ViewModelScoped @Provides fun provideNaviLocationManager(): NaviLocationManager { - return NaviLocationManager(CommonLibManager.application) + return NaviLocationManager(AppServiceManager.application) } } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/di/NetworkModule.kt b/android/navi-insurance/src/main/java/com/navi/insurance/di/NetworkModule.kt index de03aa1419..35d8c442d4 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/di/NetworkModule.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/di/NetworkModule.kt @@ -9,7 +9,7 @@ package com.navi.insurance.di import com.google.gson.Gson import com.google.gson.GsonBuilder -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.model.ModuleName import com.navi.common.model.NetworkInfo import com.navi.common.network.converter.EmptyBodyHandlingConverterFactory @@ -50,9 +50,9 @@ object NetworkModule { timeOutInSeconds: Long = ApiConstants.API_CONNECT_TIMEOUT_VALUE ): NetworkInfo { return NetworkInfo( - baseUrl = CommonLibManager.baseUrl, - appVersionName = CommonLibManager.appVersionName, - appVersionCode = CommonLibManager.appVersionCode, + baseUrl = AppServiceManager.baseUrl, + appVersionName = AppServiceManager.appVersionName, + appVersionCode = AppServiceManager.appVersionCode, moduleName = ModuleName.GI, timeoutInSec = timeOutInSeconds ) @@ -64,7 +64,7 @@ object NetworkModule { @Provides @GiRetroFit fun providesGiHttpClient(@GiRetroFit networkInfo: NetworkInfo): GIHttpClient = - GIHttpClient(networkInfo, CommonLibManager.application) + GIHttpClient(networkInfo, AppServiceManager.application) @Singleton @Provides @@ -74,7 +74,7 @@ object NetworkModule { @GiRetroFit deserializer: Gson ): Retrofit { return Retrofit.Builder() - .baseUrl(CommonLibManager.baseUrl) + .baseUrl(AppServiceManager.baseUrl) .addConverterFactory(EmptyBodyHandlingConverterFactory(ModuleName.GI.name)) .addConverterFactory(GsonConverterFactory.create(deserializer)) .client(naviHttpClient.httpClientBuilder.build()) diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/formbase/views/MemberAgePickerView.kt b/android/navi-insurance/src/main/java/com/navi/insurance/formbase/views/MemberAgePickerView.kt index 259c351edb..7cac2d8117 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/formbase/views/MemberAgePickerView.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/formbase/views/MemberAgePickerView.kt @@ -12,10 +12,10 @@ import android.util.AttributeSet import android.view.View import androidx.databinding.ViewDataBinding import androidx.fragment.app.Fragment +import com.navi.base.AppServiceManager import com.navi.base.model.CtaData import com.navi.base.model.CtaType import com.navi.base.utils.orTrue -import com.navi.common.CommonLibManager import com.navi.insurance.R import com.navi.insurance.common.custom_view.AgePickerCustomView import com.navi.insurance.common.models.AgeData @@ -136,7 +136,7 @@ class MemberAgePickerView(context: Context, attributeSet: AttributeSet? = null) ages.add( AgeViewObj( age, - CommonLibManager.application.getString(R.string.years_with_number, age) + AppServiceManager.application.getString(R.string.years_with_number, age) ) ) } 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 724b71bda1..f7380b1521 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 @@ -26,7 +26,6 @@ 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.moengage.MoengageUtil import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.deeplink.DeepLinkManager import com.navi.base.deeplink.util.DeeplinkConstants @@ -233,7 +232,7 @@ abstract class BaseActivity : AppCompatActivity() { override fun onStart() { super.onStart() - MoengageUtil.showInApp(WeakReference(this)) + NaviTrackEvent.moengageUtil.showInApp(WeakReference(this)) } override fun onResume() { diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/BaseFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/BaseFragment.kt index d08b416abc..9ac31075ec 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/BaseFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/BaseFragment.kt @@ -20,7 +20,6 @@ import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.navi.alfred.utils.AlfredConstants.FRAGMENT_SCREEN_NAME -import com.navi.analytics.moengage.MoengageUtil import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.utils.orFalse import com.navi.base.utils.orTrue @@ -81,7 +80,7 @@ abstract class BaseFragment : Fragment() { override fun onResume() { super.onResume() - context?.let { MoengageUtil.showInApp(WeakReference(it)) } + context?.let { NaviTrackEvent.moengageUtil.showInApp(WeakReference(it)) } if (arguments == null) { arguments = Bundle() } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/viewmodel/ComparePlansVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/viewmodel/ComparePlansVM.kt index 6479449cca..8bcf4ddc00 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/viewmodel/ComparePlansVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/viewmodel/ComparePlansVM.kt @@ -9,7 +9,7 @@ package com.navi.insurance.health.viewmodel import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.insurance.R import com.navi.insurance.health.repository.QuoteRepository import com.navi.insurance.models.response.ComparePlansResponse @@ -50,7 +50,7 @@ class ComparePlansVM @Inject constructor(private val repository: QuoteRepository fun setToastError(errorMessage: String? = null) { _toastError.value = errorMessage - ?: CommonLibManager.application.applicationContext.getString( + ?: AppServiceManager.application.applicationContext.getString( R.string.something_went_wrong ) } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/viewmodel/QuoteVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/viewmodel/QuoteVM.kt index 7af08cbc5f..9b792546a6 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/viewmodel/QuoteVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/viewmodel/QuoteVM.kt @@ -12,8 +12,8 @@ import androidx.lifecycle.MutableLiveData import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.navi.analytics.utils.NaviTrackEvent +import com.navi.base.AppServiceManager import com.navi.base.model.CtaData -import com.navi.common.CommonLibManager import com.navi.common.network.models.RepoResult import com.navi.common.utils.SingleLiveEvent import com.navi.common.utils.TemporaryStorageHelper @@ -255,7 +255,7 @@ constructor(private val repository: QuoteRepository, actionHandler: ActionHandle fun setToastError(errorMessage: String? = null) { _toastError.value = errorMessage - ?: CommonLibManager.application.applicationContext.getString( + ?: AppServiceManager.application.applicationContext.getString( R.string.something_went_wrong ) } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/location/NaviLocationManager.kt b/android/navi-insurance/src/main/java/com/navi/insurance/location/NaviLocationManager.kt index 81eca745aa..7a124a3237 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/location/NaviLocationManager.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/location/NaviLocationManager.kt @@ -31,10 +31,10 @@ import com.google.android.gms.common.api.ResolvableApiException import com.google.android.gms.location.* import com.google.android.gms.tasks.Task import com.google.firebase.crashlytics.FirebaseCrashlytics +import com.navi.base.AppServiceManager import com.navi.base.utils.orFalse import com.navi.base.utils.orZero import com.navi.base.utils.toDoubleWithSafe -import com.navi.common.CommonLibManager import com.navi.insurance.analytics.InsuranceAnalyticsConstants import com.navi.insurance.analytics.NaviInsuranceAnalytics import com.navi.insurance.models.UserLocation @@ -81,7 +81,7 @@ class NaviLocationManager(private val context: Context) : Application.ActivityLi fun isLocationEnabled(): Boolean { val locationManager = - CommonLibManager.application.getSystemService(Context.LOCATION_SERVICE) + AppServiceManager.application.getSystemService(Context.LOCATION_SERVICE) as? LocationManager return locationManager?.isProviderEnabled(LocationManager.GPS_PROVIDER) ?: false } @@ -288,7 +288,7 @@ class NaviLocationManager(private val context: Context) : Application.ActivityLi this.locationUpdateCallback = callback this.isLocationNeedToPost = postLocation - val settingsClient = LocationServices.getSettingsClient(CommonLibManager.application) + val settingsClient = LocationServices.getSettingsClient(AppServiceManager.application) val locationRequest = LocationRequest().apply { priority = LocationRequest.PRIORITY_HIGH_ACCURACY @@ -310,11 +310,11 @@ class NaviLocationManager(private val context: Context) : Application.ActivityLi if ( ActivityCompat.checkSelfPermission( - CommonLibManager.application, + AppServiceManager.application, Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission( - CommonLibManager.application, + AppServiceManager.application, Manifest.permission.ACCESS_COARSE_LOCATION ) != PackageManager.PERMISSION_GRANTED ) { diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/mock_api_util/MockApiUtil.kt b/android/navi-insurance/src/main/java/com/navi/insurance/mock_api_util/MockApiUtil.kt index ec14f05a08..134bb8686d 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/mock_api_util/MockApiUtil.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/mock_api_util/MockApiUtil.kt @@ -10,7 +10,7 @@ package com.navi.insurance.mock_api_util import com.google.gson.GsonBuilder import com.google.gson.JsonObject import com.google.gson.JsonParser -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.network.models.RepoResult import com.navi.common.utils.registerUiTronDeSerializers import com.navi.insurance.R @@ -49,7 +49,7 @@ fun mockApiResponse(type: Type, jsonKey: String): RepoResult { .registerUiTronDeSerializers() .registerTypeAdapter(RightSideContentData::class.java, MultiSelectDataDeserializer()) .create() - val inputStream = CommonLibManager.application.resources.openRawResource(R.raw.mock_api) + val inputStream = AppServiceManager.application.resources.openRawResource(R.raw.mock_api) val dataString = String(inputStream.readBytes(), StandardCharsets.UTF_8) val jsonElement = (JsonParser.parseString(dataString) as? JsonObject)?.get(jsonKey) return RepoResult(statusCode = 200, data = customDeserializer.fromJson(jsonElement, type)) diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/new_hospital_experience/view/HospitalPageComposable.kt b/android/navi-insurance/src/main/java/com/navi/insurance/new_hospital_experience/view/HospitalPageComposable.kt index 8124b1041a..8f2f0a322f 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/new_hospital_experience/view/HospitalPageComposable.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/new_hospital_experience/view/HospitalPageComposable.kt @@ -104,10 +104,10 @@ import com.google.android.libraries.places.api.Places import com.google.android.libraries.places.api.model.AutocompleteSessionToken import com.google.android.libraries.places.api.net.PlacesClient import com.navi.analytics.model.UserLocation +import com.navi.base.AppServiceManager import com.navi.base.model.AnalyticsEvent import com.navi.base.utils.orFalse import com.navi.base.utils.orZero -import com.navi.common.CommonLibManager import com.navi.common.ResponseState import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.GOOGLE_MAPS_REDIRECTION_BASE_URL @@ -850,7 +850,7 @@ fun HospitalSearchResultItemComposable( val intent = Intent( Settings.ACTION_APPLICATION_DETAILS_SETTINGS, - Uri.parse(CommonConstants.PACKAGE.plus(CommonLibManager.applicationId)) + Uri.parse(CommonConstants.PACKAGE.plus(AppServiceManager.applicationId)) ) viewModel?.setRefreshOnPermissionGranted(true) fragment.context?.startActivity(intent) diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/notifications/AppNotification.kt b/android/navi-insurance/src/main/java/com/navi/insurance/notifications/AppNotification.kt index 6153f02102..fe77b5f17d 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/notifications/AppNotification.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/notifications/AppNotification.kt @@ -26,8 +26,8 @@ import com.bumptech.glide.request.target.CustomTarget import com.bumptech.glide.request.transition.Transition import com.google.firebase.crashlytics.FirebaseCrashlytics import com.navi.analytics.utils.NaviTrackEvent +import com.navi.base.AppServiceManager import com.navi.base.utils.orFalse -import com.navi.common.CommonLibManager import com.navi.common.R as CommonR import com.navi.common.pushnotification.NotificationCancelBroadcastReceiver import com.navi.common.pushnotification.NotificationConstants @@ -52,7 +52,7 @@ class AppNotification { ) { val builder: NotificationCompat.Builder = NotificationCompat.Builder( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, Channel.DEFAULT.channel ) .setContentText(message) @@ -60,7 +60,7 @@ class AppNotification { .setSmallIcon(CommonR.drawable.ic_navi_logo_white) .setLargeIcon( BitmapFactory.decodeResource( - CommonLibManager.application.resources, + AppServiceManager.application.resources, R.drawable.notifiaction_icon_large ) ) @@ -98,7 +98,7 @@ class AppNotification { builder.setOngoing(true) val actionIntent = Intent( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, NotificationCancelBroadcastReceiver::class.java ) actionIntent.putExtra(NotificationConstants.NOTIFICATION_ID, notificationId) @@ -114,7 +114,7 @@ class AppNotification { builder.setStyle(NotificationCompat.BigTextStyle().bigText(message)) notifyNotification(notificationId, builder) } else { - Glide.with(CommonLibManager.application.applicationContext) + Glide.with(AppServiceManager.application.applicationContext) .asBitmap() .load(bundle.getString(NotificationConstants.IMAGE)) .into( @@ -143,14 +143,14 @@ class AppNotification { private fun notifyNotification(notificationId: Int, builder: NotificationCompat.Builder) { val managerCompat: NotificationManagerCompat = - NotificationManagerCompat.from(CommonLibManager.application.applicationContext) + NotificationManagerCompat.from(AppServiceManager.application.applicationContext) addNotificationChannel(managerCompat) managerCompat.notify(notificationId, builder.build()) } fun cancel(notificationId: Int) { val managerCompat: NotificationManagerCompat = - NotificationManagerCompat.from(CommonLibManager.application.applicationContext) + NotificationManagerCompat.from(AppServiceManager.application.applicationContext) addNotificationChannel(managerCompat) managerCompat.cancel(notificationId) } @@ -167,7 +167,7 @@ class AppNotification { intent.action = notificationId.toString() val pendingIntent = PendingIntent.getActivity( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE @@ -180,14 +180,14 @@ class AppNotification { intent.setAction(System.currentTimeMillis().toString()) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { return PendingIntent.getBroadcast( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, 0 /* Request code */, intent, PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT ) } else { return PendingIntent.getBroadcast( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, 0 /* Request code */, intent, PendingIntent.FLAG_UPDATE_CURRENT @@ -204,7 +204,7 @@ class AppNotification { val actionText = action.getString(NotificationConstants.ACTION_TEXT) val actionUrl = action.getString(NotificationConstants.URL) val actionIntent = - Intent(CommonLibManager.application.applicationContext, DeepLinkActivity::class.java) + Intent(AppServiceManager.application.applicationContext, DeepLinkActivity::class.java) actionIntent.putExtra(NotificationConstants.NOTIFICATION_ID, notificationId) actionIntent.putExtras(bundle) actionIntent.putExtra(NotificationConstants.URL, actionUrl) @@ -214,7 +214,7 @@ class AppNotification { private fun createIntent(screen: Screen, bundle: Bundle, notificationId: Int): Intent { val intent = - Intent(CommonLibManager.application.applicationContext, DeepLinkActivity::class.java) + Intent(AppServiceManager.application.applicationContext, DeepLinkActivity::class.java) intent.data = (Uri.parse("com.navi.insurance://deeplink/" + screen.value)) intent.putExtra(NotificationConstants.DATA, bundle) intent.putExtra(NotificationConstants.NOTIFICATION_ID, notificationId) @@ -228,7 +228,7 @@ class AppNotification { val notificationChannel = NotificationChannel( Channel.DEFAULT.channel, - CommonLibManager.application.applicationContext.getString( + AppServiceManager.application.applicationContext.getString( R.string.app_display_name ), NotificationManager.IMPORTANCE_DEFAULT diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/payment/model/AutoPayStatusObj.kt b/android/navi-insurance/src/main/java/com/navi/insurance/payment/model/AutoPayStatusObj.kt index 436196153b..9020c438e3 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/payment/model/AutoPayStatusObj.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/payment/model/AutoPayStatusObj.kt @@ -8,7 +8,7 @@ package com.navi.insurance.payment.model import android.os.Parcelable -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.insurance.R import com.navi.insurance.health.activity.PaymentActivity import kotlinx.parcelize.Parcelize @@ -35,33 +35,33 @@ fun getStatusObject( if (autoPayStatus == AutoPayStatus.SUCCESS) { return AutoPayStatusObj( autoPayStatus, - CommonLibManager.application.getString(R.string.autopay_setup_successful), + AppServiceManager.application.getString(R.string.autopay_setup_successful), R.drawable.success_tick ) } else if (autoPayStatus == AutoPayStatus.PENDING) { return AutoPayStatusObj( autoPayStatus, - CommonLibManager.application.getString(R.string.autopay_setup_pending), + AppServiceManager.application.getString(R.string.autopay_setup_pending), R.drawable.ic_pending, - CommonLibManager.application.getString(R.string.autopay_setup_pending_subtext) + AppServiceManager.application.getString(R.string.autopay_setup_pending_subtext) ) } else { return if (autopayMandateType == PaymentActivity.MANDATE_TYPE_QUOTE) { AutoPayStatusObj( autoPayStatus, - CommonLibManager.application.getString( + AppServiceManager.application.getString( R.string.autopay_payment_failed_title, amount ), R.drawable.ic_error_large, - CommonLibManager.application.getString(R.string.please_try_again) + AppServiceManager.application.getString(R.string.please_try_again) ) } else { AutoPayStatusObj( autoPayStatus, - CommonLibManager.application.getString(R.string.autopay_setup_failed), + AppServiceManager.application.getString(R.string.autopay_setup_failed), R.drawable.ic_error_large, - CommonLibManager.application.getString(R.string.autopay_payment_failed_subtitle) + AppServiceManager.application.getString(R.string.autopay_payment_failed_subtitle) ) } } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/sharedpref/NaviPreferenceManager.kt b/android/navi-insurance/src/main/java/com/navi/insurance/sharedpref/NaviPreferenceManager.kt index 4fa18122de..72aedf879a 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/sharedpref/NaviPreferenceManager.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/sharedpref/NaviPreferenceManager.kt @@ -12,9 +12,9 @@ import android.content.SharedPreferences import androidx.security.crypto.EncryptedSharedPreferences import androidx.security.crypto.MasterKeys import com.google.gson.Gson +import com.navi.base.AppServiceManager import com.navi.base.utils.isNotNullAndNotEmpty import com.navi.base.utils.isNull -import com.navi.common.CommonLibManager import com.navi.insurance.util.* object NaviPreferenceManager { @@ -34,7 +34,7 @@ object NaviPreferenceManager { } private val sharedPreferences: SharedPreferences by lazy { - CommonLibManager.application.getSharedPreferences(PREFS_FILENAME, Context.MODE_PRIVATE) + AppServiceManager.application.getSharedPreferences(PREFS_FILENAME, Context.MODE_PRIVATE) } private val encryptedSharedPreferences = getEncryptedSharedPref() @@ -44,12 +44,12 @@ object NaviPreferenceManager { EncryptedSharedPreferences.create( ENCRYPTED_PREFS_FILENAME, masterKeyAlias, - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM ) } catch (e: Exception) { - CommonLibManager.application.getSharedPreferences(PREFS_FILENAME, Context.MODE_PRIVATE) + AppServiceManager.application.getSharedPreferences(PREFS_FILENAME, Context.MODE_PRIVATE) } } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/util/DownloadShareUtil.kt b/android/navi-insurance/src/main/java/com/navi/insurance/util/DownloadShareUtil.kt index 5d64030f6b..a5c1671b11 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/util/DownloadShareUtil.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/util/DownloadShareUtil.kt @@ -16,7 +16,7 @@ import android.net.Uri import android.webkit.MimeTypeMap import androidx.core.content.ContextCompat.getSystemService import androidx.core.content.FileProvider -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.insurance.R import dagger.hilt.android.qualifiers.ActivityContext import java.io.File @@ -73,7 +73,7 @@ class DownloadShareUtil @Inject constructor(@ActivityContext val context: Contex } companion object { - private val AUTHORITY = "${CommonLibManager.applicationId}.fileprovider" + private val AUTHORITY = "${AppServiceManager.applicationId}.fileprovider" private const val HI_DIRECTORY = "healthInsurance" } } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/util/Ext.kt b/android/navi-insurance/src/main/java/com/navi/insurance/util/Ext.kt index c6d37386dd..636379f28c 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/util/Ext.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/util/Ext.kt @@ -16,7 +16,7 @@ import android.view.View import android.widget.TextView import android.widget.Toast import androidx.annotation.StringRes -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.insurance.BuildConfig import com.navi.insurance.common.models.ToastInfo import com.navi.insurance.common.widgets.setData @@ -69,7 +69,7 @@ fun toast(layoutInflater: LayoutInflater, toastInfo: ToastInfo) { val textView = giCustomToastBinding.message textView.setData(toastInfo.title) - val toast = Toast(CommonLibManager.application.applicationContext) + val toast = Toast(AppServiceManager.application.applicationContext) toast.apply { setGravity(Gravity.BOTTOM, 0, 100) duration = Toast.LENGTH_LONG diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/util/Utility.kt b/android/navi-insurance/src/main/java/com/navi/insurance/util/Utility.kt index acf1b3d49d..b6fdd0d811 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/util/Utility.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/util/Utility.kt @@ -39,11 +39,11 @@ import com.google.firebase.crashlytics.FirebaseCrashlytics import com.google.gson.Gson import com.google.gson.GsonBuilder import com.google.gson.reflect.TypeToken +import com.navi.base.AppServiceManager import com.navi.base.model.CtaData import com.navi.base.model.LineItem import com.navi.base.utils.orFalse import com.navi.base.utils.orZero -import com.navi.common.CommonLibManager import com.navi.common.network.ApiConstants.API_CODE_ERROR import com.navi.common.network.ApiConstants.API_CODE_SOCKET_TIMEOUT import com.navi.common.network.ApiConstants.NO_INTERNET @@ -89,7 +89,7 @@ import timber.log.Timber val deviceId: String get() = Settings.System.getString( - CommonLibManager.application.applicationContext.contentResolver, + AppServiceManager.application.applicationContext.contentResolver, Settings.Secure.ANDROID_ID ) @@ -106,7 +106,7 @@ val decimalFormat: DecimalFormat = DecimalFormat("##,##,##,##,###.##") fun isNetworkAvailable(): Boolean { val connectivityManager = - CommonLibManager.application.getSystemService(Context.CONNECTIVITY_SERVICE) + AppServiceManager.application.getSystemService(Context.CONNECTIVITY_SERVICE) as? ConnectivityManager return connectivityManager?.activeNetworkInfo?.isConnected.orFalse() } diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/DeviceInfoProvider.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/DeviceInfoProvider.kt index 1a61e5c222..74a2b1234f 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/DeviceInfoProvider.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/DeviceInfoProvider.kt @@ -7,8 +7,8 @@ package com.navi.pay.common.utils +import com.navi.base.AppServiceManager import com.navi.base.utils.BaseUtils -import com.navi.common.CommonLibManager import com.navi.pay.common.model.view.DeviceData import com.navi.pay.common.model.view.NetworkProvider import com.navi.pay.common.repository.SharedPreferenceRepository @@ -131,7 +131,7 @@ constructor(private val sharedPreferenceRepository: SharedPreferenceRepository) val savedDeviceId = async { val deviceId = getDeviceId() - deviceId.ifBlank { BaseUtils.getDeviceId(CommonLibManager.application) } + deviceId.ifBlank { BaseUtils.getDeviceId(AppServiceManager.application) } } return@withContext DeviceData( diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/common/viewmodel/NaviPayBaseVM.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/common/viewmodel/NaviPayBaseVM.kt index 22532d88d4..1103f477a7 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/common/viewmodel/NaviPayBaseVM.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/common/viewmodel/NaviPayBaseVM.kt @@ -8,7 +8,7 @@ package com.navi.pay.common.viewmodel import androidx.lifecycle.viewModelScope -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.R as CommonR import com.navi.common.network.ApiConstants import com.navi.common.network.models.ErrorMessage @@ -135,11 +135,11 @@ abstract class NaviPayBaseVM(private val naviPayVmData: NaviPayVmData) : BaseVM( NaviPayErrorConfig( iconResId = R.drawable.ic_np_exclamation_red_border, title = - CommonLibManager.application.resources.getString( + AppServiceManager.application.resources.getString( CommonR.string.something_went_wrong ), description = - CommonLibManager.application.resources.getString( + AppServiceManager.application.resources.getString( R.string.generic_error_description ), buttonConfigs = listOf(defaultButtonConfig()), @@ -148,17 +148,17 @@ abstract class NaviPayBaseVM(private val naviPayVmData: NaviPayVmData) : BaseVM( ) fun getNoInternetErrorConfig(): NaviPayErrorConfig { - val noInternetGenericResponse = getNoInternetData(context = CommonLibManager.application) + val noInternetGenericResponse = getNoInternetData(context = AppServiceManager.application) return NaviPayErrorConfig( iconResId = R.drawable.ic_np_exclamation_red_border, title = noInternetGenericResponse.title - ?: CommonLibManager.application.getString( + ?: AppServiceManager.application.getString( R.string.navi_pay_no_internet_connection_error ), description = noInternetGenericResponse.message - ?: CommonLibManager.application.getString( + ?: AppServiceManager.application.getString( CommonR.string.check_internet_connectivity_and_try_again ), buttonConfigs = listOf(defaultButtonConfig().copy(text = "Retry")), @@ -170,9 +170,9 @@ abstract class NaviPayBaseVM(private val naviPayVmData: NaviPayVmData) : BaseVM( fun getAirplaneModeOnErrorConfig(): NaviPayErrorConfig { return NaviPayErrorConfig( iconResId = R.drawable.ic_np_exclamation_red_border, - title = CommonLibManager.application.getString(R.string.sim_card_detection_failed), + title = AppServiceManager.application.getString(R.string.sim_card_detection_failed), description = - CommonLibManager.application.getString( + AppServiceManager.application.getString( R.string.sim_card_detection_failed_description ), buttonConfigs = listOf(defaultButtonConfig()), @@ -193,9 +193,9 @@ abstract class NaviPayBaseVM(private val naviPayVmData: NaviPayVmData) : BaseVM( private fun getNoSimDetectionErrorConfig(): NaviPayErrorConfig { return NaviPayErrorConfig( iconResId = R.drawable.ic_np_exclamation_red_border, - title = CommonLibManager.application.getString(R.string.sim_card_detection_failed), + title = AppServiceManager.application.getString(R.string.sim_card_detection_failed), description = - CommonLibManager.application.getString( + AppServiceManager.application.getString( R.string.sim_card_detection_failed_description ), buttonConfigs = listOf(defaultButtonConfig()), @@ -208,9 +208,11 @@ abstract class NaviPayBaseVM(private val naviPayVmData: NaviPayVmData) : BaseVM( private fun getInvalidSimErrorConfig(): NaviPayErrorConfig { return NaviPayErrorConfig( iconResId = R.drawable.ic_np_exclamation_red_border, - title = CommonLibManager.application.getString(R.string.invalid_sim_card_error_title), + title = AppServiceManager.application.getString(R.string.invalid_sim_card_error_title), description = - CommonLibManager.application.getString(R.string.invalid_sim_card_error_description), + AppServiceManager.application.getString( + R.string.invalid_sim_card_error_description + ), buttonConfigs = listOf(defaultButtonConfig()), cancelable = false, code = "INVALID_SIM_CARD_DETECTION", @@ -220,13 +222,13 @@ abstract class NaviPayBaseVM(private val naviPayVmData: NaviPayVmData) : BaseVM( private fun defaultButtonConfig() = NaviPayErrorButtonConfig( - text = CommonLibManager.application.resources.getString(CommonR.string.okay), + text = AppServiceManager.application.resources.getString(CommonR.string.okay), type = NaviPayButtonTheme.Primary, action = NaviPayButtonAction.Dismiss ) private fun Action.toNaviPayErrorButtonConfig(): NaviPayErrorButtonConfig { - val text = title ?: CommonLibManager.application.resources.getString(CommonR.string.okay) + val text = title ?: AppServiceManager.application.resources.getString(CommonR.string.okay) val type = when (tag?.lowercase()) { CTA_THEME_PRIMARY -> NaviPayButtonTheme.Primary @@ -240,7 +242,7 @@ abstract class NaviPayBaseVM(private val naviPayVmData: NaviPayVmData) : BaseVM( else -> { if ( text.contains( - CommonLibManager.application.resources.getString(R.string.retry) + AppServiceManager.application.resources.getString(R.string.retry) ) ) NaviPayButtonAction.Retry("") diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/management/lite/util/UPILiteUtils.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/management/lite/util/UPILiteUtils.kt index 239a21b5cc..9287618390 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/management/lite/util/UPILiteUtils.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/management/lite/util/UPILiteUtils.kt @@ -16,7 +16,7 @@ import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.unit.sp -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.design.font.FontWeightEnum import com.navi.design.theme.getFontWeight import com.navi.design.theme.ttComposeFontFamily @@ -355,9 +355,9 @@ fun getBankAccountText( ) = if (isLiteAccount) { if (!isExpandableItem) { - CommonLibManager.application.getString(R.string.upi_lite) + AppServiceManager.application.getString(R.string.upi_lite) } else { - CommonLibManager.application.getString(R.string.from_upi_lite) + AppServiceManager.application.getString(R.string.from_upi_lite) } } else { bankAccount.bankName diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/model/view/QrScanModels.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/model/view/QrScanModels.kt index 5e4ef34ae9..15f0f18899 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/model/view/QrScanModels.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/model/view/QrScanModels.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2022 by Navi Technologies Limited + * * Copyright © 2022-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -8,7 +8,7 @@ package com.navi.pay.management.moneytransfer.scanpay.model.view import android.os.Parcelable -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.pay.R import com.navi.pay.management.common.sendmoney.model.view.PayeeEntity import kotlinx.parcelize.Parcelize @@ -50,9 +50,9 @@ enum class UriType { @Parcelize data class QrError( - val title: String = CommonLibManager.application.getString(R.string.navi_pay_qr_error_title), + val title: String = AppServiceManager.application.getString(R.string.navi_pay_qr_error_title), val description: String = - CommonLibManager.application.getString(R.string.navi_pay_qr_error_description) + AppServiceManager.application.getString(R.string.navi_pay_qr_error_description) ) : Parcelable @Parcelize diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/model/view/OnboardingDeviceData.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/model/view/OnboardingDeviceData.kt index 7f1984e28f..e2137c0b9e 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/model/view/OnboardingDeviceData.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/model/view/OnboardingDeviceData.kt @@ -8,12 +8,13 @@ package com.navi.pay.onboarding.binding.model.view import android.os.Parcelable +import com.navi.base.AppServiceManager import com.navi.base.utils.BaseUtils -import com.navi.common.CommonLibManager import kotlinx.parcelize.Parcelize @Parcelize data class OnboardingDeviceData( - val deviceId: String = BaseUtils.getDeviceId(applicationContext = CommonLibManager.application), - val packageName: String = CommonLibManager.application.packageName + val deviceId: String = + BaseUtils.getDeviceId(applicationContext = AppServiceManager.application), + val packageName: String = AppServiceManager.application.packageName ) : Parcelable diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/viewmodel/NaviPayOnboardingViewModel.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/viewmodel/NaviPayOnboardingViewModel.kt index bd8e06fe12..a722025361 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/viewmodel/NaviPayOnboardingViewModel.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/viewmodel/NaviPayOnboardingViewModel.kt @@ -11,10 +11,10 @@ import android.os.Build import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope import com.google.gson.reflect.TypeToken +import com.navi.base.AppServiceManager import com.navi.base.utils.BaseUtils import com.navi.base.utils.EMPTY import com.navi.base.utils.ResourceProvider -import com.navi.common.CommonLibManager import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.NAVI_PAY_MINIMUM_APP_VERSION_ALLOWED_FOR_ONBOARDING import com.navi.common.model.AppUpgradeResponse @@ -182,7 +182,7 @@ constructor( private val _simInfoList = MutableStateFlow( - NaviPayCommonUtils.getCurrentSimInfoList(context = CommonLibManager.application) + NaviPayCommonUtils.getCurrentSimInfoList(context = AppServiceManager.application) ) val simInfoList = _simInfoList.asStateFlow() diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboardingV2/viewmodel/NaviPayOnboardingViewModelV2.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboardingV2/viewmodel/NaviPayOnboardingViewModelV2.kt index 3bd506dbca..03f7daf11c 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboardingV2/viewmodel/NaviPayOnboardingViewModelV2.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboardingV2/viewmodel/NaviPayOnboardingViewModelV2.kt @@ -15,11 +15,11 @@ import androidx.annotation.StringRes import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope import com.google.gson.reflect.TypeToken +import com.navi.base.AppServiceManager import com.navi.base.cache.datastore.DataStoreInfoProvider import com.navi.base.utils.BaseUtils import com.navi.base.utils.ResourceProvider import com.navi.base.utils.orTrue -import com.navi.common.CommonLibManager import com.navi.common.di.CoroutineDispatcherProvider import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper import com.navi.common.model.AppUpgradeResponse @@ -190,7 +190,7 @@ constructor( private val _simInfoList = MutableStateFlow( - NaviPayCommonUtils.getCurrentSimInfoList(context = CommonLibManager.application) + NaviPayCommonUtils.getCurrentSimInfoList(context = AppServiceManager.application) ) private val simInfoList = _simInfoList.asStateFlow() diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/utils/NaviPayMockUtils.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/utils/NaviPayMockUtils.kt index b4db01149d..7c694a5f4d 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/utils/NaviPayMockUtils.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/utils/NaviPayMockUtils.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2022 by Navi Technologies Limited + * * Copyright © 2022-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -9,7 +9,7 @@ package com.navi.pay.utils import com.google.gson.JsonObject import com.google.gson.JsonParser -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.network.models.ErrorMessage import com.navi.common.network.models.RepoResult import com.navi.pay.R @@ -18,7 +18,7 @@ import java.lang.reflect.Type import java.nio.charset.StandardCharsets fun mockApiResponse(type: Type, jsonKey: String): RepoResult { - val inputStream = CommonLibManager.application.resources.openRawResource(R.raw.navi_pay_mock) + val inputStream = AppServiceManager.application.resources.openRawResource(R.raw.navi_pay_mock) val dataString = String(inputStream.readBytes(), StandardCharsets.UTF_8) val jsonElement = (JsonParser.parseString(dataString) as? JsonObject)?.get(jsonKey) return RepoResult(naviPayGsonBuilder.fromJson(jsonElement, type)) diff --git a/android/navi-payment/src/main/java/com/navi/payment/network/di/PaymentNetworkModule.kt b/android/navi-payment/src/main/java/com/navi/payment/network/di/PaymentNetworkModule.kt index 26087f2072..ac0bf07699 100644 --- a/android/navi-payment/src/main/java/com/navi/payment/network/di/PaymentNetworkModule.kt +++ b/android/navi-payment/src/main/java/com/navi/payment/network/di/PaymentNetworkModule.kt @@ -9,6 +9,7 @@ package com.navi.payment.network.di import com.google.gson.Gson import com.google.gson.GsonBuilder +import com.navi.base.AppServiceManager import com.navi.base.utils.BaseUtils import com.navi.common.CommonLibManager import com.navi.common.model.ModuleNameV2 @@ -57,8 +58,8 @@ object PaymentNetworkModule { timeOutInSeconds: Long = ApiConstants.API_CONNECT_TIMEOUT_VALUE ): NetworkInfo { return NetworkInfo( - appVersionName = CommonLibManager.appVersionName, - appVersionCode = CommonLibManager.appVersionCode, + appVersionName = AppServiceManager.appVersionName, + appVersionCode = AppServiceManager.appVersionCode, timeoutInSec = timeOutInSeconds ) } @@ -72,7 +73,7 @@ object PaymentNetworkModule { @Provides @PaymentsSdkRetrofit fun providesOkHttpClient(@PaymentsSdkRetrofit networkInfo: NetworkInfo): NaviHttpClient = - NaviHttpClient(networkInfo, CommonLibManager.application) + NaviHttpClient(networkInfo, AppServiceManager.application) @Singleton @Provides @@ -82,7 +83,7 @@ object PaymentNetworkModule { @PaymentsSdkRetrofit deserializer: Gson ): Retrofit { return Retrofit.Builder() - .baseUrl(CommonLibManager.baseUrl) + .baseUrl(AppServiceManager.baseUrl) .addConverterFactory( EmptyBodyHandlingConverterFactory(ModuleNameV2.NAVI_PAYMENT_SCREEN.name) ) @@ -136,8 +137,8 @@ object PaymentNetworkModule { */ fun getPaymentRetrofitService(): RetrofitService { val updatedBaseUrl = - if (CommonLibManager.isBaseUrlInitialized()) { - CommonLibManager.baseUrl + if (AppServiceManager.isBaseUrlInitialized()) { + AppServiceManager.baseUrl } else { BaseUtils.getUpdatedBaseUrl() } @@ -149,7 +150,7 @@ object PaymentNetworkModule { ) .addConverterFactory(GsonConverterFactory.create(providesPaymentDeserializer())) .client( - NaviHttpClient(getNetworkInfo(), CommonLibManager.application) + NaviHttpClient(getNetworkInfo(), AppServiceManager.application) .httpClientBuilder .build() ) diff --git a/android/navi-payment/src/main/java/com/navi/payment/utils/MockUtil.kt b/android/navi-payment/src/main/java/com/navi/payment/utils/MockUtil.kt index 4f1a5a04a2..84c1fab26a 100644 --- a/android/navi-payment/src/main/java/com/navi/payment/utils/MockUtil.kt +++ b/android/navi-payment/src/main/java/com/navi/payment/utils/MockUtil.kt @@ -12,7 +12,7 @@ import com.google.gson.GsonBuilder import com.google.gson.JsonElement import com.google.gson.JsonObject import com.google.gson.JsonParser -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.utils.registerUiTronDeSerializers import com.navi.payment.R import com.navi.payment.model.common.GenericPaymentResponse @@ -34,7 +34,7 @@ fun mockApiResponse( jsonKey: String, @RawRes mockRscId: Int = R.raw.payments_mock ): GenericPaymentResponse { - val inputStream = CommonLibManager.application.resources.openRawResource(R.raw.payments_mock) + val inputStream = AppServiceManager.application.resources.openRawResource(R.raw.payments_mock) val dataString = String(inputStream.readBytes(), StandardCharsets.UTF_8) val jsonElement = (JsonParser.parseString(dataString) as? JsonObject)?.get(jsonKey) val customGson = @@ -59,7 +59,7 @@ fun mockThirdPartyApiResponse( jsonKey: String, @RawRes mockRscId: Int = R.raw.payments_mock ): JsonElement? { - val inputStream = CommonLibManager.application.resources.openRawResource(mockRscId) + val inputStream = AppServiceManager.application.resources.openRawResource(mockRscId) val dataString = String(inputStream.readBytes(), StandardCharsets.UTF_8) return (JsonParser.parseString(dataString) as? JsonObject)?.get(jsonKey) } diff --git a/android/navi-payment/src/main/java/com/navi/payment/utils/Utils.kt b/android/navi-payment/src/main/java/com/navi/payment/utils/Utils.kt index 77b5cb9c7b..56b461719d 100644 --- a/android/navi-payment/src/main/java/com/navi/payment/utils/Utils.kt +++ b/android/navi-payment/src/main/java/com/navi/payment/utils/Utils.kt @@ -11,13 +11,13 @@ import android.content.Context import com.cashfree.pg.ui.api.CFPaymentComponent import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.navi.base.AppServiceManager import com.navi.base.model.ActionData import com.navi.base.model.CtaData import com.navi.base.utils.BaseUtils import com.navi.base.utils.NetWatchManger import com.navi.base.utils.orFalse import com.navi.base.utils.orZero -import com.navi.common.CommonLibManager import com.navi.common.model.common.ErrorLog import com.navi.common.utils.CommonUtils import com.navi.payment.R @@ -48,11 +48,11 @@ fun getErrorData( actions = listOf( ActionData( - title = actionTitle ?: CommonLibManager.application.getString(R.string.retry) + title = actionTitle ?: AppServiceManager.application.getString(R.string.retry) ) ), - message = message ?: CommonLibManager.application.getString(R.string.technical_issue), - title = title ?: CommonLibManager.application.getString(R.string.something_went_wrong), + message = message ?: AppServiceManager.application.getString(R.string.technical_issue), + title = title ?: AppServiceManager.application.getString(R.string.something_went_wrong), statusCode = statusCode ) } @@ -178,19 +178,19 @@ private fun handleResponse( } private fun handleException(e: Exception): GenericPaymentResponse { - var errorTitle = CommonLibManager.application.getString(R.string.something_went_wrong) - var errorMessage = CommonLibManager.application.getString(R.string.technical_issue) - var actionTitle = CommonLibManager.application.getString(R.string.retry) + var errorTitle = AppServiceManager.application.getString(R.string.something_went_wrong) + var errorMessage = AppServiceManager.application.getString(R.string.technical_issue) + var actionTitle = AppServiceManager.application.getString(R.string.retry) var statusCode = ApiConstants.API_CODE_ERROR - if (!BaseUtils.isNetworkAvailable(CommonLibManager.application) || e is ConnectException) { - errorTitle = CommonLibManager.application.getString(R.string.no_internet) - errorMessage = CommonLibManager.application.getString(R.string.check_internet_connectivity) - actionTitle = CommonLibManager.application.getString(R.string.okay) + if (!BaseUtils.isNetworkAvailable(AppServiceManager.application) || e is ConnectException) { + errorTitle = AppServiceManager.application.getString(R.string.no_internet) + errorMessage = AppServiceManager.application.getString(R.string.check_internet_connectivity) + actionTitle = AppServiceManager.application.getString(R.string.okay) statusCode = ApiConstants.NO_INTERNET } else if (e is SocketTimeoutException) { - errorTitle = CommonLibManager.application.getString(R.string.internet_too_slow) - errorMessage = CommonLibManager.application.getString(R.string.check_internet_connectivity) - actionTitle = CommonLibManager.application.getString(R.string.okay) + errorTitle = AppServiceManager.application.getString(R.string.internet_too_slow) + errorMessage = AppServiceManager.application.getString(R.string.check_internet_connectivity) + actionTitle = AppServiceManager.application.getString(R.string.okay) statusCode = ApiConstants.API_CODE_SOCKET_TIMEOUT } return GenericPaymentResponse( diff --git a/android/navi-payment/src/main/java/com/navi/paymentclients/repo/lending/PlPaymentRepo.kt b/android/navi-payment/src/main/java/com/navi/paymentclients/repo/lending/PlPaymentRepo.kt index 3666de2d51..2e06fc3690 100644 --- a/android/navi-payment/src/main/java/com/navi/paymentclients/repo/lending/PlPaymentRepo.kt +++ b/android/navi-payment/src/main/java/com/navi/paymentclients/repo/lending/PlPaymentRepo.kt @@ -9,9 +9,9 @@ package com.navi.paymentclients.repo.lending import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.navi.base.AppServiceManager import com.navi.base.utils.BaseUtils import com.navi.base.utils.orZero -import com.navi.common.CommonLibManager import com.navi.common.model.ModuleName import com.navi.common.model.UploadDataAsyncResponse import com.navi.payment.R @@ -100,21 +100,21 @@ constructor(@PaymentsSdkRetrofit private val retrofitService: ClientRetrofitServ } private fun handleException(e: Exception): GenericPaymentResponse { - var errorTitle = CommonLibManager.application.getString(R.string.something_went_wrong) - var errorMessage = CommonLibManager.application.getString(R.string.technical_issue) - var actionTitle = CommonLibManager.application.getString(R.string.retry) + var errorTitle = AppServiceManager.application.getString(R.string.something_went_wrong) + var errorMessage = AppServiceManager.application.getString(R.string.technical_issue) + var actionTitle = AppServiceManager.application.getString(R.string.retry) var statusCode = ApiConstants.API_CODE_ERROR - if (!BaseUtils.isNetworkAvailable(CommonLibManager.application) || e is ConnectException) { - errorTitle = CommonLibManager.application.getString(R.string.no_internet) + if (!BaseUtils.isNetworkAvailable(AppServiceManager.application) || e is ConnectException) { + errorTitle = AppServiceManager.application.getString(R.string.no_internet) errorMessage = - CommonLibManager.application.getString(R.string.check_internet_connectivity) - actionTitle = CommonLibManager.application.getString(R.string.okay) + AppServiceManager.application.getString(R.string.check_internet_connectivity) + actionTitle = AppServiceManager.application.getString(R.string.okay) statusCode = ApiConstants.NO_INTERNET } else if (e is SocketTimeoutException) { - errorTitle = CommonLibManager.application.getString(R.string.internet_too_slow) + errorTitle = AppServiceManager.application.getString(R.string.internet_too_slow) errorMessage = - CommonLibManager.application.getString(R.string.check_internet_connectivity) - actionTitle = CommonLibManager.application.getString(R.string.okay) + AppServiceManager.application.getString(R.string.check_internet_connectivity) + actionTitle = AppServiceManager.application.getString(R.string.okay) statusCode = ApiConstants.API_CODE_SOCKET_TIMEOUT } return GenericPaymentResponse( diff --git a/android/navi-rr/src/main/java/com/navi/rr/common/network/di/NetworkModule.kt b/android/navi-rr/src/main/java/com/navi/rr/common/network/di/NetworkModule.kt index 65e63a5b45..4967d639fc 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/common/network/di/NetworkModule.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/common/network/di/NetworkModule.kt @@ -8,6 +8,7 @@ package com.navi.rr.common.network.di import com.google.gson.Gson +import com.navi.base.AppServiceManager import com.navi.common.CommonLibManager import com.navi.common.model.ModuleNameV2 import com.navi.common.model.NetworkInfo @@ -49,7 +50,7 @@ object NetworkModule { @Singleton @Provides fun getNaviHttpClient(@Named("rrNetworkInfo") networkInfo: NetworkInfo): NaviHttpClient = - NaviHttpClient(networkInfo, CommonLibManager.application.applicationContext) + NaviHttpClient(networkInfo, AppServiceManager.application.applicationContext) @Singleton @Provides @@ -60,11 +61,11 @@ object NetworkModule { ): RetrofitService { val retrofit = Retrofit.Builder() - .baseUrl(CommonLibManager.baseUrl) + .baseUrl(AppServiceManager.baseUrl) .callFactory( priorityRequestManagerFacade.getPriorityHandlerFactory( naviHttpClient.httpClientBuilder, - CommonLibManager.baseUrl + AppServiceManager.baseUrl ) ) .addConverterFactory(EmptyBodyHandlingConverterFactory(ModuleNameV2.REWARDS.name)) diff --git a/android/navi-rr/src/main/java/com/navi/rr/common/network/response/handlers/types/ExceptionTypes.kt b/android/navi-rr/src/main/java/com/navi/rr/common/network/response/handlers/types/ExceptionTypes.kt index 47605c591d..27951c6ea3 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/common/network/response/handlers/types/ExceptionTypes.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/common/network/response/handlers/types/ExceptionTypes.kt @@ -7,8 +7,8 @@ package com.navi.rr.common.network.response.handlers.types +import com.navi.base.AppServiceManager import com.navi.base.utils.BaseUtils -import com.navi.common.CommonLibManager import com.navi.common.network.ApiConstants.API_CODE_ERROR import com.navi.common.network.ApiConstants.NO_INTERNET import com.navi.common.network.getRequestIdFromResponse @@ -24,7 +24,7 @@ class NoInternetExceptionHandler : ExceptionHandler() { exception: Exception, response: Response>, ): RepoResult { - return if (!BaseUtils.isNetworkAvailable(CommonLibManager.application)) { + return if (!BaseUtils.isNetworkAvailable(AppServiceManager.application)) { trackApiEvent(response, NO_INTERNET) return setError( message, diff --git a/android/navi-rr/src/main/java/com/navi/rr/leaderboard/utils/LeaderboardCommonUtils.kt b/android/navi-rr/src/main/java/com/navi/rr/leaderboard/utils/LeaderboardCommonUtils.kt index 4bd21e5248..b577854492 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/leaderboard/utils/LeaderboardCommonUtils.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/leaderboard/utils/LeaderboardCommonUtils.kt @@ -12,9 +12,9 @@ import androidx.compose.ui.unit.dp import coil.imageLoader import coil.request.CachePolicy import coil.request.ImageRequest +import com.navi.base.AppServiceManager import com.navi.base.utils.EMPTY import com.navi.base.utils.isNull -import com.navi.common.CommonLibManager import com.navi.common.forge.model.ScreenStructure import com.navi.rr.leaderboard.models.HeaderScaledValues import com.navi.rr.leaderboard.models.LeaderboardListResponse @@ -96,7 +96,7 @@ object LeaderboardCommonUtils { suspend fun cacheLeaderboardScreenImages(screenStructure: ScreenStructure?) = withContext(Dispatchers.IO) { if (screenStructure == null) return@withContext - val context = CommonLibManager.application.applicationContext + val context = AppServiceManager.application.applicationContext val request = ImageRequest.Builder(context) .networkCachePolicy(CachePolicy.ENABLED) @@ -129,7 +129,7 @@ object LeaderboardCommonUtils { ) = withContext(Dispatchers.IO) { if (leaderboardListResponse == null) return@withContext - val context = CommonLibManager.application.applicationContext + val context = AppServiceManager.application.applicationContext val request = ImageRequest.Builder(context) .networkCachePolicy(CachePolicy.ENABLED) diff --git a/android/navi-rr/src/main/java/com/navi/rr/referral/utils/ReferralContactsUtil.kt b/android/navi-rr/src/main/java/com/navi/rr/referral/utils/ReferralContactsUtil.kt index 37dd83611f..d70c915efa 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/referral/utils/ReferralContactsUtil.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/referral/utils/ReferralContactsUtil.kt @@ -11,7 +11,7 @@ import android.content.Context import android.database.Cursor import android.provider.ContactsContract import androidx.core.database.getStringOrNull -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.utils.log import com.navi.rr.referral.models.ReferralContact import com.navi.rr.utils.constants.Constants.WhatsAppPkg @@ -30,7 +30,7 @@ class ReferralContactsUtil @Inject constructor() { val allContactsList = mutableListOf() allContactsCursor = executeQueryToReadAllContactsWithThumbnails( - CommonLibManager.application.applicationContext + AppServiceManager.application.applicationContext ) allContactsCursor?.run { if (!moveToFirst()) return@withContext mutableListOf() diff --git a/android/navi-rr/src/main/java/com/navi/rr/utils/MockUtil.kt b/android/navi-rr/src/main/java/com/navi/rr/utils/MockUtil.kt index 4d2fe88ef4..9fb15702e2 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/utils/MockUtil.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/utils/MockUtil.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2022-2023 by Navi Technologies Limited + * * Copyright © 2022-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -9,7 +9,7 @@ package com.navi.rr.utils import com.google.gson.JsonObject import com.google.gson.JsonParser -import com.navi.common.CommonLibManager +import com.navi.base.AppServiceManager import com.navi.common.network.models.RepoResult import com.navi.rr.R import java.lang.reflect.Type @@ -17,7 +17,9 @@ import java.nio.charset.StandardCharsets fun mockApiResponse(type: Type, jsonKey: String): RepoResult { val inputStream = - CommonLibManager.application.applicationContext.resources.openRawResource(R.raw.mock_api_rr) + AppServiceManager.application.applicationContext.resources.openRawResource( + R.raw.mock_api_rr + ) val dataString = String(inputStream.readBytes(), StandardCharsets.UTF_8) val jsonElement = (JsonParser.parseString(dataString) as? JsonObject)?.get(jsonKey) val customGson = getGsonBuilders() diff --git a/android/navi-rr/src/main/java/com/navi/rr/utils/NaviRRAnalytics.kt b/android/navi-rr/src/main/java/com/navi/rr/utils/NaviRRAnalytics.kt index 5df28b433b..dc1c7dae75 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/utils/NaviRRAnalytics.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/utils/NaviRRAnalytics.kt @@ -10,6 +10,7 @@ package com.navi.rr.utils import androidx.annotation.Keep import com.navi.analytics.appsflyer.AppsFlyerUtil import com.navi.analytics.utils.NaviTrackEvent +import com.navi.base.AppServiceManager import com.navi.base.model.ActionData import com.navi.base.model.GenericAnalyticsData import com.navi.base.model.NaviWidgetClickWithActionData @@ -17,7 +18,6 @@ import com.navi.base.sharedpref.CommonPrefConstants import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.BaseUtils import com.navi.base.utils.orZero -import com.navi.common.CommonLibManager import com.navi.common.utils.Constants.USER_LOGGED_IN import com.navi.common.utils.ERROR import java.util.concurrent.ConcurrentHashMap @@ -256,7 +256,7 @@ class NaviRRAnalytics private constructor() { isNeededForFirebase = true ) AppsFlyerUtil.instance.trackRevenue( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, "loan_approved_screen", currency, maxAmount.orEmpty() @@ -274,7 +274,7 @@ class NaviRRAnalytics private constructor() { isNeededForFirebase = true ) AppsFlyerUtil.instance.trackRevenue( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, "disbursal_success_screen", currency, amount.orZero().toString() @@ -298,7 +298,7 @@ class NaviRRAnalytics private constructor() { ) AppsFlyerUtil.instance.trackRevenue( - CommonLibManager.application.applicationContext, + AppServiceManager.application.applicationContext, "hl_loan_approved_screen", currency, maxAmount.orEmpty() diff --git a/android/navi-rr/src/main/java/com/navi/rr/utils/RRUtils.kt b/android/navi-rr/src/main/java/com/navi/rr/utils/RRUtils.kt index b0a86142fd..24836daab6 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/utils/RRUtils.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/utils/RRUtils.kt @@ -20,9 +20,9 @@ import androidx.compose.ui.unit.sp import coil.imageLoader import coil.request.CachePolicy import coil.request.ImageRequest +import com.navi.base.AppServiceManager import com.navi.base.cache.model.NaviCacheEntity import com.navi.base.utils.isNotNull -import com.navi.common.CommonLibManager import com.navi.common.forge.model.ScreenDefinition import com.navi.common.forge.model.ScreenStructure import com.navi.common.navigation.NavArgs @@ -149,7 +149,7 @@ fun openSettings(context: Context) { val intent = Intent( Settings.ACTION_APPLICATION_DETAILS_SETTINGS, - Uri.parse(Constants.PACKAGE.plus(CommonLibManager.applicationId)) + Uri.parse(Constants.PACKAGE.plus(AppServiceManager.applicationId)) ) context.startActivity(intent) } @@ -161,7 +161,7 @@ fun dpToPx(dp: Float) = dp.times(Resources.getSystem().displayMetrics.density) suspend fun cacheImages(screenStructure: ScreenStructure?) = withContext(Dispatchers.IO) { if (screenStructure == null) return@withContext - val context = CommonLibManager.application.applicationContext + val context = AppServiceManager.application.applicationContext val request = ImageRequest.Builder(context) .networkCachePolicy(CachePolicy.ENABLED) @@ -201,7 +201,7 @@ suspend fun cacheImages(screenStructure: ScreenStructure?) = suspend fun cachingPngs(screenDefinition: ScreenDefinition?) { withContext(Dispatchers.IO) { if (screenDefinition == null) return@withContext - val context = CommonLibManager.application.applicationContext + val context = AppServiceManager.application.applicationContext val request = ImageRequest.Builder(context) .networkCachePolicy(CachePolicy.ENABLED) diff --git a/android/navi_hl_dynamic/src/main/java/com/navi/hl/steps/repository/HomeLoanSelfieVerificationRepository.kt b/android/navi_hl_dynamic/src/main/java/com/navi/hl/steps/repository/HomeLoanSelfieVerificationRepository.kt index 6e85b219bc..7e29142f6d 100644 --- a/android/navi_hl_dynamic/src/main/java/com/navi/hl/steps/repository/HomeLoanSelfieVerificationRepository.kt +++ b/android/navi_hl_dynamic/src/main/java/com/navi/hl/steps/repository/HomeLoanSelfieVerificationRepository.kt @@ -1,13 +1,13 @@ /* * - * * Copyright © 2022-2023 by Navi Technologies Limited + * * Copyright © 2022-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ package com.navi.hl.steps.repository -import com.navi.common.CommonLibManager +import com.navi.common.CommonRetrofitProvider import com.navi.common.awsupload.model.AWSPresignedUrlRequest import com.navi.common.model.UploadDataAsyncResponse import com.navi.common.network.models.RepoResult @@ -30,7 +30,7 @@ class HomeLoanSelfieVerificationRepository : ResponseCallback() { suspend fun postAWSPresignedUrl(awsPresignedUrlRequest: AWSPresignedUrlRequest) = apiResponseCallback( - CommonLibManager.commonRetrofitService.postAWSPreSignedUrl(awsPresignedUrlRequest) + CommonRetrofitProvider.commonRetrofitService.postAWSPreSignedUrl(awsPresignedUrlRequest) ) suspend fun postHomeLoanSelfieRequest(