mirror of
https://github.com/vector-im/riotX-android
synced 2025-10-05 15:52:47 +02:00
misc : clean up after PR review
This commit is contained in:
@@ -54,7 +54,6 @@ import im.vector.app.features.home.room.typing.TypingHelper
|
||||
import im.vector.app.features.location.live.StopLiveLocationShareUseCase
|
||||
import im.vector.app.features.location.live.tracking.LocationSharingServiceConnection
|
||||
import im.vector.app.features.notifications.NotificationDrawerManager
|
||||
import im.vector.app.features.powerlevel.PowerLevelsFlowFactory
|
||||
import im.vector.app.features.raw.wellknown.CryptoConfig
|
||||
import im.vector.app.features.raw.wellknown.getOutboundSessionKeySharingStrategyOrDefault
|
||||
import im.vector.app.features.raw.wellknown.withElementWellKnown
|
||||
@@ -302,7 +301,7 @@ class TimelineViewModel @AssistedInject constructor(
|
||||
|
||||
private fun observePowerLevel() {
|
||||
if (room == null) return
|
||||
PowerLevelsFlowFactory(room).createFlow()
|
||||
room.flow().liveRoomPowerLevels()
|
||||
.onEach { powerLevels ->
|
||||
val canInvite = powerLevels.isUserAbleToInvite(session.myUserId)
|
||||
val isAllowedToManageWidgets = session.widgetService().hasPermissionsToHandleWidgets(room.roomId)
|
||||
|
@@ -30,7 +30,6 @@ import im.vector.app.features.home.room.detail.ChatEffect
|
||||
import im.vector.app.features.home.room.detail.composer.rainbow.RainbowGenerator
|
||||
import im.vector.app.features.home.room.detail.composer.voice.VoiceMessageRecorderView
|
||||
import im.vector.app.features.home.room.detail.toMessageType
|
||||
import im.vector.app.features.powerlevel.PowerLevelsFlowFactory
|
||||
import im.vector.app.features.session.coroutineScope
|
||||
import im.vector.app.features.settings.VectorPreferences
|
||||
import im.vector.app.features.voice.VoiceFailure
|
||||
@@ -179,7 +178,7 @@ class MessageComposerViewModel @AssistedInject constructor(
|
||||
|
||||
private fun observePowerLevelAndEncryption(room: Room) {
|
||||
combine(
|
||||
PowerLevelsFlowFactory(room).createFlow(),
|
||||
room.flow().liveRoomPowerLevels(),
|
||||
room.flow().liveRoomSummary().unwrap()
|
||||
) { pl, sum ->
|
||||
val canSendMessage = pl.isUserAllowedToSend(session.myUserId, false, EventType.MESSAGE)
|
||||
|
@@ -23,7 +23,6 @@ import im.vector.app.features.home.room.detail.timeline.format.NoticeEventFormat
|
||||
import im.vector.app.features.html.EventHtmlRenderer
|
||||
import im.vector.app.features.html.PillsPostProcessor
|
||||
import im.vector.app.features.html.VectorHtmlCompressor
|
||||
import im.vector.app.features.powerlevel.PowerLevelsFlowFactory
|
||||
import im.vector.app.features.reactions.data.EmojiDataSource
|
||||
import im.vector.app.features.settings.VectorPreferences
|
||||
import im.vector.lib.strings.CommonStrings
|
||||
@@ -115,7 +114,7 @@ class MessageActionsViewModel @AssistedInject constructor(
|
||||
if (room == null) {
|
||||
return
|
||||
}
|
||||
PowerLevelsFlowFactory(room).createFlow()
|
||||
room.flow().liveRoomPowerLevels()
|
||||
.onEach { roomPowerLevels ->
|
||||
val canReact = roomPowerLevels.isUserAllowedToSend(session.myUserId, false, EventType.REACTION)
|
||||
val canRedact = roomPowerLevels.isUserAbleToRedact(session.myUserId)
|
||||
|
@@ -19,7 +19,6 @@ import im.vector.app.core.platform.VectorViewModel
|
||||
import im.vector.app.core.utils.PermissionChecker
|
||||
import im.vector.app.features.home.room.detail.timeline.helper.LocationPinProvider
|
||||
import im.vector.app.features.location.domain.usecase.CompareLocationsUseCase
|
||||
import im.vector.app.features.powerlevel.PowerLevelsFlowFactory
|
||||
import im.vector.app.features.settings.VectorPreferences
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
@@ -35,6 +34,7 @@ import org.matrix.android.sdk.api.session.events.model.EventType
|
||||
import org.matrix.android.sdk.api.session.getRoom
|
||||
import org.matrix.android.sdk.api.session.getUserOrDefault
|
||||
import org.matrix.android.sdk.api.util.toMatrixItem
|
||||
import org.matrix.android.sdk.flow.flow
|
||||
import timber.log.Timber
|
||||
|
||||
/**
|
||||
@@ -72,7 +72,7 @@ class LocationSharingViewModel @AssistedInject constructor(
|
||||
}
|
||||
|
||||
private fun observePowerLevelsForLiveLocationSharing() {
|
||||
PowerLevelsFlowFactory(room).createFlow()
|
||||
room.flow().liveRoomPowerLevels()
|
||||
.distinctUntilChanged()
|
||||
.setOnEach { roomPowerLevels ->
|
||||
val canShareLiveLocation = EventType.STATE_ROOM_BEACON_INFO.values
|
||||
|
@@ -1,47 +0,0 @@
|
||||
/*
|
||||
* Copyright 2020-2024 New Vector Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package im.vector.app.features.powerlevel
|
||||
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.flow.flowOn
|
||||
import org.matrix.android.sdk.api.query.QueryStringValue
|
||||
import org.matrix.android.sdk.api.session.events.model.EventType
|
||||
import org.matrix.android.sdk.api.session.events.model.toModel
|
||||
import org.matrix.android.sdk.api.session.room.Room
|
||||
import org.matrix.android.sdk.api.session.room.model.PowerLevelsContent
|
||||
import org.matrix.android.sdk.api.session.room.model.create.getRoomCreateContentWithSender
|
||||
import org.matrix.android.sdk.api.session.room.powerlevels.RoomPowerLevels
|
||||
import org.matrix.android.sdk.flow.flow
|
||||
import org.matrix.android.sdk.flow.mapOptional
|
||||
|
||||
class PowerLevelsFlowFactory(private val room: Room) {
|
||||
|
||||
fun createFlow(): Flow<RoomPowerLevels> {
|
||||
val flowRoom = room.flow()
|
||||
val powerLevelsFlow = flowRoom
|
||||
.liveStateEvent(EventType.STATE_ROOM_POWER_LEVELS, QueryStringValue.IsEmpty)
|
||||
.mapOptional { it.content.toModel<PowerLevelsContent>() }
|
||||
.flowOn(Dispatchers.Default)
|
||||
|
||||
val roomCreateFlow = flowRoom
|
||||
.liveStateEvent(EventType.STATE_ROOM_CREATE, QueryStringValue.IsEmpty)
|
||||
.mapOptional { event ->
|
||||
event.getRoomCreateContentWithSender()
|
||||
}
|
||||
.flowOn(Dispatchers.Default)
|
||||
|
||||
return combine(powerLevelsFlow, roomCreateFlow) { powerLevelsContent, roomCreateContent ->
|
||||
RoomPowerLevels(
|
||||
powerLevelsContent = powerLevelsContent.getOrNull(),
|
||||
roomCreateContent = roomCreateContent.getOrNull()
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
@@ -22,7 +22,7 @@ fun Role.isOwner() = this == Role.Creator || this == Role.SuperAdmin
|
||||
|
||||
fun Room.membersByRoleFlow(): Flow<Map<Role, List<RoomMemberSummary>>> {
|
||||
val roomMembersFlow = flow().liveRoomMembers(roomMemberQueryParams())
|
||||
val roomPowerLevelsFlow = PowerLevelsFlowFactory(this).createFlow()
|
||||
val roomPowerLevelsFlow = flow().liveRoomPowerLevels()
|
||||
return combine(roomMembersFlow, roomPowerLevelsFlow) { roomMembers, roomPowerLevels ->
|
||||
roomMembers.groupBy { roomPowerLevels.getSuggestedRole(it.userId) }
|
||||
}.distinctUntilChanged()
|
||||
|
@@ -23,7 +23,6 @@ import im.vector.app.core.resources.StringProvider
|
||||
import im.vector.app.features.createdirect.DirectRoomHelper
|
||||
import im.vector.app.features.displayname.getBestName
|
||||
import im.vector.app.features.home.room.detail.timeline.helper.MatrixItemColorProvider
|
||||
import im.vector.app.features.powerlevel.PowerLevelsFlowFactory
|
||||
import im.vector.lib.strings.CommonStrings
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.combine
|
||||
@@ -361,7 +360,7 @@ class RoomMemberProfileViewModel @AssistedInject constructor(
|
||||
|
||||
private fun observeRoomSummaryAndPowerLevels(room: Room) {
|
||||
val roomSummaryLive = room.flow().liveRoomSummary().unwrap()
|
||||
val powerLevelsFlow = PowerLevelsFlowFactory(room).createFlow()
|
||||
val powerLevelsFlow = room.flow().liveRoomPowerLevels()
|
||||
powerLevelsFlow
|
||||
.onEach { roomPowerLevels ->
|
||||
val permissions = ActionPermissions(
|
||||
|
@@ -19,7 +19,6 @@ import im.vector.app.core.resources.StringProvider
|
||||
import im.vector.app.features.analytics.AnalyticsTracker
|
||||
import im.vector.app.features.analytics.plan.Interaction
|
||||
import im.vector.app.features.home.ShortcutCreator
|
||||
import im.vector.app.features.powerlevel.PowerLevelsFlowFactory
|
||||
import im.vector.app.features.powerlevel.isLastAdminFlow
|
||||
import im.vector.app.features.session.coroutineScope
|
||||
import im.vector.lib.strings.CommonStrings
|
||||
@@ -121,7 +120,7 @@ class RoomProfileViewModel @AssistedInject constructor(
|
||||
}
|
||||
|
||||
private fun observePowerLevels() {
|
||||
val powerLevelsContentLive = PowerLevelsFlowFactory(room).createFlow()
|
||||
val powerLevelsContentLive = room.flow().liveRoomPowerLevels()
|
||||
powerLevelsContentLive
|
||||
.onEach { roomPowerLevels ->
|
||||
val canUpdateRoomState = roomPowerLevels.isUserAllowedToSend(session.myUserId, true, EventType.STATE_ROOM_ENCRYPTION)
|
||||
@@ -163,8 +162,7 @@ class RoomProfileViewModel @AssistedInject constructor(
|
||||
}
|
||||
|
||||
private fun observePermissions() {
|
||||
PowerLevelsFlowFactory(room)
|
||||
.createFlow()
|
||||
room.flow().liveRoomPowerLevels()
|
||||
.setOnEach { roomPowerLevels ->
|
||||
val permissions = RoomProfileViewState.ActionPermissions(
|
||||
canEnableEncryption = roomPowerLevels.isUserAllowedToSend(session.myUserId, true, EventType.STATE_ROOM_ENCRYPTION)
|
||||
|
@@ -18,7 +18,6 @@ import dagger.assisted.AssistedInject
|
||||
import im.vector.app.core.di.MavericksAssistedViewModelFactory
|
||||
import im.vector.app.core.di.hiltMavericksViewModelFactory
|
||||
import im.vector.app.core.platform.VectorViewModel
|
||||
import im.vector.app.features.powerlevel.PowerLevelsFlowFactory
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -124,8 +123,7 @@ class RoomAliasViewModel @AssistedInject constructor(
|
||||
}
|
||||
|
||||
private fun observePowerLevel() {
|
||||
PowerLevelsFlowFactory(room)
|
||||
.createFlow()
|
||||
room.flow().liveRoomPowerLevels()
|
||||
.onEach { roomPowerLevels ->
|
||||
val permissions = RoomAliasViewState.ActionPermissions(
|
||||
canChangeCanonicalAlias = roomPowerLevels.isUserAllowedToSend(
|
||||
|
@@ -15,7 +15,6 @@ import im.vector.app.core.di.MavericksAssistedViewModelFactory
|
||||
import im.vector.app.core.di.hiltMavericksViewModelFactory
|
||||
import im.vector.app.core.platform.VectorViewModel
|
||||
import im.vector.app.core.resources.StringProvider
|
||||
import im.vector.app.features.powerlevel.PowerLevelsFlowFactory
|
||||
import im.vector.lib.strings.CommonStrings
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -61,7 +60,7 @@ class RoomBannedMemberListViewModel @AssistedInject constructor(
|
||||
)
|
||||
}
|
||||
|
||||
val powerLevelsFlow = PowerLevelsFlowFactory(room).createFlow()
|
||||
val powerLevelsFlow = room.flow().liveRoomPowerLevels()
|
||||
powerLevelsFlow
|
||||
.setOnEach { roomPowerLevels ->
|
||||
copy(canUserBan = roomPowerLevels.isUserAbleToBan(session.myUserId))
|
||||
|
@@ -16,7 +16,6 @@ import im.vector.app.core.di.MavericksAssistedViewModelFactory
|
||||
import im.vector.app.core.di.hiltMavericksViewModelFactory
|
||||
import im.vector.app.core.platform.EmptyViewEvents
|
||||
import im.vector.app.core.platform.VectorViewModel
|
||||
import im.vector.app.features.powerlevel.PowerLevelsFlowFactory
|
||||
import kotlinx.coroutines.flow.catch
|
||||
import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
@@ -72,7 +71,7 @@ class RoomMemberListViewModel @AssistedInject constructor(
|
||||
memberships = Membership.activeMemberships()
|
||||
}
|
||||
|
||||
val powerLevelsFlow = PowerLevelsFlowFactory(room).createFlow()
|
||||
val powerLevelsFlow = room.flow().liveRoomPowerLevels()
|
||||
combine(
|
||||
roomFlow.liveRoomMembers(roomMemberQueryParams),
|
||||
powerLevelsFlow,
|
||||
@@ -137,7 +136,7 @@ class RoomMemberListViewModel @AssistedInject constructor(
|
||||
}
|
||||
|
||||
private fun observePowerLevel() {
|
||||
PowerLevelsFlowFactory(room).createFlow()
|
||||
room.flow().liveRoomPowerLevels()
|
||||
.onEach { roomPowerLevels ->
|
||||
val permissions = ActionPermissions(
|
||||
canInvite = roomPowerLevels.isUserAbleToInvite(session.myUserId),
|
||||
|
@@ -16,7 +16,6 @@ import dagger.assisted.AssistedInject
|
||||
import im.vector.app.core.di.MavericksAssistedViewModelFactory
|
||||
import im.vector.app.core.di.hiltMavericksViewModelFactory
|
||||
import im.vector.app.core.platform.VectorViewModel
|
||||
import im.vector.app.features.powerlevel.PowerLevelsFlowFactory
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -59,8 +58,7 @@ class RoomPermissionsViewModel @AssistedInject constructor(
|
||||
}
|
||||
|
||||
private fun observePowerLevel() {
|
||||
PowerLevelsFlowFactory(room)
|
||||
.createFlow()
|
||||
room.flow().liveRoomPowerLevels()
|
||||
.onEach { roomPowerLevels ->
|
||||
val permissions = RoomPermissionsViewState.ActionPermissions(
|
||||
canChangePowerLevels = roomPowerLevels.isUserAllowedToSend(
|
||||
|
@@ -15,7 +15,6 @@ import dagger.assisted.AssistedInject
|
||||
import im.vector.app.core.di.MavericksAssistedViewModelFactory
|
||||
import im.vector.app.core.di.hiltMavericksViewModelFactory
|
||||
import im.vector.app.core.platform.VectorViewModel
|
||||
import im.vector.app.features.powerlevel.PowerLevelsFlowFactory
|
||||
import im.vector.app.features.settings.VectorPreferences
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.mapNotNull
|
||||
@@ -114,7 +113,7 @@ class RoomSettingsViewModel @AssistedInject constructor(
|
||||
)
|
||||
}
|
||||
|
||||
val powerLevelsFlow = PowerLevelsFlowFactory(room).createFlow()
|
||||
val powerLevelsFlow = room.flow().liveRoomPowerLevels()
|
||||
powerLevelsFlow
|
||||
.onEach { roomPowerLevels ->
|
||||
val permissions = RoomSettingsViewState.ActionPermissions(
|
||||
|
@@ -20,7 +20,6 @@ import im.vector.app.core.di.MavericksAssistedViewModelFactory
|
||||
import im.vector.app.core.di.hiltMavericksViewModelFactory
|
||||
import im.vector.app.core.platform.EmptyViewEvents
|
||||
import im.vector.app.core.platform.VectorViewModel
|
||||
import im.vector.app.features.powerlevel.PowerLevelsFlowFactory
|
||||
import im.vector.app.features.session.coroutineScope
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
@@ -71,8 +70,7 @@ class SpaceMenuViewModel @AssistedInject constructor(
|
||||
}
|
||||
}.launchIn(viewModelScope)
|
||||
|
||||
PowerLevelsFlowFactory(room)
|
||||
.createFlow()
|
||||
room.flow().liveRoomPowerLevels()
|
||||
.onEach { roomPowerLevels ->
|
||||
|
||||
val canInvite = roomPowerLevels.isUserAbleToInvite(session.myUserId)
|
||||
|
@@ -21,7 +21,6 @@ import im.vector.app.core.platform.VectorViewModel
|
||||
import im.vector.app.features.analytics.AnalyticsTracker
|
||||
import im.vector.app.features.analytics.extensions.toAnalyticsJoinedRoom
|
||||
import im.vector.app.features.analytics.plan.JoinedRoom
|
||||
import im.vector.app.features.powerlevel.PowerLevelsFlowFactory
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.map
|
||||
@@ -95,7 +94,7 @@ class SpaceDirectoryViewModel @AssistedInject constructor(
|
||||
private fun observePermissions() {
|
||||
val room = session.getRoom(initialState.spaceId) ?: return
|
||||
|
||||
val powerLevelsFlow = PowerLevelsFlowFactory(room).createFlow()
|
||||
val powerLevelsFlow = room.flow().liveRoomPowerLevels()
|
||||
|
||||
powerLevelsFlow
|
||||
.onEach { roomPowerLevels ->
|
||||
|
@@ -16,13 +16,13 @@ import dagger.assisted.AssistedInject
|
||||
import im.vector.app.core.di.MavericksAssistedViewModelFactory
|
||||
import im.vector.app.core.di.hiltMavericksViewModelFactory
|
||||
import im.vector.app.core.platform.VectorViewModel
|
||||
import im.vector.app.features.powerlevel.PowerLevelsFlowFactory
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import org.matrix.android.sdk.api.extensions.orFalse
|
||||
import org.matrix.android.sdk.api.session.Session
|
||||
import org.matrix.android.sdk.api.session.getRoom
|
||||
import org.matrix.android.sdk.api.session.getRoomSummary
|
||||
import org.matrix.android.sdk.flow.flow
|
||||
|
||||
class ShareSpaceViewModel @AssistedInject constructor(
|
||||
@Assisted private val initialState: ShareSpaceViewState,
|
||||
@@ -49,8 +49,7 @@ class ShareSpaceViewModel @AssistedInject constructor(
|
||||
|
||||
private fun observePowerLevel() {
|
||||
val room = session.getRoom(initialState.spaceId) ?: return
|
||||
PowerLevelsFlowFactory(room)
|
||||
.createFlow()
|
||||
room.flow().liveRoomPowerLevels()
|
||||
.onEach { roomPowerLevels ->
|
||||
setState {
|
||||
copy(
|
||||
|
@@ -19,7 +19,6 @@ import im.vector.app.core.di.MavericksAssistedViewModelFactory
|
||||
import im.vector.app.core.di.hiltMavericksViewModelFactory
|
||||
import im.vector.app.core.platform.VectorViewModel
|
||||
import im.vector.app.core.resources.StringProvider
|
||||
import im.vector.app.features.powerlevel.PowerLevelsFlowFactory
|
||||
import im.vector.app.features.widgets.permissions.WidgetPermissionsHelper
|
||||
import kotlinx.coroutines.flow.filter
|
||||
import kotlinx.coroutines.flow.map
|
||||
@@ -97,8 +96,7 @@ class WidgetViewModel @AssistedInject constructor(
|
||||
if (room == null) {
|
||||
return
|
||||
}
|
||||
PowerLevelsFlowFactory(room)
|
||||
.createFlow()
|
||||
room.flow().liveRoomPowerLevels()
|
||||
.map { roomPowerLevels ->
|
||||
roomPowerLevels.isUserAllowedToSend(session.myUserId, true, null)
|
||||
}
|
||||
|
Reference in New Issue
Block a user