Updated on 2026-08-14
This commit is contained in:
parent
0b3914cf6a
commit
7581e22ee7
19 changed files with 784 additions and 74 deletions
|
|
@ -9,6 +9,8 @@ import com.tangem.lib.auth.devicekey.DeviceKeyManager
|
|||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.datasource.api.common.config.managers.ApiConfigsManager
|
||||
import com.tangem.datasource.local.config.environment.EnvironmentConfig
|
||||
import com.tangem.lib.auth.AuthFeatureToggles
|
||||
import com.tangem.lib.auth.session.DeviceRegistrar
|
||||
import com.tangem.domain.apptheme.GetAppThemeModeUseCase
|
||||
import com.tangem.domain.walletconnect.usecase.initialize.WcInitializeUseCase
|
||||
import com.tangem.domain.wallets.repository.WalletsRepository
|
||||
|
|
@ -52,4 +54,8 @@ interface ApplicationEntryPoint {
|
|||
fun getSendTransactionSignerInfoInterceptor(): SendTransactionSignerInfoInterceptor
|
||||
|
||||
fun getDeviceKeyManager(): DeviceKeyManager
|
||||
|
||||
fun getDeviceRegistrar(): DeviceRegistrar
|
||||
|
||||
fun getAuthFeatureToggles(): AuthFeatureToggles
|
||||
}
|
||||
|
|
@ -21,7 +21,9 @@ import com.tangem.datasource.local.config.environment.EnvironmentConfig
|
|||
import com.tangem.domain.apptheme.GetAppThemeModeUseCase
|
||||
import com.tangem.domain.common.LogConfig
|
||||
import com.tangem.domain.wallets.repository.WalletsRepository
|
||||
import com.tangem.lib.auth.AuthFeatureToggles
|
||||
import com.tangem.lib.auth.devicekey.DeviceKeyManager
|
||||
import com.tangem.lib.auth.session.DeviceRegistrar
|
||||
import com.tangem.tap.common.analytics.AnalyticsFactory
|
||||
import com.tangem.tap.common.analytics.api.AnalyticsHandlerBuilder
|
||||
import com.tangem.tap.common.analytics.handlers.BlockchainExceptionHandler
|
||||
|
|
@ -96,6 +98,12 @@ open class TangemApplication : Application(), ImageLoaderFactory, Configuration.
|
|||
private val deviceKeyManager: DeviceKeyManager
|
||||
get() = entryPoint.getDeviceKeyManager()
|
||||
|
||||
private val deviceRegistrar: DeviceRegistrar
|
||||
get() = entryPoint.getDeviceRegistrar()
|
||||
|
||||
private val authFeatureToggles: AuthFeatureToggles
|
||||
get() = entryPoint.getAuthFeatureToggles()
|
||||
|
||||
// endregion
|
||||
|
||||
private val appScope = MainScope()
|
||||
|
|
@ -136,8 +144,15 @@ open class TangemApplication : Application(), ImageLoaderFactory, Configuration.
|
|||
}
|
||||
|
||||
fun init() {
|
||||
appScope.launch {
|
||||
deviceKeyManager.generateIfMissing()
|
||||
if (authFeatureToggles.isBackendAuthenticationEnabled) {
|
||||
appScope.launch {
|
||||
// Order matters: registration reads the device public key, so it must wait for
|
||||
// generation to complete. Running them concurrently on first launch would race —
|
||||
// register() would see `DeviceKeyUnavailable` and defer to the next app launch.
|
||||
deviceKeyManager.generateIfMissing()
|
||||
deviceRegistrar.register()
|
||||
.onLeft { error -> TangemLogger.w("Device registration deferred: $error") }
|
||||
}
|
||||
}
|
||||
walletsRepository = entryPoint.getWalletsRepository()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue