change(security and privacy) : add isSpace and update state provider
This commit is contained in:
parent
df89b5b9ac
commit
176c18d55d
3 changed files with 65 additions and 50 deletions
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue