mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2024-11-22 01:15:54 +03:00
Fix encryption enabling visible for all users
This commit is contained in:
parent
75c2dfcd48
commit
548879bd9f
6 changed files with 20 additions and 62 deletions
|
@ -13,6 +13,7 @@ Bugfix 🐛:
|
||||||
- Integration Manager: Wrong URL to review terms if URL in config contains path (#1606)
|
- Integration Manager: Wrong URL to review terms if URL in config contains path (#1606)
|
||||||
- Regression Composer does not grow, crops out text (#1650)
|
- Regression Composer does not grow, crops out text (#1650)
|
||||||
- Bug / Unwanted draft (#698)
|
- Bug / Unwanted draft (#698)
|
||||||
|
- All users seems to be able to see the enable encryption option in room settings (#1341)
|
||||||
|
|
||||||
Translations 🗣:
|
Translations 🗣:
|
||||||
-
|
-
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
|
|
||||||
package im.vector.matrix.android.api.session.room.powerlevels
|
package im.vector.matrix.android.api.session.room.powerlevels
|
||||||
|
|
||||||
import im.vector.matrix.android.api.session.events.model.EventType
|
|
||||||
import im.vector.matrix.android.api.session.room.model.PowerLevelsContent
|
import im.vector.matrix.android.api.session.room.model.PowerLevelsContent
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -124,59 +123,4 @@ class PowerLevelsHelper(private val powerLevelsContent: PowerLevelsContent) {
|
||||||
else -> Role.Moderator.value
|
else -> Role.Moderator.value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if user have the necessary power level to change room name
|
|
||||||
* @param userId the id of the user to check for.
|
|
||||||
* @return true if able to change room name
|
|
||||||
*/
|
|
||||||
fun isUserAbleToChangeRoomName(userId: String): Boolean {
|
|
||||||
val powerLevel = getUserPowerLevelValue(userId)
|
|
||||||
val minPowerLevel = powerLevelsContent.events[EventType.STATE_ROOM_NAME] ?: powerLevelsContent.stateDefault
|
|
||||||
return powerLevel >= minPowerLevel
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if user have the necessary power level to change room topic
|
|
||||||
* @param userId the id of the user to check for.
|
|
||||||
* @return true if able to change room topic
|
|
||||||
*/
|
|
||||||
fun isUserAbleToChangeRoomTopic(userId: String): Boolean {
|
|
||||||
val powerLevel = getUserPowerLevelValue(userId)
|
|
||||||
val minPowerLevel = powerLevelsContent.events[EventType.STATE_ROOM_TOPIC] ?: powerLevelsContent.stateDefault
|
|
||||||
return powerLevel >= minPowerLevel
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if user have the necessary power level to change room canonical alias
|
|
||||||
* @param userId the id of the user to check for.
|
|
||||||
* @return true if able to change room canonical alias
|
|
||||||
*/
|
|
||||||
fun isUserAbleToChangeRoomCanonicalAlias(userId: String): Boolean {
|
|
||||||
val powerLevel = getUserPowerLevelValue(userId)
|
|
||||||
val minPowerLevel = powerLevelsContent.events[EventType.STATE_ROOM_CANONICAL_ALIAS] ?: powerLevelsContent.stateDefault
|
|
||||||
return powerLevel >= minPowerLevel
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if user have the necessary power level to change room history readability
|
|
||||||
* @param userId the id of the user to check for.
|
|
||||||
* @return true if able to change room history readability
|
|
||||||
*/
|
|
||||||
fun isUserAbleToChangeRoomHistoryReadability(userId: String): Boolean {
|
|
||||||
val powerLevel = getUserPowerLevelValue(userId)
|
|
||||||
val minPowerLevel = powerLevelsContent.events[EventType.STATE_ROOM_HISTORY_VISIBILITY] ?: powerLevelsContent.stateDefault
|
|
||||||
return powerLevel >= minPowerLevel
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if user have the necessary power level to change room avatar
|
|
||||||
* @param userId the id of the user to check for.
|
|
||||||
* @return true if able to change room avatar
|
|
||||||
*/
|
|
||||||
fun isUserAbleToChangeRoomAvatar(userId: String): Boolean {
|
|
||||||
val powerLevel = getUserPowerLevelValue(userId)
|
|
||||||
val minPowerLevel = powerLevelsContent.events[EventType.STATE_ROOM_AVATAR] ?: powerLevelsContent.stateDefault
|
|
||||||
return powerLevel >= minPowerLevel
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ import com.squareup.inject.assisted.AssistedInject
|
||||||
import im.vector.matrix.android.api.MatrixCallback
|
import im.vector.matrix.android.api.MatrixCallback
|
||||||
import im.vector.matrix.android.api.permalinks.PermalinkFactory
|
import im.vector.matrix.android.api.permalinks.PermalinkFactory
|
||||||
import im.vector.matrix.android.api.session.Session
|
import im.vector.matrix.android.api.session.Session
|
||||||
|
import im.vector.matrix.android.api.session.events.model.EventType
|
||||||
import im.vector.matrix.android.api.session.room.powerlevels.PowerLevelsHelper
|
import im.vector.matrix.android.api.session.room.powerlevels.PowerLevelsHelper
|
||||||
import im.vector.matrix.rx.rx
|
import im.vector.matrix.rx.rx
|
||||||
import im.vector.matrix.rx.unwrap
|
import im.vector.matrix.rx.unwrap
|
||||||
|
@ -71,7 +72,9 @@ class RoomProfileViewModel @AssistedInject constructor(@Assisted private val ini
|
||||||
powerLevelsContentLive
|
powerLevelsContentLive
|
||||||
.subscribe {
|
.subscribe {
|
||||||
val powerLevelsHelper = PowerLevelsHelper(it)
|
val powerLevelsHelper = PowerLevelsHelper(it)
|
||||||
setState { copy(canChangeAvatar = powerLevelsHelper.isUserAbleToChangeRoomAvatar(session.myUserId)) }
|
setState {
|
||||||
|
copy(canChangeAvatar = powerLevelsHelper.isUserAllowedToSend(session.myUserId, isState = true, eventType = EventType.STATE_ROOM_AVATAR))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.disposeOnClear()
|
.disposeOnClear()
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ import com.airbnb.epoxy.TypedEpoxyController
|
||||||
import im.vector.matrix.android.api.session.events.model.Event
|
import im.vector.matrix.android.api.session.events.model.Event
|
||||||
import im.vector.matrix.android.api.session.events.model.toModel
|
import im.vector.matrix.android.api.session.events.model.toModel
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomHistoryVisibilityContent
|
import im.vector.matrix.android.api.session.room.model.RoomHistoryVisibilityContent
|
||||||
|
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
||||||
import im.vector.riotx.R
|
import im.vector.riotx.R
|
||||||
import im.vector.riotx.core.epoxy.profiles.buildProfileAction
|
import im.vector.riotx.core.epoxy.profiles.buildProfileAction
|
||||||
import im.vector.riotx.core.epoxy.profiles.buildProfileSection
|
import im.vector.riotx.core.epoxy.profiles.buildProfileSection
|
||||||
|
@ -104,6 +105,13 @@ class RoomSettingsController @Inject constructor(
|
||||||
action = { if (data.actionPermissions.canChangeHistoryReadability) callback?.onHistoryVisibilityClicked() }
|
action = { if (data.actionPermissions.canChangeHistoryReadability) callback?.onHistoryVisibilityClicked() }
|
||||||
)
|
)
|
||||||
|
|
||||||
|
buildEncryptionAction(data.actionPermissions, roomSummary)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun buildEncryptionAction(actionPermissions: RoomSettingsViewState.ActionPermissions, roomSummary: RoomSummary) {
|
||||||
|
if (!actionPermissions.canEnableEncryption) {
|
||||||
|
return
|
||||||
|
}
|
||||||
if (roomSummary.isEncrypted) {
|
if (roomSummary.isEncrypted) {
|
||||||
buildProfileAction(
|
buildProfileAction(
|
||||||
id = "encryption",
|
id = "encryption",
|
||||||
|
|
|
@ -101,10 +101,11 @@ class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState:
|
||||||
.subscribe {
|
.subscribe {
|
||||||
val powerLevelsHelper = PowerLevelsHelper(it)
|
val powerLevelsHelper = PowerLevelsHelper(it)
|
||||||
val permissions = RoomSettingsViewState.ActionPermissions(
|
val permissions = RoomSettingsViewState.ActionPermissions(
|
||||||
canChangeName = powerLevelsHelper.isUserAbleToChangeRoomName(session.myUserId),
|
canChangeName = powerLevelsHelper.isUserAllowedToSend(session.myUserId, isState = true, eventType = EventType.STATE_ROOM_NAME),
|
||||||
canChangeTopic = powerLevelsHelper.isUserAbleToChangeRoomTopic(session.myUserId),
|
canChangeTopic = powerLevelsHelper.isUserAllowedToSend(session.myUserId, isState = true, eventType = EventType.STATE_ROOM_TOPIC),
|
||||||
canChangeCanonicalAlias = powerLevelsHelper.isUserAbleToChangeRoomCanonicalAlias(session.myUserId),
|
canChangeCanonicalAlias = powerLevelsHelper.isUserAllowedToSend(session.myUserId, isState = true, eventType = EventType.STATE_ROOM_CANONICAL_ALIAS),
|
||||||
canChangeHistoryReadability = powerLevelsHelper.isUserAbleToChangeRoomHistoryReadability(session.myUserId)
|
canChangeHistoryReadability = powerLevelsHelper.isUserAllowedToSend(session.myUserId, isState = true, eventType = EventType.STATE_ROOM_HISTORY_VISIBILITY),
|
||||||
|
canEnableEncryption = powerLevelsHelper.isUserAllowedToSend(session.myUserId, isState = true, eventType = EventType.STATE_ROOM_ENCRYPTION)
|
||||||
)
|
)
|
||||||
setState { copy(actionPermissions = permissions) }
|
setState { copy(actionPermissions = permissions) }
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,7 @@ data class RoomSettingsViewState(
|
||||||
val canChangeName: Boolean = false,
|
val canChangeName: Boolean = false,
|
||||||
val canChangeTopic: Boolean = false,
|
val canChangeTopic: Boolean = false,
|
||||||
val canChangeCanonicalAlias: Boolean = false,
|
val canChangeCanonicalAlias: Boolean = false,
|
||||||
val canChangeHistoryReadability: Boolean = false
|
val canChangeHistoryReadability: Boolean = false,
|
||||||
|
val canEnableEncryption: Boolean = false
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue