change(security and privacy) : add isSpace and update state provider

This commit is contained in:
ganfra
2025-11-19 14:52:59 +01:00
parent df89b5b9ac
commit 176c18d55d
3 changed files with 65 additions and 50 deletions

View File

@@ -160,6 +160,7 @@ class SecurityAndPrivacyPresenter(
isKnockEnabled = isKnockEnabled,
saveAction = saveAction.value,
permissions = permissions,
isSpace = roomInfo.isSpace,
eventSink = ::handleEvent,
)

View File

@@ -22,6 +22,7 @@ data class SecurityAndPrivacyState(
val showEnableEncryptionConfirmation: Boolean,
val isKnockEnabled: Boolean,
val saveAction: AsyncAction<Unit>,
val isSpace: Boolean,
private val permissions: SecurityAndPrivacyPermissions,
val eventSink: (SecurityAndPrivacyEvents) -> Unit
) {
@@ -38,8 +39,8 @@ data class SecurityAndPrivacyState(
val showRoomAccessSection = permissions.canChangeRoomAccess
val showRoomVisibilitySections = permissions.canChangeRoomVisibility && editedSettings.roomAccess != SecurityAndPrivacyRoomAccess.InviteOnly
val showHistoryVisibilitySection = permissions.canChangeHistoryVisibility
val showEncryptionSection = permissions.canChangeEncryption
val showHistoryVisibilitySection = permissions.canChangeHistoryVisibility && !isSpace
val showEncryptionSection = permissions.canChangeEncryption && !isSpace
}
data class SecurityAndPrivacySettings(

View File

@@ -15,56 +15,67 @@ import io.element.android.libraries.architecture.AsyncData
open class SecurityAndPrivacyStateProvider : PreviewParameterProvider<SecurityAndPrivacyState> {
override val values: Sequence<SecurityAndPrivacyState>
get() = sequenceOf(
aSecurityAndPrivacyState(),
aSecurityAndPrivacyState(
editedSettings = aSecurityAndPrivacySettings(
roomAccess = SecurityAndPrivacyRoomAccess.AskToJoin
)
),
aSecurityAndPrivacyState(
editedSettings = aSecurityAndPrivacySettings(
roomAccess = SecurityAndPrivacyRoomAccess.Anyone,
isEncrypted = false,
)
),
aSecurityAndPrivacyState(
savedSettings = aSecurityAndPrivacySettings(
roomAccess = SecurityAndPrivacyRoomAccess.SpaceMember
),
isKnockEnabled = false,
),
aSecurityAndPrivacyState(
editedSettings = aSecurityAndPrivacySettings(
roomAccess = SecurityAndPrivacyRoomAccess.Anyone,
address = "#therapy:myserver.xyz"
)
),
aSecurityAndPrivacyState(
editedSettings = aSecurityAndPrivacySettings(
isVisibleInRoomDirectory = AsyncData.Loading()
)
),
aSecurityAndPrivacyState(
editedSettings = aSecurityAndPrivacySettings(
isVisibleInRoomDirectory = AsyncData.Success(true)
)
),
aSecurityAndPrivacyState(
showEncryptionConfirmation = true
),
aSecurityAndPrivacyState(
saveAction = AsyncAction.Loading
),
aSecurityAndPrivacyState(
savedSettings = aSecurityAndPrivacySettings(
roomAccess = SecurityAndPrivacyRoomAccess.AskToJoin
),
isKnockEnabled = false,
),
)
get() = securityAndPrivacyStates(isSpace = false) + securityAndPrivacyStates(isSpace = true)
}
private fun securityAndPrivacyStates(isSpace: Boolean): Sequence<SecurityAndPrivacyState> = sequenceOf(
aSecurityAndPrivacyState(isSpace = isSpace),
aSecurityAndPrivacyState(
editedSettings = aSecurityAndPrivacySettings(
roomAccess = SecurityAndPrivacyRoomAccess.AskToJoin,
),
isSpace = isSpace,
),
aSecurityAndPrivacyState(
editedSettings = aSecurityAndPrivacySettings(
roomAccess = SecurityAndPrivacyRoomAccess.Anyone,
isEncrypted = false,
),
isSpace = isSpace,
),
aSecurityAndPrivacyState(
savedSettings = aSecurityAndPrivacySettings(
roomAccess = SecurityAndPrivacyRoomAccess.SpaceMember
),
isSpace = isSpace,
isKnockEnabled = false,
),
aSecurityAndPrivacyState(
editedSettings = aSecurityAndPrivacySettings(
roomAccess = SecurityAndPrivacyRoomAccess.Anyone,
address = "#therapy:myserver.xyz"
),
isSpace = isSpace,
),
aSecurityAndPrivacyState(
editedSettings = aSecurityAndPrivacySettings(
isVisibleInRoomDirectory = AsyncData.Loading()
),
isSpace = isSpace,
),
aSecurityAndPrivacyState(
editedSettings = aSecurityAndPrivacySettings(
isVisibleInRoomDirectory = AsyncData.Success(true)
),
isSpace = isSpace,
),
aSecurityAndPrivacyState(
showEncryptionConfirmation = true,
isSpace = isSpace,
),
aSecurityAndPrivacyState(
saveAction = AsyncAction.Loading,
isSpace = isSpace,
),
aSecurityAndPrivacyState(
savedSettings = aSecurityAndPrivacySettings(
roomAccess = SecurityAndPrivacyRoomAccess.AskToJoin
),
isSpace = isSpace,
isKnockEnabled = false,
),
)
fun aSecurityAndPrivacySettings(
roomAccess: SecurityAndPrivacyRoomAccess = SecurityAndPrivacyRoomAccess.InviteOnly,
isEncrypted: Boolean = true,
@@ -92,6 +103,7 @@ fun aSecurityAndPrivacyState(
canChangeRoomVisibility = true
),
isKnockEnabled: Boolean = true,
isSpace: Boolean = false,
eventSink: (SecurityAndPrivacyEvents) -> Unit = {}
) = SecurityAndPrivacyState(
editedSettings = editedSettings,
@@ -101,5 +113,6 @@ fun aSecurityAndPrivacyState(
saveAction = saveAction,
isKnockEnabled = isKnockEnabled,
permissions = permissions,
isSpace = isSpace,
eventSink = eventSink
)