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, isKnockEnabled = isKnockEnabled,
saveAction = saveAction.value, saveAction = saveAction.value,
permissions = permissions, permissions = permissions,
isSpace = roomInfo.isSpace,
eventSink = ::handleEvent, eventSink = ::handleEvent,
) )

View file

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

View file

@ -15,56 +15,67 @@ import io.element.android.libraries.architecture.AsyncData
open class SecurityAndPrivacyStateProvider : PreviewParameterProvider<SecurityAndPrivacyState> { open class SecurityAndPrivacyStateProvider : PreviewParameterProvider<SecurityAndPrivacyState> {
override val values: Sequence<SecurityAndPrivacyState> override val values: Sequence<SecurityAndPrivacyState>
get() = sequenceOf( get() = securityAndPrivacyStates(isSpace = false) + securityAndPrivacyStates(isSpace = true)
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,
),
)
} }
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( fun aSecurityAndPrivacySettings(
roomAccess: SecurityAndPrivacyRoomAccess = SecurityAndPrivacyRoomAccess.InviteOnly, roomAccess: SecurityAndPrivacyRoomAccess = SecurityAndPrivacyRoomAccess.InviteOnly,
isEncrypted: Boolean = true, isEncrypted: Boolean = true,
@ -92,6 +103,7 @@ fun aSecurityAndPrivacyState(
canChangeRoomVisibility = true canChangeRoomVisibility = true
), ),
isKnockEnabled: Boolean = true, isKnockEnabled: Boolean = true,
isSpace: Boolean = false,
eventSink: (SecurityAndPrivacyEvents) -> Unit = {} eventSink: (SecurityAndPrivacyEvents) -> Unit = {}
) = SecurityAndPrivacyState( ) = SecurityAndPrivacyState(
editedSettings = editedSettings, editedSettings = editedSettings,
@ -101,5 +113,6 @@ fun aSecurityAndPrivacyState(
saveAction = saveAction, saveAction = saveAction,
isKnockEnabled = isKnockEnabled, isKnockEnabled = isKnockEnabled,
permissions = permissions, permissions = permissions,
isSpace = isSpace,
eventSink = eventSink eventSink = eventSink
) )