NTP-50063 | Trusted time API integration (#15508)
Co-authored-by: Kishan Kumar <kishan.kumar@navi.com>
This commit is contained in:
@@ -268,6 +268,7 @@ dependencies {
|
||||
implementation libs.accompanist.systemuicontroller
|
||||
implementation libs.android.gms.playServicesAds
|
||||
implementation libs.android.gms.playServicesAuthApiPhone
|
||||
implementation libs.android.gms.playServicesTime
|
||||
implementation libs.android.installreferrer
|
||||
implementation libs.android.material
|
||||
implementation libs.androidx.activity.activity
|
||||
|
||||
@@ -11,6 +11,7 @@ import androidx.appcompat.app.AppCompatDelegate
|
||||
import coil.ImageLoader
|
||||
import coil.ImageLoaderFactory
|
||||
import com.navi.base.cache.repository.NaviCacheRepository
|
||||
import com.navi.base.utils.TrustedTimeClientAccessor
|
||||
import com.navi.bbps.common.model.NaviBbpsManager
|
||||
import com.navi.moneymanager.common.manager.MMLibManager
|
||||
import com.navi.pay.common.setup.NaviPayManager
|
||||
@@ -47,6 +48,8 @@ open class NaviApplication : BaseApplication(), ImageLoaderFactory {
|
||||
@Inject
|
||||
lateinit var componentInitializers: Lazy<List<@JvmSuppressWildcards ComponentInitializer>>
|
||||
|
||||
@Inject lateinit var trustedTimeClientAccessor: Lazy<TrustedTimeClientAccessor>
|
||||
|
||||
@Inject lateinit var imageLoaderProvider: ImageLoaderProvider
|
||||
|
||||
private val isDifferentPackageValue: Boolean by lazy {
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2025 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.naviapp.app.initializers
|
||||
|
||||
import com.navi.base.utils.TrustedTimeAccessor
|
||||
import com.navi.common.utils.log
|
||||
import com.naviapp.app.NaviApplication
|
||||
import javax.inject.Inject
|
||||
|
||||
class TrustedTimeClientInitializer @Inject constructor() : ComponentInitializer {
|
||||
override fun initialize(application: NaviApplication) {
|
||||
application.trustedTimeClientAccessor.get().createClient().addOnCompleteListener { task ->
|
||||
if (task.isSuccessful) {
|
||||
TrustedTimeAccessor.setInstance(trustedTimeClient = task.result)
|
||||
} else {
|
||||
task.exception?.log()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -21,6 +21,7 @@ import com.naviapp.app.initializers.NetworkConfigurationInitializer
|
||||
import com.naviapp.app.initializers.NetworkStatsInitializer
|
||||
import com.naviapp.app.initializers.SdkInitializer
|
||||
import com.naviapp.app.initializers.SignalManagerInitializer
|
||||
import com.naviapp.app.initializers.TrustedTimeClientInitializer
|
||||
import com.naviapp.network.di.CoroutineScopeIO
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
@@ -63,6 +64,7 @@ object AppModule {
|
||||
signalManagerInitializer: SignalManagerInitializer,
|
||||
lottieInitializer: LottieInitializer,
|
||||
networkStatsInitializer: NetworkStatsInitializer,
|
||||
trustedTimeClientInitializer: TrustedTimeClientInitializer,
|
||||
): List<ComponentInitializer> {
|
||||
return listOf(
|
||||
sdkInitializer,
|
||||
@@ -73,6 +75,7 @@ object AppModule {
|
||||
signalManagerInitializer,
|
||||
lottieInitializer,
|
||||
networkStatsInitializer,
|
||||
trustedTimeClientInitializer,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ android-gms-playServicesAuthApiPhone = "18.1.0"
|
||||
android-gms-playServicesLocation = "21.3.0"
|
||||
android-gms-playServicesMaps = "17.0.0"
|
||||
android-gms-playServicesMlkitTextRecognition = "19.0.1"
|
||||
android-gms-playServicesTime = "16.0.1"
|
||||
android-installreferrer = "2.2"
|
||||
android-material = "1.9.0"
|
||||
android-places = "4.1.0"
|
||||
@@ -131,6 +132,7 @@ android-gms-playServicesAuthApiPhone = { module = "com.google.android.gms:play-s
|
||||
android-gms-playServicesLocation = { module = "com.google.android.gms:play-services-location", version.ref = "android-gms-playServicesLocation" }
|
||||
android-gms-playServicesMaps = { module = "com.google.android.gms:play-services-maps", version.ref = "android-gms-playServicesMaps" }
|
||||
android-gms-playServicesMlkitTextRecognition = { module = "com.google.android.gms:play-services-mlkit-text-recognition", version.ref = "android-gms-playServicesMlkitTextRecognition" }
|
||||
android-gms-playServicesTime = { module = "com.google.android.gms:play-services-time", version.ref = "android-gms-playServicesTime" }
|
||||
|
||||
android-installreferrer = { module = "com.android.installreferrer:installreferrer", version.ref = "android-installreferrer" }
|
||||
|
||||
|
||||
@@ -70,6 +70,7 @@ static def formatString(String value) {
|
||||
dependencies {
|
||||
api platform(libs.firebase.bom)
|
||||
api platform(libs.okhttp.bom)
|
||||
implementation libs.android.gms.playServicesTime
|
||||
api libs.android.play.appUpdateKtx
|
||||
api libs.android.play.featureDeliveryKtx
|
||||
api libs.android.play.reviewKtx
|
||||
|
||||
@@ -9,6 +9,9 @@ package com.navi.base.cache.di
|
||||
|
||||
import android.content.Context
|
||||
import androidx.room.Room
|
||||
import com.google.android.gms.tasks.Task
|
||||
import com.google.android.gms.time.TrustedTime
|
||||
import com.google.android.gms.time.TrustedTimeClient
|
||||
import com.google.gson.Gson
|
||||
import com.navi.base.cache.database.NaviSharedDatabase
|
||||
import com.navi.base.cache.repository.NaviCacheRepository
|
||||
@@ -22,6 +25,7 @@ import com.navi.base.utils.NaviNetworkConnectivity
|
||||
import com.navi.base.utils.NaviNetworkConnectivityImpl
|
||||
import com.navi.base.utils.ResourceProvider
|
||||
import com.navi.base.utils.ResourceProviderImpl
|
||||
import com.navi.base.utils.TrustedTimeClientAccessor
|
||||
import dagger.Binds
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
@@ -47,6 +51,18 @@ object NaviBaseModule {
|
||||
naviSharedDatabase.naviCacheDao()
|
||||
|
||||
@Provides @Singleton @NaviCommonGson fun providesGson() = Gson()
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
fun provideTrustedTimeClientAccessor(
|
||||
@ApplicationContext context: Context
|
||||
): TrustedTimeClientAccessor {
|
||||
return object : TrustedTimeClientAccessor {
|
||||
override fun createClient(): Task<TrustedTimeClient> {
|
||||
return TrustedTime.createClient(context)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Module
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2025 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.base.utils
|
||||
|
||||
import com.google.android.gms.tasks.Task
|
||||
import com.google.android.gms.time.TrustedTimeClient
|
||||
|
||||
interface TrustedTimeClientAccessor {
|
||||
fun createClient(): Task<TrustedTimeClient>
|
||||
}
|
||||
|
||||
object TrustedTimeAccessor {
|
||||
private var trustedTimeClient: TrustedTimeClient? = null
|
||||
|
||||
fun setInstance(trustedTimeClient: TrustedTimeClient) {
|
||||
this.trustedTimeClient = trustedTimeClient
|
||||
}
|
||||
|
||||
fun getCurrentTimeMillis(): Long {
|
||||
return trustedTimeClient?.computeCurrentUnixEpochMillis() ?: System.currentTimeMillis()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user