From 6bd5f8982c5ff30fd4669adf8604fec451acf013 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Fri, 22 Dec 2023 15:11:50 +0200
Subject: [PATCH] Remove invites from people data source

---
 .../circles/feature/people/PeopleDataSource.kt | 18 ++++--------------
 .../org/futo/circles/model/CircleListItem.kt   | 11 ++++-------
 .../org/futo/circles/model/PeopleListItem.kt   | 16 +++++-----------
 3 files changed, 13 insertions(+), 32 deletions(-)

diff --git a/app/src/main/java/org/futo/circles/feature/people/PeopleDataSource.kt b/app/src/main/java/org/futo/circles/feature/people/PeopleDataSource.kt
index b98496b20..6e9e8c5ed 100644
--- a/app/src/main/java/org/futo/circles/feature/people/PeopleDataSource.kt
+++ b/app/src/main/java/org/futo/circles/feature/people/PeopleDataSource.kt
@@ -7,7 +7,6 @@ import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.flow.flowOf
 import kotlinx.coroutines.withContext
-import org.futo.circles.core.extensions.createResult
 import org.futo.circles.core.feature.room.knoks.KnockRequestsDataSource
 import org.futo.circles.core.feature.select_users.SearchUserDataSource
 import org.futo.circles.core.feature.workspace.SharedCircleDataSource
@@ -17,7 +16,7 @@ import org.futo.circles.mapping.toPeopleUserListItem
 import org.futo.circles.model.PeopleHeaderItem
 import org.futo.circles.model.PeopleItemType
 import org.futo.circles.model.PeopleListItem
-import org.futo.circles.model.toPeopleRequestListItem
+import org.futo.circles.model.PeopleRequestNotificationListItem
 import org.matrix.android.sdk.api.session.getRoom
 import org.matrix.android.sdk.api.session.user.model.User
 import javax.inject.Inject
@@ -31,13 +30,6 @@ class PeopleDataSource @Inject constructor(
     private val session = MatrixSessionProvider.currentSession
     private val profileRoomId = sharedCircleDataSource.getSharedCirclesSpaceId() ?: ""
 
-    suspend fun acceptFollowRequest(userId: String) = createResult {
-        session?.roomService()?.getRoom(profileRoomId)?.membershipService()?.invite(userId)
-    }
-
-    suspend fun declineFollowRequest(userId: String) =
-        createResult { session?.getRoom(profileRoomId)?.membershipService()?.remove(userId) }
-
     private fun getProfileRoomMembersKnockFlow(): Flow<List<KnockRequestListItem>> =
         knockRequestsDataSource.getKnockRequestsListItemsLiveData(profileRoomId)?.asFlow()
             ?: flowOf()
@@ -67,7 +59,6 @@ class PeopleDataSource @Inject constructor(
     ): List<PeopleListItem> {
         val ignoredUsersIds = ignoredUsers.map { it.userId }.toSet()
         val uniqueItemsList = mutableListOf<PeopleListItem>().apply {
-            addAll(requests.map { it.toPeopleRequestListItem() })
             addAll(knowUsers.map { it.toPeopleUserListItem(getKnownUserItemType(it.userId)) })
             addAll(suggestions.map { it.toPeopleUserListItem(PeopleItemType.Suggestion) })
         }
@@ -75,10 +66,9 @@ class PeopleDataSource @Inject constructor(
             .filterNot { it.id == session?.myUserId || ignoredUsersIds.contains(it.id) }
 
         return mutableListOf<PeopleListItem>().apply {
-            addSection(
-                PeopleHeaderItem.requests,
-                uniqueItemsList.filter { it.type == PeopleItemType.Request }
-            )
+            if (requests.isNotEmpty())
+                add(PeopleRequestNotificationListItem(requests.size))
+
             addSection(
                 PeopleHeaderItem.friends,
                 uniqueItemsList.filter { it.type == PeopleItemType.Friend }
diff --git a/app/src/main/java/org/futo/circles/model/CircleListItem.kt b/app/src/main/java/org/futo/circles/model/CircleListItem.kt
index b11467fed..398d7984c 100644
--- a/app/src/main/java/org/futo/circles/model/CircleListItem.kt
+++ b/app/src/main/java/org/futo/circles/model/CircleListItem.kt
@@ -12,7 +12,6 @@ data class CirclesHeaderItem(
     override val id: String = titleRes.toString()
 
     companion object {
-        val invitesCirclesHeader = CirclesHeaderItem(R.string.invites)
         val sharedCirclesHeader = CirclesHeaderItem(R.string.shared_circles)
         val privateCirclesHeader = CirclesHeaderItem(R.string.private_circles)
     }
@@ -34,10 +33,8 @@ data class JoinedCircleListItem(
     val knockRequestsCount: Int
 ) : CircleRoomListItem(id, info, Membership.JOIN)
 
-data class InvitedCircleListItem(
-    override val id: String,
-    override val info: RoomInfo,
-    val inviterName: String,
-    val shouldBlurIcon: Boolean
-) : CircleRoomListItem(id, info, Membership.INVITE)
+data class CircleInvitesNotificationListItem(
+    val invitesCount: Int,
+    override val id: String = "CircleInvitesNotificationListItem"
+) : CircleListItem()
 
diff --git a/app/src/main/java/org/futo/circles/model/PeopleListItem.kt b/app/src/main/java/org/futo/circles/model/PeopleListItem.kt
index 1f0874b7d..9f5ed2b55 100644
--- a/app/src/main/java/org/futo/circles/model/PeopleListItem.kt
+++ b/app/src/main/java/org/futo/circles/model/PeopleListItem.kt
@@ -3,10 +3,8 @@ package org.futo.circles.model
 import org.futo.circles.R
 import org.futo.circles.core.base.list.IdEntity
 import org.futo.circles.core.model.CirclesUserSummary
-import org.futo.circles.core.model.KnockRequestListItem
-import org.futo.circles.core.model.toCircleUser
 
-enum class PeopleItemType { Header, Friend, Following, Follower, Request, Known, Suggestion }
+enum class PeopleItemType { Header, Friend, Following, Follower, RequestNotification, Known, Suggestion }
 sealed class PeopleListItem(
     open val type: PeopleItemType
 ) : IdEntity<String>
@@ -22,7 +20,6 @@ data class PeopleHeaderItem(
         val followingUsersHeader = PeopleHeaderItem(R.string.following)
         val knownUsersHeader = PeopleHeaderItem(R.string.known_users)
         val suggestions = PeopleHeaderItem(R.string.suggestions)
-        val requests = PeopleHeaderItem(R.string.requests)
     }
 }
 
@@ -33,11 +30,8 @@ class PeopleUserListItem(
     override val id: String = user.id
 }
 
-class PeopleRequestListItem(
-    val user: CirclesUserSummary,
-    val reasonMessage: String?
-) : PeopleListItem(PeopleItemType.Request) {
-    override val id: String = user.id
+class PeopleRequestNotificationListItem(
+    val requestsCount: Int
+) : PeopleListItem(PeopleItemType.RequestNotification) {
+    override val id: String = "PeopleRequestNotificationListItem"
 }
-
-fun KnockRequestListItem.toPeopleRequestListItem() = PeopleRequestListItem(toCircleUser(), message)
-- 
GitLab