|
|
@ -34,7 +34,7 @@ import io.element.android.libraries.matrix.api.room.MatrixRoom |
|
|
|
import io.element.android.libraries.matrix.api.room.MatrixRoomMembersState |
|
|
|
import io.element.android.libraries.matrix.api.room.MatrixRoomMembersState |
|
|
|
import io.element.android.libraries.matrix.api.room.RoomMember |
|
|
|
import io.element.android.libraries.matrix.api.room.RoomMember |
|
|
|
import io.element.android.libraries.matrix.api.room.RoomMembershipObserver |
|
|
|
import io.element.android.libraries.matrix.api.room.RoomMembershipObserver |
|
|
|
import io.element.android.libraries.matrix.ui.room.directRoomMember |
|
|
|
import io.element.android.libraries.matrix.ui.room.getDirectRoomMember |
|
|
|
import kotlinx.coroutines.CoroutineScope |
|
|
|
import kotlinx.coroutines.CoroutineScope |
|
|
|
import kotlinx.coroutines.launch |
|
|
|
import kotlinx.coroutines.launch |
|
|
|
import javax.inject.Inject |
|
|
|
import javax.inject.Inject |
|
|
@ -58,9 +58,10 @@ class RoomDetailsPresenter @Inject constructor( |
|
|
|
LaunchedEffect(Unit) { |
|
|
|
LaunchedEffect(Unit) { |
|
|
|
room.updateMembers() |
|
|
|
room.updateMembers() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
val membersState by room.membersStateFlow.collectAsState() |
|
|
|
val membersState by room.membersStateFlow.collectAsState() |
|
|
|
val memberCount by getMemberCount(membersState) |
|
|
|
val memberCount by getMemberCount(membersState) |
|
|
|
val dmMember by room.directRoomMember() |
|
|
|
val dmMember by room.getDirectRoomMember(membersState) |
|
|
|
val roomMemberDetailsPresenter = roomMemberDetailsPresenter(dmMember) |
|
|
|
val roomMemberDetailsPresenter = roomMemberDetailsPresenter(dmMember) |
|
|
|
val roomType = getRoomType(dmMember) |
|
|
|
val roomType = getRoomType(dmMember) |
|
|
|
|
|
|
|
|
|
|
@ -116,13 +117,15 @@ class RoomDetailsPresenter @Inject constructor( |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Composable |
|
|
|
@Composable |
|
|
|
private fun getMemberCount(membersState: MatrixRoomMembersState): State<Async<Int>> = remember(membersState) { |
|
|
|
private fun getMemberCount(membersState: MatrixRoomMembersState): State<Async<Int>> { |
|
|
|
derivedStateOf { |
|
|
|
return remember(membersState) { |
|
|
|
when (membersState) { |
|
|
|
derivedStateOf { |
|
|
|
MatrixRoomMembersState.Unknown -> Async.Uninitialized |
|
|
|
when (membersState) { |
|
|
|
is MatrixRoomMembersState.Pending -> Async.Loading(prevState = membersState.prevRoomMembers?.size) |
|
|
|
MatrixRoomMembersState.Unknown -> Async.Uninitialized |
|
|
|
is MatrixRoomMembersState.Error -> Async.Failure(membersState.failure, prevState = membersState.prevRoomMembers?.size) |
|
|
|
is MatrixRoomMembersState.Pending -> Async.Loading(prevState = membersState.prevRoomMembers?.size) |
|
|
|
is MatrixRoomMembersState.Ready -> Async.Success(membersState.roomMembers.size) |
|
|
|
is MatrixRoomMembersState.Error -> Async.Failure(membersState.failure, prevState = membersState.prevRoomMembers?.size) |
|
|
|
|
|
|
|
is MatrixRoomMembersState.Ready -> Async.Success(membersState.roomMembers.size) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -148,3 +151,5 @@ class RoomDetailsPresenter @Inject constructor( |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|