From 1bf27aad3ef977fdffc5ffb6c16aa2230b907968 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 18 Jun 2024 11:08:25 +0200 Subject: [PATCH] Also fix same issue for analytics. --- .../android/appnav/loggedin/LoggedInPresenter.kt | 12 ++++++++---- .../android/appnav/loggedin/LoggedInPresenterTest.kt | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt index 82e44ba948..616d370859 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt @@ -41,6 +41,7 @@ import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatu import io.element.android.libraries.push.api.PushService import io.element.android.libraries.pushproviders.api.RegistrationFailure import io.element.android.services.analytics.api.AnalyticsService +import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch @@ -86,10 +87,13 @@ class LoggedInPresenter @Inject constructor( networkStatus == NetworkStatus.Online && syncIndicator == RoomListService.SyncIndicator.Show } } - val verificationState by sessionVerificationService.sessionVerifiedStatus.collectAsState() - val recoveryState by encryptionService.recoveryStateStateFlow.collectAsState() - LaunchedEffect(verificationState, recoveryState) { - reportCryptoStatusToAnalytics(verificationState, recoveryState) + LaunchedEffect(Unit) { + combine( + sessionVerificationService.sessionVerifiedStatus, + encryptionService.recoveryStateStateFlow + ) { verificationState, recoveryState -> + reportCryptoStatusToAnalytics(verificationState, recoveryState) + }.launchIn(this) } fun handleEvent(event: LoggedInEvents) { diff --git a/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt index 52a27c2db1..c9f7e2bcde 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt @@ -108,7 +108,7 @@ class LoggedInPresenterTest { encryptionService.emitRecoveryState(RecoveryState.UNKNOWN) encryptionService.emitRecoveryState(RecoveryState.INCOMPLETE) verificationService.emitVerifiedStatus(SessionVerifiedStatus.Verified) - skipItems(4) + skipItems(2) assertThat(analyticsService.capturedEvents.size).isEqualTo(1) assertThat(analyticsService.capturedEvents[0]).isInstanceOf(CryptoSessionStateChange::class.java) assertThat(analyticsService.capturedUserProperties.size).isEqualTo(1)