From cd64ec5c18985578dae3ea81ae4e7f913bbaf983 Mon Sep 17 00:00:00 2001 From: Eneko Nieto Date: Sat, 30 Apr 2022 20:10:55 +0200 Subject: [PATCH] fixed getRoomName() --- src/main/kotlin/eu/fosil/okupamicoche/model/Travel.kt | 7 ++++--- .../kotlin/eu/fosil/okupamicoche/model/TravelRepository.kt | 7 ++++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/eu/fosil/okupamicoche/model/Travel.kt b/src/main/kotlin/eu/fosil/okupamicoche/model/Travel.kt index ca62449..c2b8eb8 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/model/Travel.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/model/Travel.kt @@ -10,7 +10,7 @@ class Travel( var room: RoomId, var driver: UserId, var options: TravelOptions, - var travelers: List = listOf(), + var travelers: List> = listOf(), var duplicateNum: Int? = null, var canceled: Boolean = false ) @@ -39,9 +39,10 @@ class TravelOptions( return "Travel ${from}-${to} $date $time" } - fun getRoomName(duplicateNum: Int?, travelers: List? = null): String { + fun getRoomName(duplicateNum: Int?, travelers: List>? = null): String { val attemptSuffix = if ((duplicateNum ?: 0) > 0) " ($duplicateNum)" else "" - val availableSeats = seats - (travelers?.size ?: 0) + val usedSeats = travelers?.sumOf { it.second } ?: 0 + val availableSeats = seats - usedSeats return getRoomNamePrefix() + " | $availableSeats seats available" + attemptSuffix } diff --git a/src/main/kotlin/eu/fosil/okupamicoche/model/TravelRepository.kt b/src/main/kotlin/eu/fosil/okupamicoche/model/TravelRepository.kt index 19ede90..68c300b 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/model/TravelRepository.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/model/TravelRepository.kt @@ -52,7 +52,12 @@ object TravelRepository { suspend fun getTravelers(roomId: RoomId) = MatrixApiClient.client.rooms.getState(roomId).getOrNull()?.filter { val content = it.content (content is TravelMembershipStateEventContent) && (content.membership == Membership.JOIN.value) - }?.map { UserId("@${it.stateKey}") } + }?.map { + Pair( + UserId("@${it.stateKey}"), + (it.content as TravelMembershipStateEventContent).seats + ) + } private suspend fun getUsedSeats(roomId: RoomId) = MatrixApiClient.client.rooms.getState(roomId).getOrNull()?.map { it.content