Updated on 2026-08-14

This commit is contained in:
Tangem 2026-06-08 19:10:54 +03:00
parent c4cca86219
commit fd7e830082

View file

@ -1,8 +1,11 @@
package com.tangem.tap.features.hot
import com.tangem.core.analytics.api.AnalyticsExceptionHandler
import com.tangem.core.analytics.models.ExceptionAnalyticsEvent
import com.tangem.crypto.bip39.Mnemonic
import com.tangem.hot.sdk.TangemHotSdk
import com.tangem.hot.sdk.model.*
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.first
@ -16,7 +19,9 @@ import javax.inject.Singleton
* Be aware that the SDK is initialized on activity creation, so it may not be available immediately.
*/
@Singleton
class TangemHotSDKProxy @Inject constructor() : TangemHotSdk {
class TangemHotSDKProxy @Inject constructor(
private val analyticsExceptionHandler: AnalyticsExceptionHandler,
) : TangemHotSdk {
val sdkState = MutableStateFlow<TangemHotSdk?>(null)
@ -56,8 +61,15 @@ class TangemHotSDKProxy @Inject constructor() : TangemHotSdk {
callSdk { signHashes(unlockHotWallet, dataToSign) }
private suspend fun <T> callSdk(block: suspend TangemHotSdk.() -> T): T {
return withTimeout(timeMillis = 1000) {
return try {
withTimeout(timeMillis = 1000) {
sdkState.filterNotNull().first()
}.block()
} catch (e: CancellationException) {
throw e
} catch (e: Throwable) {
analyticsExceptionHandler.sendException(ExceptionAnalyticsEvent(exception = e))
throw e
}
}
}