From 33a082c535fbfbfc67d54db3e2783f00c634e28e Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Fri, 29 Sep 2023 14:42:06 +0300 Subject: [PATCH] Improve isCircleShared check --- .../futo/circles/feature/circles/CirclesDataSource.kt | 11 +++++++---- .../circles/core/room/update/UpdateRoomDataSource.kt | 7 +++++-- .../circles/core/workspace/SharedCircleDataSource.kt | 11 ++++++----- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/futo/circles/feature/circles/CirclesDataSource.kt b/app/src/main/java/org/futo/circles/feature/circles/CirclesDataSource.kt index 2f5555fbc..f876fe84b 100644 --- a/app/src/main/java/org/futo/circles/feature/circles/CirclesDataSource.kt +++ b/app/src/main/java/org/futo/circles/feature/circles/CirclesDataSource.kt @@ -46,10 +46,13 @@ class CirclesDataSource @Inject constructor( val joinedCirclesSpaceIds = getJoinedCirclesIds() val joinedCircles = list.filter { isJoinedCircle(it, joinedCirclesSpaceIds) } - val sharedCircles = - joinedCircles.filter { joinedCircle -> - sharedCircleDataSource.isCircleShared(joinedCircle.roomId) - } + val sharedCirclesTimelinesIds = sharedCircleDataSource.getSharedCirclesTimelinesIds() + val sharedCircles = joinedCircles.filter { joinedCircle -> + sharedCircleDataSource.isCircleShared( + joinedCircle.roomId, + sharedCirclesTimelinesIds + ) + } val privateCircles = joinedCircles - sharedCircles.toSet() val requests = getKnockRequestToSharedTimelines(joinedCircles) diff --git a/core/src/main/java/org/futo/circles/core/room/update/UpdateRoomDataSource.kt b/core/src/main/java/org/futo/circles/core/room/update/UpdateRoomDataSource.kt index 1df0a2058..04f5f0604 100644 --- a/core/src/main/java/org/futo/circles/core/room/update/UpdateRoomDataSource.kt +++ b/core/src/main/java/org/futo/circles/core/room/update/UpdateRoomDataSource.kt @@ -50,9 +50,12 @@ class UpdateRoomDataSource @Inject constructor( fun isTopicChanged(newTopic: String) = room?.roomSummary()?.topic != newTopic fun isPrivateSharedChanged(isPublic: Boolean) = room?.roomId?.let { - sharedCircleDataSource.isCircleShared(it) != isPublic + isCircleShared(it) != isPublic } ?: false - fun isCircleShared(circleId: String) = sharedCircleDataSource.isCircleShared(circleId) + fun isCircleShared(circleId: String) = sharedCircleDataSource.isCircleShared( + circleId, + sharedCircleDataSource.getSharedCirclesTimelinesIds() + ) } \ No newline at end of file diff --git a/core/src/main/java/org/futo/circles/core/workspace/SharedCircleDataSource.kt b/core/src/main/java/org/futo/circles/core/workspace/SharedCircleDataSource.kt index abf48e679..e7253a585 100644 --- a/core/src/main/java/org/futo/circles/core/workspace/SharedCircleDataSource.kt +++ b/core/src/main/java/org/futo/circles/core/workspace/SharedCircleDataSource.kt @@ -33,11 +33,12 @@ class SharedCircleDataSource @Inject constructor( getRoomOwners(summary.roomId).map { it.userId }.contains(userId) } - fun isCircleShared(circleId: String): Boolean { + fun getSharedCirclesTimelinesIds() = getSharedCirclesSpaceId()?.let { + MatrixSessionProvider.currentSession?.getRoomSummary(it)?.spaceChildren?.map { it.childRoomId } + } ?: emptyList() + + fun isCircleShared(circleId: String, sharedCirclesTimelineIds: List<String>): Boolean { val timelineId = getTimelineRoomFor(circleId)?.roomId - val sharedCirclesTimelinesIds = getSharedCirclesSpaceId()?.let { - MatrixSessionProvider.currentSession?.getRoomSummary(it)?.spaceChildren?.map { it.childRoomId } - } ?: emptyList() - return sharedCirclesTimelinesIds.contains(timelineId) + return sharedCirclesTimelineIds.contains(timelineId) } } \ No newline at end of file -- GitLab