From 9f2b09858692041714986e2d83e5235292a9b503 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Wed, 12 Jun 2024 16:15:02 +0300
Subject: [PATCH] Fix room icon url for select rooms

---
 .../circles/mapping/RoomSummaryMapping.kt     |  3 +--
 .../room/select/SelectRoomsDataSource.kt      |  7 ++++++-
 .../core/mapping/RoomSummaryMapping.kt        | 19 +++++++++++--------
 .../circles/core/model/RoomInviteListItem.kt  |  4 ++--
 .../circles/core/model/TimelineListItem.kt    |  5 ++---
 .../select/SelectGalleriesDataSource.kt       |  5 ++++-
 6 files changed, 26 insertions(+), 17 deletions(-)

diff --git a/app/src/main/java/org/futo/circles/mapping/RoomSummaryMapping.kt b/app/src/main/java/org/futo/circles/mapping/RoomSummaryMapping.kt
index bc0f1e84e..cf6d75c71 100644
--- a/app/src/main/java/org/futo/circles/mapping/RoomSummaryMapping.kt
+++ b/app/src/main/java/org/futo/circles/mapping/RoomSummaryMapping.kt
@@ -5,7 +5,6 @@ import org.futo.circles.core.extensions.getPowerLevelContent
 import org.futo.circles.core.extensions.getRoomOwner
 import org.futo.circles.core.extensions.isCurrentUserAbleToInvite
 import org.futo.circles.core.mapping.nameOrId
-import org.futo.circles.core.mapping.toRoomInfo
 import org.futo.circles.core.model.RoomInfo
 import org.futo.circles.core.provider.MatrixSessionProvider
 import org.futo.circles.core.utils.getJoinedRoomById
