rust/native analytics E2E errors
This commit is contained in:
parent
d4d9a1068a
commit
1cc3f194e4
|
@ -22,6 +22,8 @@ import im.vector.app.core.dispatchers.CoroutineDispatchers
|
||||||
import im.vector.app.core.pushers.UnregisterUnifiedPushUseCase
|
import im.vector.app.core.pushers.UnregisterUnifiedPushUseCase
|
||||||
import im.vector.app.core.services.GuardServiceStarter
|
import im.vector.app.core.services.GuardServiceStarter
|
||||||
import im.vector.app.core.session.ConfigureAndStartSessionUseCase
|
import im.vector.app.core.session.ConfigureAndStartSessionUseCase
|
||||||
|
import im.vector.app.features.analytics.DecryptionFailureTracker
|
||||||
|
import im.vector.app.features.analytics.plan.Error
|
||||||
import im.vector.app.features.call.webrtc.WebRtcCallManager
|
import im.vector.app.features.call.webrtc.WebRtcCallManager
|
||||||
import im.vector.app.features.crypto.keysrequest.KeyRequestHandler
|
import im.vector.app.features.crypto.keysrequest.KeyRequestHandler
|
||||||
import im.vector.app.features.crypto.verification.IncomingVerificationRequestHandler
|
import im.vector.app.features.crypto.verification.IncomingVerificationRequestHandler
|
||||||
|
@ -56,6 +58,7 @@ class ActiveSessionHolder @Inject constructor(
|
||||||
private val unregisterUnifiedPushUseCase: UnregisterUnifiedPushUseCase,
|
private val unregisterUnifiedPushUseCase: UnregisterUnifiedPushUseCase,
|
||||||
private val applicationCoroutineScope: CoroutineScope,
|
private val applicationCoroutineScope: CoroutineScope,
|
||||||
private val coroutineDispatchers: CoroutineDispatchers,
|
private val coroutineDispatchers: CoroutineDispatchers,
|
||||||
|
private val decryptionFailureTracker: DecryptionFailureTracker,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private var activeSessionReference: AtomicReference<Session?> = AtomicReference()
|
private var activeSessionReference: AtomicReference<Session?> = AtomicReference()
|
||||||
|
@ -72,6 +75,11 @@ class ActiveSessionHolder @Inject constructor(
|
||||||
session.callSignalingService().addCallListener(callManager)
|
session.callSignalingService().addCallListener(callManager)
|
||||||
imageManager.onSessionStarted(session)
|
imageManager.onSessionStarted(session)
|
||||||
guardServiceStarter.start()
|
guardServiceStarter.start()
|
||||||
|
decryptionFailureTracker.currentModule = if (session.cryptoService().name() == "rust-sdk") {
|
||||||
|
Error.CryptoModule.Rust
|
||||||
|
} else {
|
||||||
|
Error.CryptoModule.Native
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun clearActiveSession() {
|
suspend fun clearActiveSession() {
|
||||||
|
|
|
@ -58,6 +58,8 @@ class DecryptionFailureTracker @Inject constructor(
|
||||||
private val failures = mutableListOf<DecryptionFailure>()
|
private val failures = mutableListOf<DecryptionFailure>()
|
||||||
private val alreadyReported = mutableListOf<String>()
|
private val alreadyReported = mutableListOf<String>()
|
||||||
|
|
||||||
|
var currentModule: Error.CryptoModule? = null
|
||||||
|
|
||||||
init {
|
init {
|
||||||
start()
|
start()
|
||||||
}
|
}
|
||||||
|
@ -137,7 +139,12 @@ class DecryptionFailureTracker @Inject constructor(
|
||||||
// for now we ignore events already reported even if displayed again?
|
// for now we ignore events already reported even if displayed again?
|
||||||
.filter { alreadyReported.contains(it).not() }
|
.filter { alreadyReported.contains(it).not() }
|
||||||
.forEach { failedEventId ->
|
.forEach { failedEventId ->
|
||||||
analyticsTracker.capture(Error(context = aggregation.key.first, domain = Error.Domain.E2EE, name = aggregation.key.second))
|
analyticsTracker.capture(Error(
|
||||||
|
context = aggregation.key.first,
|
||||||
|
domain = Error.Domain.E2EE,
|
||||||
|
name = aggregation.key.second,
|
||||||
|
cryptoModule = currentModule
|
||||||
|
))
|
||||||
alreadyReported.add(failedEventId)
|
alreadyReported.add(failedEventId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue