Skip to content
Snippets Groups Projects
Commit 6bd5f898 authored by Taras's avatar Taras
Browse files

Remove invites from people data source

parent 705c32d1
No related branches found
No related tags found
No related merge requests found
...@@ -7,7 +7,6 @@ import kotlinx.coroutines.flow.combine ...@@ -7,7 +7,6 @@ import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.withContext 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.room.knoks.KnockRequestsDataSource
import org.futo.circles.core.feature.select_users.SearchUserDataSource import org.futo.circles.core.feature.select_users.SearchUserDataSource
import org.futo.circles.core.feature.workspace.SharedCircleDataSource import org.futo.circles.core.feature.workspace.SharedCircleDataSource
...@@ -17,7 +16,7 @@ import org.futo.circles.mapping.toPeopleUserListItem ...@@ -17,7 +16,7 @@ import org.futo.circles.mapping.toPeopleUserListItem
import org.futo.circles.model.PeopleHeaderItem import org.futo.circles.model.PeopleHeaderItem
import org.futo.circles.model.PeopleItemType import org.futo.circles.model.PeopleItemType
import org.futo.circles.model.PeopleListItem 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.getRoom
import org.matrix.android.sdk.api.session.user.model.User import org.matrix.android.sdk.api.session.user.model.User
import javax.inject.Inject import javax.inject.Inject
...@@ -31,13 +30,6 @@ class PeopleDataSource @Inject constructor( ...@@ -31,13 +30,6 @@ class PeopleDataSource @Inject constructor(
private val session = MatrixSessionProvider.currentSession private val session = MatrixSessionProvider.currentSession
private val profileRoomId = sharedCircleDataSource.getSharedCirclesSpaceId() ?: "" 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>> = private fun getProfileRoomMembersKnockFlow(): Flow<List<KnockRequestListItem>> =
knockRequestsDataSource.getKnockRequestsListItemsLiveData(profileRoomId)?.asFlow() knockRequestsDataSource.getKnockRequestsListItemsLiveData(profileRoomId)?.asFlow()
?: flowOf() ?: flowOf()
...@@ -67,7 +59,6 @@ class PeopleDataSource @Inject constructor( ...@@ -67,7 +59,6 @@ class PeopleDataSource @Inject constructor(
): List<PeopleListItem> { ): List<PeopleListItem> {
val ignoredUsersIds = ignoredUsers.map { it.userId }.toSet() val ignoredUsersIds = ignoredUsers.map { it.userId }.toSet()
val uniqueItemsList = mutableListOf<PeopleListItem>().apply { val uniqueItemsList = mutableListOf<PeopleListItem>().apply {
addAll(requests.map { it.toPeopleRequestListItem() })
addAll(knowUsers.map { it.toPeopleUserListItem(getKnownUserItemType(it.userId)) }) addAll(knowUsers.map { it.toPeopleUserListItem(getKnownUserItemType(it.userId)) })
addAll(suggestions.map { it.toPeopleUserListItem(PeopleItemType.Suggestion) }) addAll(suggestions.map { it.toPeopleUserListItem(PeopleItemType.Suggestion) })
} }
...@@ -75,10 +66,9 @@ class PeopleDataSource @Inject constructor( ...@@ -75,10 +66,9 @@ class PeopleDataSource @Inject constructor(
.filterNot { it.id == session?.myUserId || ignoredUsersIds.contains(it.id) } .filterNot { it.id == session?.myUserId || ignoredUsersIds.contains(it.id) }
return mutableListOf<PeopleListItem>().apply { return mutableListOf<PeopleListItem>().apply {
addSection( if (requests.isNotEmpty())
PeopleHeaderItem.requests, add(PeopleRequestNotificationListItem(requests.size))
uniqueItemsList.filter { it.type == PeopleItemType.Request }
)
addSection( addSection(
PeopleHeaderItem.friends, PeopleHeaderItem.friends,
uniqueItemsList.filter { it.type == PeopleItemType.Friend } uniqueItemsList.filter { it.type == PeopleItemType.Friend }
......
...@@ -12,7 +12,6 @@ data class CirclesHeaderItem( ...@@ -12,7 +12,6 @@ data class CirclesHeaderItem(
override val id: String = titleRes.toString() override val id: String = titleRes.toString()
companion object { companion object {
val invitesCirclesHeader = CirclesHeaderItem(R.string.invites)
val sharedCirclesHeader = CirclesHeaderItem(R.string.shared_circles) val sharedCirclesHeader = CirclesHeaderItem(R.string.shared_circles)
val privateCirclesHeader = CirclesHeaderItem(R.string.private_circles) val privateCirclesHeader = CirclesHeaderItem(R.string.private_circles)
} }
...@@ -34,10 +33,8 @@ data class JoinedCircleListItem( ...@@ -34,10 +33,8 @@ data class JoinedCircleListItem(
val knockRequestsCount: Int val knockRequestsCount: Int
) : CircleRoomListItem(id, info, Membership.JOIN) ) : CircleRoomListItem(id, info, Membership.JOIN)
data class InvitedCircleListItem( data class CircleInvitesNotificationListItem(
override val id: String, val invitesCount: Int,
override val info: RoomInfo, override val id: String = "CircleInvitesNotificationListItem"
val inviterName: String, ) : CircleListItem()
val shouldBlurIcon: Boolean
) : CircleRoomListItem(id, info, Membership.INVITE)
...@@ -3,10 +3,8 @@ package org.futo.circles.model ...@@ -3,10 +3,8 @@ package org.futo.circles.model
import org.futo.circles.R import org.futo.circles.R
import org.futo.circles.core.base.list.IdEntity import org.futo.circles.core.base.list.IdEntity
import org.futo.circles.core.model.CirclesUserSummary 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( sealed class PeopleListItem(
open val type: PeopleItemType open val type: PeopleItemType
) : IdEntity<String> ) : IdEntity<String>
...@@ -22,7 +20,6 @@ data class PeopleHeaderItem( ...@@ -22,7 +20,6 @@ data class PeopleHeaderItem(
val followingUsersHeader = PeopleHeaderItem(R.string.following) val followingUsersHeader = PeopleHeaderItem(R.string.following)
val knownUsersHeader = PeopleHeaderItem(R.string.known_users) val knownUsersHeader = PeopleHeaderItem(R.string.known_users)
val suggestions = PeopleHeaderItem(R.string.suggestions) val suggestions = PeopleHeaderItem(R.string.suggestions)
val requests = PeopleHeaderItem(R.string.requests)
} }
} }
...@@ -33,11 +30,8 @@ class PeopleUserListItem( ...@@ -33,11 +30,8 @@ class PeopleUserListItem(
override val id: String = user.id override val id: String = user.id
} }
class PeopleRequestListItem( class PeopleRequestNotificationListItem(
val user: CirclesUserSummary, val requestsCount: Int
val reasonMessage: String? ) : PeopleListItem(PeopleItemType.RequestNotification) {
) : PeopleListItem(PeopleItemType.Request) { override val id: String = "PeopleRequestNotificationListItem"
override val id: String = user.id
} }
fun KnockRequestListItem.toPeopleRequestListItem() = PeopleRequestListItem(toCircleUser(), message)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment