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