diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/BlockchainExceptionEvent.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/BlockchainApiExceptionEvent.kt similarity index 92% rename from app/src/main/java/com/tangem/tap/common/analytics/events/BlockchainExceptionEvent.kt rename to app/src/main/java/com/tangem/tap/common/analytics/events/BlockchainApiExceptionEvent.kt index 385ab3e517..3e687ae5fd 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/events/BlockchainExceptionEvent.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/BlockchainApiExceptionEvent.kt @@ -2,7 +2,7 @@ package com.tangem.tap.common.analytics.events import com.tangem.core.analytics.models.AnalyticsEvent -class BlockchainExceptionEvent( +class BlockchainApiExceptionEvent( selectedHost: String, exceptionHost: String, error: String, diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/TangemSdkErrorEvent.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/TangemSdkErrorEvent.kt new file mode 100644 index 0000000000..bfd7f4bcc9 --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/TangemSdkErrorEvent.kt @@ -0,0 +1,18 @@ +package com.tangem.tap.common.analytics.events + +import com.tangem.common.core.TangemSdkError +import com.tangem.core.analytics.models.AnalyticsEvent +import com.tangem.tap.common.analytics.converters.AnalyticsErrorConverter + +class TangemSdkErrorEvent( + val exception: TangemSdkError, +) : AnalyticsEvent( + category = "TangemSdk", + event = "Tangem Sdk Error", + params = errorConverter.convert(exception), +) { + + companion object { + private val errorConverter = AnalyticsErrorConverter() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/analytics/handlers/BlockchainExceptionHandler.kt b/app/src/main/java/com/tangem/tap/common/analytics/handlers/BlockchainExceptionHandler.kt index c6e47dcb6d..a1931b993e 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/handlers/BlockchainExceptionHandler.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/handlers/BlockchainExceptionHandler.kt @@ -2,7 +2,7 @@ package com.tangem.tap.common.analytics.handlers import com.tangem.blockchain.common.ExceptionHandlerOutput import com.tangem.core.analytics.api.AnalyticsErrorHandler -import com.tangem.tap.common.analytics.events.BlockchainExceptionEvent +import com.tangem.tap.common.analytics.events.BlockchainApiExceptionEvent import javax.inject.Inject class BlockchainExceptionHandler @Inject constructor( @@ -10,7 +10,7 @@ class BlockchainExceptionHandler @Inject constructor( ) : ExceptionHandlerOutput { override fun handleApiSwitch(currentHost: String, nextHost: String, message: String) { analyticsErrorHandler.sendErrorEvent( - BlockchainExceptionEvent( + BlockchainApiExceptionEvent( selectedHost = nextHost, exceptionHost = currentHost, error = message, diff --git a/app/src/main/java/com/tangem/tap/common/analytics/handlers/amplitude/AmplitudeAnalyticsHandler.kt b/app/src/main/java/com/tangem/tap/common/analytics/handlers/amplitude/AmplitudeAnalyticsHandler.kt index a618ce78ab..2aa36c5413 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/handlers/amplitude/AmplitudeAnalyticsHandler.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/handlers/amplitude/AmplitudeAnalyticsHandler.kt @@ -1,13 +1,11 @@ package com.tangem.tap.common.analytics.handlers.amplitude -import com.tangem.core.analytics.api.AnalyticsErrorHandler import com.tangem.core.analytics.api.AnalyticsHandler -import com.tangem.core.analytics.models.AnalyticsEvent import com.tangem.tap.common.analytics.api.AnalyticsHandlerBuilder class AmplitudeAnalyticsHandler( private val client: AmplitudeAnalyticsClient, -) : AnalyticsHandler, AnalyticsErrorHandler { +) : AnalyticsHandler { override fun id(): String = ID @@ -15,10 +13,6 @@ class AmplitudeAnalyticsHandler( client.logEvent(eventId, params) } - override fun sendErrorEvent(event: AnalyticsEvent) { - send(event.id, event.params) - } - companion object { const val ID = "Amplitude" } diff --git a/app/src/main/java/com/tangem/tap/common/analytics/handlers/firebase/FirebaseClient.kt b/app/src/main/java/com/tangem/tap/common/analytics/handlers/firebase/FirebaseClient.kt index 47b97a7dbc..06ccf50709 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/handlers/firebase/FirebaseClient.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/handlers/firebase/FirebaseClient.kt @@ -28,7 +28,6 @@ internal class FirebaseClient : FirebaseAnalyticsClient { ) } - // TODO [REDACTED_TASK_KEY] fix recordException usages in the app override fun logException(error: Throwable, params: Map) { fbCrashlytics.recordException(error) { eventConverter.convertEventParams(params) diff --git a/app/src/main/java/com/tangem/tap/domain/scanCard/UseCaseScanProcessor.kt b/app/src/main/java/com/tangem/tap/domain/scanCard/UseCaseScanProcessor.kt index 772960fb03..abf3f1f23d 100644 --- a/app/src/main/java/com/tangem/tap/domain/scanCard/UseCaseScanProcessor.kt +++ b/app/src/main/java/com/tangem/tap/domain/scanCard/UseCaseScanProcessor.kt @@ -11,6 +11,7 @@ import com.tangem.core.analytics.models.ExceptionAnalyticsEvent import com.tangem.domain.card.ScanCardException import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.redux.StateDialog +import com.tangem.tap.common.analytics.events.TangemSdkErrorEvent import com.tangem.tap.common.extensions.dispatchDialogShow import com.tangem.tap.common.extensions.dispatchNavigationAction import com.tangem.tap.common.extensions.inject @@ -35,12 +36,7 @@ internal object UseCaseScanProcessor { ifLeft = { val error = scanCardExceptionConverter.convertBack(it) - Analytics.sendException( - ExceptionAnalyticsEvent( - exception = error, - params = mapOf("Event" to "Scan"), - ), - ) + Analytics.sendErrorEvent(TangemSdkErrorEvent(error)) CompletionResult.Failure(error) }, ifRight = { CompletionResult.Success(it) }, diff --git a/app/src/main/java/com/tangem/tap/domain/scanCard/utils/ScanCardExceptionConverter.kt b/app/src/main/java/com/tangem/tap/domain/scanCard/utils/ScanCardExceptionConverter.kt index 53062e6918..add75d87d0 100644 --- a/app/src/main/java/com/tangem/tap/domain/scanCard/utils/ScanCardExceptionConverter.kt +++ b/app/src/main/java/com/tangem/tap/domain/scanCard/utils/ScanCardExceptionConverter.kt @@ -12,7 +12,7 @@ internal class ScanCardExceptionConverter : TwoWayConverter ScanCardException.UnknownException(value) } - override fun convertBack(value: ScanCardException): TangemError { + override fun convertBack(value: ScanCardException): TangemSdkError { return when (value) { is ScanCardException.UnknownException -> TangemSdkError.ExceptionError(value) is ScanCardException.UserCancelled -> TangemSdkError.UserCancelled() @@ -31,7 +31,7 @@ internal class ScanCardExceptionConverter : TwoWayConverter ScanCardException.UnknownException(value) } - private fun concertScanChainException(value: ScanCardException.ChainException): TangemError { + private fun concertScanChainException(value: ScanCardException.ChainException): TangemSdkError { return when (val e = value as? ScanChainException) { is ScanChainException.DisclaimerWasCanceled -> TangemSdkError.UserCancelled() is ScanChainException.OnboardingNeeded, diff --git a/app/src/main/java/com/tangem/tap/domain/sdk/impl/DefaultTangemSdkManager.kt b/app/src/main/java/com/tangem/tap/domain/sdk/impl/DefaultTangemSdkManager.kt index bc1616ef60..7ef7432c75 100644 --- a/app/src/main/java/com/tangem/tap/domain/sdk/impl/DefaultTangemSdkManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/sdk/impl/DefaultTangemSdkManager.kt @@ -14,7 +14,6 @@ import com.tangem.common.extensions.ByteArrayKey import com.tangem.common.services.secure.SecureStorage import com.tangem.common.usersCode.UserCodeRepository import com.tangem.core.analytics.Analytics -import com.tangem.core.analytics.models.ExceptionAnalyticsEvent import com.tangem.core.res.getStringSafe import com.tangem.crypto.bip39.DefaultMnemonic import com.tangem.crypto.hdWallet.DerivationPath @@ -41,6 +40,7 @@ import com.tangem.sdk.api.CreateProductWalletTaskResponse import com.tangem.sdk.api.TangemSdkManager import com.tangem.sdk.api.visa.VisaCardActivationResponse import com.tangem.sdk.api.visa.VisaCardActivationTaskMode +import com.tangem.tap.common.analytics.events.TangemSdkErrorEvent import com.tangem.tap.derivationsFinder import com.tangem.tap.domain.tasks.product.CreateProductWalletTask import com.tangem.tap.domain.tasks.product.ResetBackupCardTask @@ -224,12 +224,7 @@ internal class DefaultTangemSdkManager( private fun sendScanResultsToAnalytics(result: CompletionResult) { if (result is CompletionResult.Failure) { (result.error as? TangemSdkError)?.let { error -> - Analytics.sendException( - ExceptionAnalyticsEvent( - exception = error, - params = mapOf("Event" to "Scan"), - ), - ) + Analytics.sendErrorEvent(TangemSdkErrorEvent(error)) } } } diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/securitymode/model/SecurityModeModel.kt b/app/src/main/java/com/tangem/tap/features/details/ui/securitymode/model/SecurityModeModel.kt index 6568f05a99..8f4cf86296 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/securitymode/model/SecurityModeModel.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/securitymode/model/SecurityModeModel.kt @@ -4,15 +4,15 @@ import androidx.compose.runtime.Stable import com.tangem.common.CompletionResult import com.tangem.common.core.TangemSdkError import com.tangem.common.routing.AppRouter +import com.tangem.core.analytics.api.AnalyticsErrorHandler import com.tangem.core.analytics.api.AnalyticsEventHandler -import com.tangem.core.analytics.api.AnalyticsExceptionHandler -import com.tangem.core.analytics.models.ExceptionAnalyticsEvent import com.tangem.core.decompose.di.ModelScoped import com.tangem.core.decompose.model.Model import com.tangem.domain.common.util.cardTypesResolver import com.tangem.sdk.api.TangemSdkManager import com.tangem.tap.common.analytics.events.AnalyticsParam import com.tangem.tap.common.analytics.events.Settings +import com.tangem.tap.common.analytics.events.TangemSdkErrorEvent import com.tangem.tap.common.extensions.dispatchNavigationAction import com.tangem.tap.features.details.redux.SecurityOption import com.tangem.tap.features.details.ui.cardsettings.domain.CardSettingsInteractor @@ -33,7 +33,7 @@ internal class SecurityModeModel @Inject constructor( private val tangemSdkManager: TangemSdkManager, private val cardSettingsInteractor: CardSettingsInteractor, private val analyticsEventHandler: AnalyticsEventHandler, - private val analyticsExceptionHandler: AnalyticsExceptionHandler, + private val analyticsErrorHandler: AnalyticsErrorHandler, ) : Model() { private val scannedScanResponse = cardSettingsInteractor.scannedScanResponse.value @@ -96,12 +96,7 @@ internal class SecurityModeModel @Inject constructor( is CompletionResult.Failure -> { val error = result.error if (error is TangemSdkError && error !is TangemSdkError.UserCancelled) { - analyticsExceptionHandler.sendException( - ExceptionAnalyticsEvent( - exception = error, - params = mapOf("Event" to "Security Mode Changed"), - ), - ) + analyticsErrorHandler.sendErrorEvent(TangemSdkErrorEvent(error)) } } else -> Unit diff --git a/core/analytics/models/src/main/java/com/tangem/core/analytics/models/ExceptionAnalyticsEvent.kt b/core/analytics/models/src/main/java/com/tangem/core/analytics/models/ExceptionAnalyticsEvent.kt index 82372912e5..c2af9763c7 100644 --- a/core/analytics/models/src/main/java/com/tangem/core/analytics/models/ExceptionAnalyticsEvent.kt +++ b/core/analytics/models/src/main/java/com/tangem/core/analytics/models/ExceptionAnalyticsEvent.kt @@ -2,7 +2,5 @@ package com.tangem.core.analytics.models class ExceptionAnalyticsEvent( val exception: Throwable, - // val category: String, - // val event: String, - var params: Map = mapOf(), + val params: Map = mapOf(), ) \ No newline at end of file