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 c563754a068a311f3ecd035c53e81ee166d6c58c..2f5555fbc4b2d76510c73c11973d4d21aaa22e57 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
@@ -42,7 +42,10 @@ class CirclesDataSource @Inject constructor(
     private fun buildCirclesList(list: List<RoomSummary>): List<CircleListItem> {
         val invites =
             list.filter { isInviteToCircleTimeline(it) }.map { it.toInviteCircleListItem() }
-        val joinedCircles = list.filter { isJoinedCircle(it) }
+
+        val joinedCirclesSpaceIds = getJoinedCirclesIds()
+        val joinedCircles = list.filter { isJoinedCircle(it, joinedCirclesSpaceIds) }
+
         val sharedCircles =
             joinedCircles.filter { joinedCircle ->
                 sharedCircleDataSource.isCircleShared(joinedCircle.roomId)
@@ -63,13 +66,18 @@ class CirclesDataSource @Inject constructor(
         return displayList
     }
 
-    fun isJoinedCircle(summary: RoomSummary): Boolean {
-        if (summary.roomId == sharedCircleDataSource.getSharedCirclesSpaceId()) return false
+    fun isJoinedCircle(summary: RoomSummary, joinedCirclesIds: List<String>): Boolean =
+        joinedCirclesIds.contains(summary.roomId)
+
+    fun getJoinedCirclesIds(): List<String> {
         val circlesSpaceId = spacesTreeAccountDataSource.getRoomIdByKey(
             CIRCLES_SPACE_ACCOUNT_DATA_KEY
-        ) ?: return false
-        return getJoinedRoomById(circlesSpaceId)?.roomSummary()?.spaceChildren?.map { it.childRoomId }
-            ?.contains(summary.roomId) == true
+        ) ?: return emptyList()
+        val sharedCircleSpaceId = sharedCircleDataSource.getSharedCirclesSpaceId()
+        val ids = getJoinedRoomById(circlesSpaceId)?.roomSummary()?.spaceChildren
+            ?.map { it.childRoomId }
+            ?.filter { it != sharedCircleSpaceId }
+        return ids ?: emptyList()
     }
 
     private fun isInviteToCircleTimeline(summary: RoomSummary) =
diff --git a/app/src/main/java/org/futo/circles/feature/room/select/SelectRoomsDataSource.kt b/app/src/main/java/org/futo/circles/feature/room/select/SelectRoomsDataSource.kt
index 8b625ae69546a8056bef67f5e56cf241814c892b..c6d1c96e2f0c4d0b80d0a117bb425b8bdcbb7a1e 100644
--- a/app/src/main/java/org/futo/circles/feature/room/select/SelectRoomsDataSource.kt
+++ b/app/src/main/java/org/futo/circles/feature/room/select/SelectRoomsDataSource.kt
@@ -18,7 +18,6 @@ import org.futo.circles.core.model.GALLERY_TYPE
 import org.futo.circles.core.model.GROUP_TYPE
 import org.futo.circles.core.model.SelectableRoomListItem
 import org.futo.circles.core.provider.MatrixSessionProvider
-import org.futo.circles.core.workspace.SharedCircleDataSource
 import org.futo.circles.feature.circles.CirclesDataSource
 import org.matrix.android.sdk.api.session.room.model.Membership
 import org.matrix.android.sdk.api.session.room.model.RoomSummary
@@ -31,7 +30,7 @@ class SelectRoomsDataSource @Inject constructor(
     private val circleDataSource: CirclesDataSource
 ) {
 
-    val ordinal = savedStateHandle.getOrThrow<Int>(SelectRoomsFragment.TYPE_ORDINAL)
+    private val ordinal = savedStateHandle.getOrThrow<Int>(SelectRoomsFragment.TYPE_ORDINAL)
     private val roomType: CircleRoomTypeArg =
         CircleRoomTypeArg.values().firstOrNull { it.ordinal == ordinal }
             ?: CircleRoomTypeArg.Circle
@@ -47,7 +46,11 @@ class SelectRoomsDataSource @Inject constructor(
         }.flowOn(Dispatchers.IO).distinctUntilChanged()
 
     private fun getRoomsFlowWithType(): Flow<List<RoomSummary>> = when (roomType) {
-        CircleRoomTypeArg.Circle -> getFilteredRoomsFlow { circleDataSource.isJoinedCircle(it) }
+        CircleRoomTypeArg.Circle -> {
+            val joinedCirclesIds = circleDataSource.getJoinedCirclesIds()
+            getFilteredRoomsFlow { circleDataSource.isJoinedCircle(it, joinedCirclesIds) }
+        }
+
         CircleRoomTypeArg.Group -> getFilteredRoomsFlow { (it.roomType == GROUP_TYPE && it.membership == Membership.JOIN) }
         CircleRoomTypeArg.Photo -> getFilteredRoomsFlow { (it.roomType == GALLERY_TYPE && it.membership == Membership.JOIN) }
     }