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 2f5555fbc4b2d76510c73c11973d4d21aaa22e57..f876fe84b1b51e83329a92d52e8c302d6e4b97a8 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 1df0a20589f0705fbe99e52e530c0f461acc99b1..04f5f0604e8f77a4e7e6902a960be9e0d4d156be 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 abf48e67954807499b1b3a585822eef1c9b06c54..e7253a585757a203c1b2222b2524d549c2c060ff 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