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