change(roles and permissions): use @RoomCoroutineScope instead of local scope
This commit is contained in:
parent
ca1f799983
commit
5097ac1571
1 changed files with 4 additions and 10 deletions
|
|
@ -15,7 +15,6 @@ import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.produceState
|
import androidx.compose.runtime.produceState
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.runtime.rememberCoroutineScope
|
|
||||||
import androidx.compose.runtime.saveable.rememberSaveable
|
import androidx.compose.runtime.saveable.rememberSaveable
|
||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import dev.zacsweers.metro.Assisted
|
import dev.zacsweers.metro.Assisted
|
||||||
|
|
@ -27,6 +26,7 @@ import io.element.android.libraries.architecture.AsyncAction
|
||||||
import io.element.android.libraries.architecture.Presenter
|
import io.element.android.libraries.architecture.Presenter
|
||||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||||
import io.element.android.libraries.designsystem.theme.components.SearchBarResultState
|
import io.element.android.libraries.designsystem.theme.components.SearchBarResultState
|
||||||
|
import io.element.android.libraries.di.annotations.RoomCoroutineScope
|
||||||
import io.element.android.libraries.matrix.api.core.UserId
|
import io.element.android.libraries.matrix.api.core.UserId
|
||||||
import io.element.android.libraries.matrix.api.room.JoinedRoom
|
import io.element.android.libraries.matrix.api.room.JoinedRoom
|
||||||
import io.element.android.libraries.matrix.api.room.RoomMember
|
import io.element.android.libraries.matrix.api.room.RoomMember
|
||||||
|
|
@ -41,12 +41,10 @@ import kotlinx.collections.immutable.ImmutableList
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.NonCancellable
|
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
|
||||||
|
|
||||||
@AssistedInject
|
@AssistedInject
|
||||||
class ChangeRolesPresenter(
|
class ChangeRolesPresenter(
|
||||||
|
|
@ -54,6 +52,7 @@ class ChangeRolesPresenter(
|
||||||
private val room: JoinedRoom,
|
private val room: JoinedRoom,
|
||||||
private val dispatchers: CoroutineDispatchers,
|
private val dispatchers: CoroutineDispatchers,
|
||||||
private val analyticsService: AnalyticsService,
|
private val analyticsService: AnalyticsService,
|
||||||
|
@RoomCoroutineScope private val roomCoroutineScope: CoroutineScope,
|
||||||
) : Presenter<ChangeRolesState> {
|
) : Presenter<ChangeRolesState> {
|
||||||
@AssistedFactory
|
@AssistedFactory
|
||||||
fun interface Factory {
|
fun interface Factory {
|
||||||
|
|
@ -62,7 +61,6 @@ class ChangeRolesPresenter(
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
override fun present(): ChangeRolesState {
|
override fun present(): ChangeRolesState {
|
||||||
val coroutineScope = rememberCoroutineScope()
|
|
||||||
val dataSource = remember { RoomMemberListDataSource(room, dispatchers) }
|
val dataSource = remember { RoomMemberListDataSource(room, dispatchers) }
|
||||||
var query by rememberSaveable { mutableStateOf<String?>(null) }
|
var query by rememberSaveable { mutableStateOf<String?>(null) }
|
||||||
var searchActive by rememberSaveable { mutableStateOf(false) }
|
var searchActive by rememberSaveable { mutableStateOf(false) }
|
||||||
|
|
@ -145,7 +143,7 @@ class ChangeRolesPresenter(
|
||||||
saveState.value = AsyncAction.ConfirmingNoParams
|
saveState.value = AsyncAction.ConfirmingNoParams
|
||||||
}
|
}
|
||||||
!saveState.value.isLoading() -> {
|
!saveState.value.isLoading() -> {
|
||||||
coroutineScope.save(usersWithRole.value, selectedUsers, saveState)
|
roomCoroutineScope.save(usersWithRole.value, selectedUsers, saveState)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -217,11 +215,7 @@ class ChangeRolesPresenter(
|
||||||
}
|
}
|
||||||
.onSuccess {
|
.onSuccess {
|
||||||
// Asynchronously reload the room members
|
// Asynchronously reload the room members
|
||||||
launch {
|
launch { room.updateMembers() }
|
||||||
withContext(NonCancellable) {
|
|
||||||
room.updateMembers()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
saveState.value = AsyncAction.Success(true)
|
saveState.value = AsyncAction.Success(true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue