Use session coroutine scope instead of application coroutine scope.

This commit is contained in:
Benoit Marty 2024-07-08 16:47:17 +02:00
parent c0e1c33159
commit 8dae7f2f69

View file

@ -24,6 +24,7 @@ import io.element.android.features.ftue.api.state.FtueService
import io.element.android.features.ftue.api.state.FtueState import io.element.android.features.ftue.api.state.FtueState
import io.element.android.features.lockscreen.api.LockScreenService import io.element.android.features.lockscreen.api.LockScreenService
import io.element.android.libraries.di.SessionScope import io.element.android.libraries.di.SessionScope
import io.element.android.libraries.di.annotations.SessionCoroutineScope
import io.element.android.libraries.matrix.api.verification.SessionVerificationService import io.element.android.libraries.matrix.api.verification.SessionVerificationService
import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus
import io.element.android.libraries.permissions.api.PermissionStateProvider import io.element.android.libraries.permissions.api.PermissionStateProvider
@ -47,7 +48,7 @@ import kotlin.time.Duration.Companion.seconds
@ContributesBinding(SessionScope::class) @ContributesBinding(SessionScope::class)
class DefaultFtueService @Inject constructor( class DefaultFtueService @Inject constructor(
private val sdkVersionProvider: BuildVersionSdkIntProvider, private val sdkVersionProvider: BuildVersionSdkIntProvider,
coroutineScope: CoroutineScope, @SessionCoroutineScope sessionCoroutineScope: CoroutineScope,
private val analyticsService: AnalyticsService, private val analyticsService: AnalyticsService,
private val permissionStateProvider: PermissionStateProvider, private val permissionStateProvider: PermissionStateProvider,
private val lockScreenService: LockScreenService, private val lockScreenService: LockScreenService,
@ -66,11 +67,11 @@ class DefaultFtueService @Inject constructor(
init { init {
sessionVerificationService.sessionVerifiedStatus sessionVerificationService.sessionVerifiedStatus
.onEach { updateState() } .onEach { updateState() }
.launchIn(coroutineScope) .launchIn(sessionCoroutineScope)
analyticsService.didAskUserConsent() analyticsService.didAskUserConsent()
.onEach { updateState() } .onEach { updateState() }
.launchIn(coroutineScope) .launchIn(sessionCoroutineScope)
} }
suspend fun getNextStep(currentStep: FtueStep? = null): FtueStep? = suspend fun getNextStep(currentStep: FtueStep? = null): FtueStep? =