|
|
@ -22,10 +22,12 @@ import io.element.android.libraries.matrix.api.core.UserId |
|
|
|
import io.element.android.libraries.matrix.api.room.CurrentUserMembership |
|
|
|
import io.element.android.libraries.matrix.api.room.CurrentUserMembership |
|
|
|
import io.element.android.libraries.matrix.api.room.MatrixRoomInfo |
|
|
|
import io.element.android.libraries.matrix.api.room.MatrixRoomInfo |
|
|
|
import io.element.android.libraries.matrix.api.room.RoomNotificationMode |
|
|
|
import io.element.android.libraries.matrix.api.room.RoomNotificationMode |
|
|
|
|
|
|
|
import io.element.android.libraries.matrix.api.user.MatrixUser |
|
|
|
import io.element.android.libraries.matrix.impl.room.member.RoomMemberMapper |
|
|
|
import io.element.android.libraries.matrix.impl.room.member.RoomMemberMapper |
|
|
|
import kotlinx.collections.immutable.ImmutableMap |
|
|
|
import kotlinx.collections.immutable.ImmutableMap |
|
|
|
import kotlinx.collections.immutable.toImmutableList |
|
|
|
import kotlinx.collections.immutable.toImmutableList |
|
|
|
import kotlinx.collections.immutable.toPersistentMap |
|
|
|
import kotlinx.collections.immutable.toPersistentMap |
|
|
|
|
|
|
|
import org.matrix.rustcomponents.sdk.RoomHero |
|
|
|
import org.matrix.rustcomponents.sdk.Membership as RustMembership |
|
|
|
import org.matrix.rustcomponents.sdk.Membership as RustMembership |
|
|
|
import org.matrix.rustcomponents.sdk.RoomInfo as RustRoomInfo |
|
|
|
import org.matrix.rustcomponents.sdk.RoomInfo as RustRoomInfo |
|
|
|
import org.matrix.rustcomponents.sdk.RoomNotificationMode as RustRoomNotificationMode |
|
|
|
import org.matrix.rustcomponents.sdk.RoomNotificationMode as RustRoomNotificationMode |
|
|
@ -55,7 +57,8 @@ class MatrixRoomInfoMapper { |
|
|
|
notificationCount = it.notificationCount.toLong(), |
|
|
|
notificationCount = it.notificationCount.toLong(), |
|
|
|
userDefinedNotificationMode = it.userDefinedNotificationMode?.map(), |
|
|
|
userDefinedNotificationMode = it.userDefinedNotificationMode?.map(), |
|
|
|
hasRoomCall = it.hasRoomCall, |
|
|
|
hasRoomCall = it.hasRoomCall, |
|
|
|
activeRoomCallParticipants = it.activeRoomCallParticipants.toImmutableList() |
|
|
|
activeRoomCallParticipants = it.activeRoomCallParticipants.toImmutableList(), |
|
|
|
|
|
|
|
heroes = it.heroes.map { hero -> hero.map() }.toImmutableList() |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -72,6 +75,15 @@ fun RustRoomNotificationMode.map(): RoomNotificationMode = when (this) { |
|
|
|
RustRoomNotificationMode.MUTE -> RoomNotificationMode.MUTE |
|
|
|
RustRoomNotificationMode.MUTE -> RoomNotificationMode.MUTE |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* Map a RoomHero to a MatrixUser. There is not need to create a RoomHero type on the application side. |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
fun RoomHero.map(): MatrixUser = MatrixUser( |
|
|
|
|
|
|
|
userId = UserId(userId), |
|
|
|
|
|
|
|
displayName = displayName, |
|
|
|
|
|
|
|
avatarUrl = avatarUrl |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
fun mapPowerLevels(powerLevels: Map<String, Long>): ImmutableMap<UserId, Long> { |
|
|
|
fun mapPowerLevels(powerLevels: Map<String, Long>): ImmutableMap<UserId, Long> { |
|
|
|
return powerLevels.mapKeys { (key, _) -> UserId(key) }.toPersistentMap() |
|
|
|
return powerLevels.mapKeys { (key, _) -> UserId(key) }.toPersistentMap() |
|
|
|
} |
|
|
|
} |
|
|
|