@@ -21,7 +20,7 @@ import org.matrix.android.sdk.api.session.room.model.RoomSummary
 
 fun RoomSummary.toJoinedGroupListItem() = JoinedGroupListItem(
     id = roomId,
-    info = toRoomInfo(),
+    info = RoomInfo(nameOrId(), avatarUrl),
     topic = topic,
     isEncrypted = isEncrypted,
     membersCount = joinedMembersCount ?: 0,
diff --git a/core/src/main/java/org/futo/circles/core/feature/room/select/SelectRoomsDataSource.kt b/core/src/main/java/org/futo/circles/core/feature/room/select/SelectRoomsDataSource.kt
index 72e6e1fb1..ad184af93 100644
--- a/core/src/main/java/org/futo/circles/core/feature/room/select/SelectRoomsDataSource.kt
+++ b/core/src/main/java/org/futo/circles/core/feature/room/select/SelectRoomsDataSource.kt
@@ -38,7 +38,12 @@ class SelectRoomsDataSource @Inject constructor(
 
     private fun getMergedRoomsListFlow() =
         combine(getRoomsFlowWithType(), selectedRoomsFlow) { rooms, selectedRooms ->
-            rooms.map { room -> room.toSelectableRoomListItem(selectedRooms.containsWithId(room.roomId)) }
+            rooms.map { room ->
+                room.toSelectableRoomListItem(
+                    roomType,
+                    selectedRooms.containsWithId(room.roomId)
+                )
+            }
         }.flowOn(Dispatchers.IO).distinctUntilChanged()
 
     private fun getRoomsFlowWithType(): Flow<List<RoomSummary>> = when (roomType) {
diff --git a/core/src/main/java/org/futo/circles/core/mapping/RoomSummaryMapping.kt b/core/src/main/java/org/futo/circles/core/mapping/RoomSummaryMapping.kt
index d29fdeb8f..76772f3e0 100644
--- a/core/src/main/java/org/futo/circles/core/mapping/RoomSummaryMapping.kt
+++ b/core/src/main/java/org/futo/circles/core/mapping/RoomSummaryMapping.kt
@@ -1,7 +1,9 @@
 package org.futo.circles.core.mapping
 
+import org.futo.circles.core.extensions.getCircleAvatarUrl
 import org.futo.circles.core.extensions.getRoomOwner
 import org.futo.circles.core.extensions.notEmptyDisplayName
+import org.futo.circles.core.model.CircleRoomTypeArg
 import org.futo.circles.core.model.JoinedGalleryListItem
 import org.futo.circles.core.model.RoomInfo
 import org.futo.circles.core.model.SelectableRoomListItem
@@ -12,20 +14,21 @@ import org.matrix.android.sdk.api.session.user.model.User
 fun RoomSummary.nameOrId() =
     displayName.takeIf { it.isNotEmpty() } ?: name.takeIf { it.isNotEmpty() } ?: roomId
 
-fun RoomSummary.toRoomInfo() = RoomInfo(
-    title = nameOrId(),
-    avatarUrl = avatarUrl
-)
-
-fun RoomSummary.toSelectableRoomListItem(selected: Boolean = false) = SelectableRoomListItem(
+fun RoomSummary.toSelectableRoomListItem(
+    roomTypeArg: CircleRoomTypeArg,
+    selected: Boolean = false
+) = SelectableRoomListItem(
     id = roomId,
-    info = toRoomInfo(),
+    info = RoomInfo(
+        nameOrId(),
+        if (roomTypeArg == CircleRoomTypeArg.Circle) getCircleAvatarUrl() else avatarUrl
+    ),
     isSelected = selected
 )
 
 fun RoomSummary.toJoinedGalleryListItem() = JoinedGalleryListItem(
     id = roomId,
-    info = toRoomInfo(),
+    info = RoomInfo(nameOrId(), avatarUrl),
     roomOwner = getRoomOwner(roomId)?.toUser()
 )
 
diff --git a/core/src/main/java/org/futo/circles/core/model/RoomInviteListItem.kt b/core/src/main/java/org/futo/circles/core/model/RoomInviteListItem.kt
index ecf322a95..0b76d9411 100644
--- a/core/src/main/java/org/futo/circles/core/model/RoomInviteListItem.kt
+++ b/core/src/main/java/org/futo/circles/core/model/RoomInviteListItem.kt
@@ -2,7 +2,7 @@ package org.futo.circles.core.model
 
 import org.futo.circles.core.base.list.IdEntity
 import org.futo.circles.core.extensions.notEmptyDisplayName
-import org.futo.circles.core.mapping.toRoomInfo
+import org.futo.circles.core.mapping.nameOrId
 import org.futo.circles.core.provider.MatrixSessionProvider
 import org.matrix.android.sdk.api.session.getUserOrDefault
 import org.matrix.android.sdk.api.session.room.model.RoomSummary
@@ -22,7 +22,7 @@ data class RoomInviteListItem(
 fun RoomSummary.toRoomInviteListItem(roomType: CircleRoomTypeArg, shouldBlurIcon: Boolean) =
     RoomInviteListItem(
         roomId = roomId,
-        info = toRoomInfo(),
+        info = RoomInfo(nameOrId(), avatarUrl),
         inviterName = getInviterName(),
         isEncrypted = isEncrypted,
         shouldBlurIcon = shouldBlurIcon,
diff --git a/core/src/main/java/org/futo/circles/core/model/TimelineListItem.kt b/core/src/main/java/org/futo/circles/core/model/TimelineListItem.kt
index 2a6925490..063379ba3 100644
--- a/core/src/main/java/org/futo/circles/core/model/TimelineListItem.kt
+++ b/core/src/main/java/org/futo/circles/core/model/TimelineListItem.kt
@@ -2,8 +2,7 @@ package org.futo.circles.core.model
 
 import org.futo.circles.core.R
 import org.futo.circles.core.base.list.IdEntity
-import org.futo.circles.core.mapping.toRoomInfo
-import org.matrix.android.sdk.api.session.room.model.Membership
+import org.futo.circles.core.mapping.nameOrId
 import org.matrix.android.sdk.api.session.room.model.RoomSummary
 
 sealed class TimelineListItem : IdEntity<String>
@@ -34,7 +33,7 @@ data class MutualFriendListItem(
 
 fun RoomSummary.toTimelineRoomListItem() = TimelineRoomListItem(
     id = roomId,
-    info = toRoomInfo(),
+    info = RoomInfo(nameOrId(), avatarUrl),
 )
 
 
diff --git a/gallery/src/main/java/org/futo/circles/gallery/feature/select/SelectGalleriesDataSource.kt b/gallery/src/main/java/org/futo/circles/gallery/feature/select/SelectGalleriesDataSource.kt
index 644a8400b..e12de59d4 100644
--- a/gallery/src/main/java/org/futo/circles/gallery/feature/select/SelectGalleriesDataSource.kt
+++ b/gallery/src/main/java/org/futo/circles/gallery/feature/select/SelectGalleriesDataSource.kt
@@ -2,6 +2,7 @@ package org.futo.circles.gallery.feature.select
 
 import androidx.lifecycle.MutableLiveData
 import org.futo.circles.core.mapping.toSelectableRoomListItem
+import org.futo.circles.core.model.CircleRoomTypeArg
 import org.futo.circles.core.model.SelectableRoomListItem
 import org.futo.circles.core.utils.getGalleries
 import org.matrix.android.sdk.api.session.room.model.Membership
@@ -12,7 +13,9 @@ class SelectGalleriesDataSource @Inject constructor() {
     val galleriesLiveData = MutableLiveData(getInitialGalleriesList())
 
     private fun getInitialGalleriesList(): List<SelectableRoomListItem> =
-        getGalleries(membershipFilter = listOf(Membership.JOIN)).map { it.toSelectableRoomListItem() }
+        getGalleries(membershipFilter = listOf(Membership.JOIN)).map {
+            it.toSelectableRoomListItem(CircleRoomTypeArg.Photo)
+        }
 
     fun toggleGallerySelect(gallery: SelectableRoomListItem) {
         val newList = galleriesLiveData.value?.toMutableList()?.map {
-- 
GitLab