diff --git a/vector/src/main/java/im/vector/app/features/location/LocationSharingService.kt b/vector/src/main/java/im/vector/app/features/location/LocationSharingService.kt index 0515947474..0ba9e2134c 100644 --- a/vector/src/main/java/im/vector/app/features/location/LocationSharingService.kt +++ b/vector/src/main/java/im/vector/app/features/location/LocationSharingService.kt @@ -192,16 +192,14 @@ class LocationSharingService : VectorService(), LocationTracker.Callback { } private fun listenForLiveSummaryChanges(roomId: String, eventId: String) { - activeSessionHolder - .getSafeActiveSession() - ?.let { session -> - val job = getLiveLocationShareSummaryUseCase.execute(roomId, eventId) - .distinctUntilChangedBy { it.isActive } - .filter { it.isActive == false } - .onEach { stopSharingLocation(roomId) } - .launchIn(session.coroutineScope) - jobs.add(job) - } + launchWithActiveSession { session -> + val job = getLiveLocationShareSummaryUseCase.execute(roomId, eventId) + .distinctUntilChangedBy { it.isActive } + .filter { it.isActive == false } + .onEach { stopSharingLocation(roomId) } + .launchIn(session.coroutineScope) + jobs.add(job) + } } private fun launchWithActiveSession(block: suspend CoroutineScope.(Session) -> Unit) = diff --git a/vector/src/main/java/im/vector/app/features/location/live/GetLiveLocationShareSummaryUseCase.kt b/vector/src/main/java/im/vector/app/features/location/live/GetLiveLocationShareSummaryUseCase.kt index d2696f62fd..0d8b70ccda 100644 --- a/vector/src/main/java/im/vector/app/features/location/live/GetLiveLocationShareSummaryUseCase.kt +++ b/vector/src/main/java/im/vector/app/features/location/live/GetLiveLocationShareSummaryUseCase.kt @@ -16,11 +16,11 @@ package im.vector.app.features.location.live -import androidx.annotation.MainThread import androidx.lifecycle.asFlow import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.emptyFlow import kotlinx.coroutines.flow.mapNotNull +import kotlinx.coroutines.withContext import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.getRoom import org.matrix.android.sdk.api.session.room.model.livelocation.LiveLocationShareAggregatedSummary @@ -31,10 +31,9 @@ class GetLiveLocationShareSummaryUseCase @Inject constructor( private val session: Session, ) { - @MainThread - fun execute(roomId: String, eventId: String): Flow { + suspend fun execute(roomId: String, eventId: String): Flow = withContext(session.coroutineDispatchers.main) { Timber.d("getting flow for roomId=$roomId and eventId=$eventId") - return session.getRoom(roomId) + session.getRoom(roomId) ?.locationSharingService() ?.getLiveLocationShareSummary(eventId) ?.asFlow()