Updated on 2026-08-14
This commit is contained in:
commit
1bac8466b1
990 changed files with 22183 additions and 7489 deletions
|
|
@ -22,4 +22,7 @@ dependencies {
|
|||
|
||||
/** Core shouldn't depend on core, but in case with utils and logging its necessary */
|
||||
implementation(projects.core.utils)
|
||||
|
||||
/** For calculating user id hash */
|
||||
implementation(tangemDeps.card.core)
|
||||
}
|
||||
|
|
@ -1,5 +1,7 @@
|
|||
package com.tangem.core.analytics
|
||||
|
||||
import com.tangem.common.extensions.calculateSha256
|
||||
import com.tangem.common.extensions.toHexString
|
||||
import com.tangem.core.analytics.api.*
|
||||
import com.tangem.core.analytics.models.AnalyticsEvent
|
||||
import com.tangem.core.analytics.models.ExceptionAnalyticsEvent
|
||||
|
|
@ -19,7 +21,8 @@ interface GlobalAnalyticsEventHandler :
|
|||
AnalyticsFilterHolder,
|
||||
ParamsInterceptorHolder,
|
||||
AnalyticsErrorHandler,
|
||||
AnalyticsExceptionHandler
|
||||
AnalyticsExceptionHandler,
|
||||
AnalyticsUserIdHandler
|
||||
|
||||
object Analytics : GlobalAnalyticsEventHandler {
|
||||
|
||||
|
|
@ -57,6 +60,26 @@ object Analytics : GlobalAnalyticsEventHandler {
|
|||
return paramsInterceptors.remove(interceptorId)
|
||||
}
|
||||
|
||||
override fun setUserId(userId: String) {
|
||||
analyticsScope.launch {
|
||||
val userIdHash = userId.calculateSha256().toHexString()
|
||||
|
||||
analyticsMutex.withLock {
|
||||
analyticsHandlers.filterIsInstance<AnalyticsUserIdHandler>()
|
||||
.forEach { handler -> handler.setUserId(userIdHash) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun clearUserId() {
|
||||
analyticsScope.launch {
|
||||
analyticsMutex.withLock {
|
||||
analyticsHandlers.filterIsInstance<AnalyticsUserIdHandler>()
|
||||
.forEach { handler -> handler.clearUserId() }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun send(event: AnalyticsEvent) {
|
||||
analyticsScope.launch {
|
||||
event.params = applyParamsInterceptors(event)
|
||||
|
|
|
|||
|
|
@ -18,6 +18,11 @@ interface AnalyticsExceptionHandler {
|
|||
fun sendException(event: ExceptionAnalyticsEvent)
|
||||
}
|
||||
|
||||
interface AnalyticsUserIdHandler {
|
||||
fun setUserId(userId: String)
|
||||
fun clearUserId()
|
||||
}
|
||||
|
||||
interface AnalyticsHandler : AnalyticsEventHandler {
|
||||
|
||||
fun id(): String
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
package com.tangem.core.analytics.api
|
||||
|
||||
interface UserIdHolder {
|
||||
|
||||
fun setUserId(userId: String)
|
||||
|
||||
fun clearUserId()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue