Ignore/Unignore: makes more sense to be at the client level than room

This commit is contained in:
ganfra 2023-04-27 22:13:25 +02:00
parent ccfe0bb10c
commit 884cdb9575
10 changed files with 60 additions and 35 deletions

View file

@ -49,7 +49,7 @@ object RoomMemberProvidesModule {
): RoomMemberDetailsPresenter.Factory {
return object : RoomMemberDetailsPresenter.Factory {
override fun create(roomMember: RoomMember): RoomMemberDetailsPresenter {
return RoomMemberDetailsPresenter(matrixClient.sessionId, room, roomMember)
return RoomMemberDetailsPresenter(matrixClient, room, roomMember)
}
}
}

View file

@ -28,6 +28,7 @@ import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsState.ConfirmationDialog
import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.core.SessionId
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.room.MatrixRoom
@ -36,7 +37,7 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
class RoomMemberDetailsPresenter @AssistedInject constructor(
private val currentUserSessionId: SessionId,
private val client: MatrixClient,
private val room: MatrixRoom,
@Assisted private val roomMember: RoomMember,
) : Presenter<RoomMemberDetailsState> {
@ -91,16 +92,16 @@ class RoomMemberDetailsPresenter @AssistedInject constructor(
avatarUrl = userAvatar,
isBlocked = isBlocked.value,
displayConfirmationDialog = confirmationDialog,
isCurrentUser = roomMember.userId == currentUserSessionId,
isCurrentUser = roomMember.userId == client.sessionId,
eventSink = ::handleEvents
)
}
private fun CoroutineScope.blockUser(userId: UserId, isBlockedState: MutableState<Boolean>) = launch {
room.ignoreUser(userId).onSuccess { isBlockedState.value = true }
client.ignoreUser(userId).onSuccess { isBlockedState.value = true }
}
private fun CoroutineScope.unblockUser(userId: UserId, isBlockedState: MutableState<Boolean>) = launch {
room.unignoreUser(userId).onSuccess { isBlockedState.value = false }
client.unignoreUser(userId).onSuccess { isBlockedState.value = false }
}
}