Add AnalyticsService.cancelLongRunningTransaction and AnalyticsService.finishLongRunningTransaction

This commit is contained in:
Jorge Martín 2025-11-27 12:27:49 +01:00 committed by Jorge Martin Espinosa
parent 1d77aa447d
commit 1c576fd42d
7 changed files with 37 additions and 9 deletions

View file

@ -13,6 +13,8 @@ import dev.zacsweers.metro.SingleIn
import io.element.android.libraries.di.annotations.AppCoroutineScope
import io.element.android.services.analytics.api.AnalyticsLongRunningTransaction
import io.element.android.services.analytics.api.AnalyticsService
import io.element.android.services.analytics.api.cancelLongRunningTransaction
import io.element.android.services.analytics.api.finishLongRunningTransaction
import io.element.android.services.analytics.api.watchers.AnalyticsColdStartWatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.catch
@ -47,7 +49,7 @@ class DefaultAnalyticsColdStartWatcher(
override fun whenLoggingIn() {
if (isColdStart.getAndSet(false)) {
analyticsService.removeLongRunningTransaction(AnalyticsLongRunningTransaction.ColdStartUntilCachedRoomList)
analyticsService.cancelLongRunningTransaction(AnalyticsLongRunningTransaction.ColdStartUntilCachedRoomList)
Timber.d("Canceled cold start check: user is logging in")
}
}
@ -55,7 +57,7 @@ class DefaultAnalyticsColdStartWatcher(
override fun onRoomListVisible() {
if (isColdStart.getAndSet(false)) {
Timber.d("Room list is visible, finishing cold start check")
analyticsService.removeLongRunningTransaction(AnalyticsLongRunningTransaction.ColdStartUntilCachedRoomList)?.finish()
analyticsService.finishLongRunningTransaction(AnalyticsLongRunningTransaction.ColdStartUntilCachedRoomList)
}
}
}

View file

@ -16,6 +16,7 @@ import io.element.android.libraries.di.annotations.SessionCoroutineScope
import io.element.android.libraries.matrix.api.roomlist.RoomListService
import io.element.android.services.analytics.api.AnalyticsLongRunningTransaction
import io.element.android.services.analytics.api.AnalyticsService
import io.element.android.services.analytics.api.finishLongRunningTransaction
import io.element.android.services.analytics.api.watchers.AnalyticsRoomListStateWatcher
import io.element.android.services.appnavstate.api.AppNavigationStateService
import kotlinx.coroutines.CoroutineScope
@ -63,7 +64,7 @@ class DefaultAnalyticsRoomListStateWatcher(
roomListService.state
.onEach { state ->
if (state == RoomListService.State.Running && isWarmState.get()) {
analyticsService.removeLongRunningTransaction(AnalyticsLongRunningTransaction.ResumeAppUntilNewRoomsReceived)?.finish()
analyticsService.finishLongRunningTransaction(AnalyticsLongRunningTransaction.ResumeAppUntilNewRoomsReceived)
}
}
.launchIn(coroutineScope)