RoomMembers: change the API again..
This commit is contained in:
parent
4b9f2fdae0
commit
23a7b871f7
12 changed files with 109 additions and 73 deletions
|
|
@ -23,7 +23,6 @@ import io.element.android.libraries.matrix.api.core.UserId
|
|||
import io.element.android.libraries.matrix.api.timeline.MatrixTimeline
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.map
|
||||
import java.io.Closeable
|
||||
|
||||
interface MatrixRoom : Closeable {
|
||||
|
|
@ -74,22 +73,3 @@ interface MatrixRoom : Closeable {
|
|||
|
||||
suspend fun rejectInvitation(): Result<Unit>
|
||||
}
|
||||
|
||||
fun MatrixRoom.getMemberFlow(userId: UserId): Flow<RoomMember?> {
|
||||
return membersStateFlow.map { state ->
|
||||
state.roomMembers().find {
|
||||
it.userId == userId
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun MatrixRoom.getDmMemberFlow(): Flow<RoomMember?> {
|
||||
return membersStateFlow.map { state ->
|
||||
val members = state.roomMembers()
|
||||
if (members.size == 2 && isDirect && isEncrypted) {
|
||||
members.find { it.userId != this.sessionId }
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,14 +18,18 @@ package io.element.android.libraries.matrix.api.room
|
|||
|
||||
sealed interface MatrixRoomMembersState {
|
||||
object Unknown : MatrixRoomMembersState
|
||||
object Pending : MatrixRoomMembersState
|
||||
data class Error(val failure: Throwable) : MatrixRoomMembersState
|
||||
data class Pending(val prevRoomMembers: List<RoomMember>? = null) : MatrixRoomMembersState
|
||||
data class Error(val failure: Throwable, val prevRoomMembers: List<RoomMember>? = null) : MatrixRoomMembersState
|
||||
data class Ready(val roomMembers: List<RoomMember>) : MatrixRoomMembersState
|
||||
}
|
||||
|
||||
fun MatrixRoomMembersState.roomMembers(): List<RoomMember> {
|
||||
fun MatrixRoomMembersState.roomMembers(): List<RoomMember>? {
|
||||
return when (this) {
|
||||
is MatrixRoomMembersState.Ready -> roomMembers
|
||||
else -> emptyList()
|
||||
is MatrixRoomMembersState.Pending -> prevRoomMembers
|
||||
is MatrixRoomMembersState.Error -> prevRoomMembers
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue