change(security and privacy) : add isSpace and update state provider
This commit is contained in:
@@ -160,6 +160,7 @@ class SecurityAndPrivacyPresenter(
|
||||
isKnockEnabled = isKnockEnabled,
|
||||
saveAction = saveAction.value,
|
||||
permissions = permissions,
|
||||
isSpace = roomInfo.isSpace,
|
||||
eventSink = ::handleEvent,
|
||||
)
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user