From baa1c60ec0a3c0407ae5c05bc6ff07f1dc4574da Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Wed, 12 Jun 2024 14:23:28 +0300 Subject: [PATCH] Remove shared circles data source --- .../workspace/SharedCircleDataSource.kt | 65 ------------------- 1 file changed, 65 deletions(-) delete mode 100644 core/src/main/java/org/futo/circles/core/feature/workspace/SharedCircleDataSource.kt diff --git a/core/src/main/java/org/futo/circles/core/feature/workspace/SharedCircleDataSource.kt b/core/src/main/java/org/futo/circles/core/feature/workspace/SharedCircleDataSource.kt deleted file mode 100644 index 08f95dd54..000000000 --- a/core/src/main/java/org/futo/circles/core/feature/workspace/SharedCircleDataSource.kt +++ /dev/null @@ -1,65 +0,0 @@ -package org.futo.circles.core.feature.workspace - -import org.futo.circles.core.extensions.createResult -import org.futo.circles.core.extensions.getRoomOwner -import org.futo.circles.core.feature.room.RoomRelationsBuilder -import org.futo.circles.core.model.PROFILE_SPACE_ACCOUNT_DATA_KEY -import org.futo.circles.core.provider.MatrixSessionProvider -import org.futo.circles.core.utils.getJoinedRoomById -import org.futo.circles.core.utils.getTimelineRoomFor -import org.matrix.android.sdk.api.session.getRoomSummary -import org.matrix.android.sdk.api.session.room.model.RoomSummary -import javax.inject.Inject - -class SharedCircleDataSource @Inject constructor( - private val spacesTreeAccountDataSource: SpacesTreeAccountDataSource, - private val roomRelationsBuilder: RoomRelationsBuilder -) { - - fun getSharedCirclesSpaceId() = - spacesTreeAccountDataSource.getRoomIdByKey(PROFILE_SPACE_ACCOUNT_DATA_KEY) - - suspend fun unfollowUsersSharedCircle(userId: String) { - val userSharedCircleId = - getSharedCircleFor(userId)?.roomId - ?: throw IllegalArgumentException("User's profile not found") - val mySharedCircleId = getSharedCirclesSpaceId() - ?: throw IllegalArgumentException("Workspace configuration failure") - - roomRelationsBuilder.removeRelations(userSharedCircleId, mySharedCircleId) - MatrixSessionProvider.getSessionOrThrow().roomService().leaveRoom(userSharedCircleId) - } - - suspend fun addToSharedCircles(timelineId: String) { - getSharedCirclesSpaceId()?.let { roomRelationsBuilder.setRelations(timelineId, it) } - } - - suspend fun removeFromSharedCircles(timelineId: String) { - getSharedCirclesSpaceId()?.let { roomRelationsBuilder.removeRelations(timelineId, it) } - } - - fun getSharedCircleFor(userId: String): RoomSummary? { - val sharedCirclesSpaceId = getSharedCirclesSpaceId() ?: return null - val userSharedCircleId = - getJoinedRoomById(sharedCirclesSpaceId)?.roomSummary()?.spaceChildren?.firstOrNull { child -> - getRoomOwner(child.childRoomId)?.userId == userId - }?.childRoomId ?: return null - return getJoinedRoomById(userSharedCircleId)?.roomSummary() - } - - 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 - return sharedCirclesTimelineIds.contains(timelineId) - } - - suspend fun acceptSharedCircleInvite(roomId: String) = createResult { - MatrixSessionProvider.getSessionOrThrow().roomService().joinRoom(roomId) - val sharedCirclesSpaceId = - getSharedCirclesSpaceId() ?: throw IllegalArgumentException("Profile space not found") - roomRelationsBuilder.setRelations(roomId, sharedCirclesSpaceId) - } -} \ No newline at end of file -- GitLab