Show AskToJoin option if this is the current value, even if the Knock FF is disabled.
This commit is contained in:
parent
7cb4a96fbe
commit
9d537589ff
5 changed files with 35 additions and 13 deletions
|
|
@ -155,7 +155,7 @@ class SecurityAndPrivacyPresenter(
|
||||||
editedSettings = editedSettings,
|
editedSettings = editedSettings,
|
||||||
homeserverName = homeserverName,
|
homeserverName = homeserverName,
|
||||||
showEnableEncryptionConfirmation = showEnableEncryptionConfirmation,
|
showEnableEncryptionConfirmation = showEnableEncryptionConfirmation,
|
||||||
canUserSelectAskToJoinOption = isKnockEnabled,
|
showAskToJoinOption = isKnockEnabled || savedSettings.roomAccess == SecurityAndPrivacyRoomAccess.AskToJoin,
|
||||||
saveAction = saveAction.value,
|
saveAction = saveAction.value,
|
||||||
permissions = permissions,
|
permissions = permissions,
|
||||||
eventSink = ::handleEvents
|
eventSink = ::handleEvents
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ data class SecurityAndPrivacyState(
|
||||||
val editedSettings: SecurityAndPrivacySettings,
|
val editedSettings: SecurityAndPrivacySettings,
|
||||||
val homeserverName: String,
|
val homeserverName: String,
|
||||||
val showEnableEncryptionConfirmation: Boolean,
|
val showEnableEncryptionConfirmation: Boolean,
|
||||||
val canUserSelectAskToJoinOption: Boolean,
|
val showAskToJoinOption: Boolean,
|
||||||
val saveAction: AsyncAction<Unit>,
|
val saveAction: AsyncAction<Unit>,
|
||||||
private val permissions: SecurityAndPrivacyPermissions,
|
private val permissions: SecurityAndPrivacyPermissions,
|
||||||
val eventSink: (SecurityAndPrivacyEvents) -> Unit
|
val eventSink: (SecurityAndPrivacyEvents) -> Unit
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ open class SecurityAndPrivacyStateProvider : PreviewParameterProvider<SecurityAn
|
||||||
savedSettings = aSecurityAndPrivacySettings(
|
savedSettings = aSecurityAndPrivacySettings(
|
||||||
roomAccess = SecurityAndPrivacyRoomAccess.SpaceMember
|
roomAccess = SecurityAndPrivacyRoomAccess.SpaceMember
|
||||||
),
|
),
|
||||||
canUserSelectAskToJoinOption = false,
|
showAskToJoinOption = false,
|
||||||
),
|
),
|
||||||
aSecurityAndPrivacyState(
|
aSecurityAndPrivacyState(
|
||||||
editedSettings = aSecurityAndPrivacySettings(
|
editedSettings = aSecurityAndPrivacySettings(
|
||||||
|
|
@ -84,7 +84,7 @@ fun aSecurityAndPrivacyState(
|
||||||
canChangeEncryption = true,
|
canChangeEncryption = true,
|
||||||
canChangeRoomVisibility = true
|
canChangeRoomVisibility = true
|
||||||
),
|
),
|
||||||
canUserSelectAskToJoinOption: Boolean = true,
|
showAskToJoinOption: Boolean = true,
|
||||||
eventSink: (SecurityAndPrivacyEvents) -> Unit = {}
|
eventSink: (SecurityAndPrivacyEvents) -> Unit = {}
|
||||||
) = SecurityAndPrivacyState(
|
) = SecurityAndPrivacyState(
|
||||||
editedSettings = editedSettings,
|
editedSettings = editedSettings,
|
||||||
|
|
@ -92,7 +92,7 @@ fun aSecurityAndPrivacyState(
|
||||||
homeserverName = homeserverName,
|
homeserverName = homeserverName,
|
||||||
showEnableEncryptionConfirmation = showEncryptionConfirmation,
|
showEnableEncryptionConfirmation = showEncryptionConfirmation,
|
||||||
saveAction = saveAction,
|
saveAction = saveAction,
|
||||||
canUserSelectAskToJoinOption = canUserSelectAskToJoinOption,
|
showAskToJoinOption = showAskToJoinOption,
|
||||||
permissions = permissions,
|
permissions = permissions,
|
||||||
eventSink = eventSink
|
eventSink = eventSink
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@ fun SecurityAndPrivacyView(
|
||||||
modifier = Modifier.padding(top = 24.dp),
|
modifier = Modifier.padding(top = 24.dp),
|
||||||
edited = state.editedSettings.roomAccess,
|
edited = state.editedSettings.roomAccess,
|
||||||
saved = state.savedSettings.roomAccess,
|
saved = state.savedSettings.roomAccess,
|
||||||
canUserSelectAskToJoinOption = state.canUserSelectAskToJoinOption,
|
showAskToJoinOption = state.showAskToJoinOption,
|
||||||
onSelectOption = { state.eventSink(SecurityAndPrivacyEvents.ChangeRoomAccess(it)) },
|
onSelectOption = { state.eventSink(SecurityAndPrivacyEvents.ChangeRoomAccess(it)) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -177,7 +177,7 @@ private fun SecurityAndPrivacySection(
|
||||||
private fun RoomAccessSection(
|
private fun RoomAccessSection(
|
||||||
edited: SecurityAndPrivacyRoomAccess,
|
edited: SecurityAndPrivacyRoomAccess,
|
||||||
saved: SecurityAndPrivacyRoomAccess,
|
saved: SecurityAndPrivacyRoomAccess,
|
||||||
canUserSelectAskToJoinOption: Boolean,
|
showAskToJoinOption: Boolean,
|
||||||
onSelectOption: (SecurityAndPrivacyRoomAccess) -> Unit,
|
onSelectOption: (SecurityAndPrivacyRoomAccess) -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
) {
|
) {
|
||||||
|
|
@ -191,7 +191,7 @@ private fun RoomAccessSection(
|
||||||
trailingContent = ListItemContent.RadioButton(selected = edited == SecurityAndPrivacyRoomAccess.InviteOnly),
|
trailingContent = ListItemContent.RadioButton(selected = edited == SecurityAndPrivacyRoomAccess.InviteOnly),
|
||||||
onClick = { onSelectOption(SecurityAndPrivacyRoomAccess.InviteOnly) },
|
onClick = { onSelectOption(SecurityAndPrivacyRoomAccess.InviteOnly) },
|
||||||
)
|
)
|
||||||
if (canUserSelectAskToJoinOption) {
|
if (showAskToJoinOption) {
|
||||||
ListItem(
|
ListItem(
|
||||||
headlineContent = { Text(text = stringResource(R.string.screen_security_and_privacy_ask_to_join_option_title)) },
|
headlineContent = { Text(text = stringResource(R.string.screen_security_and_privacy_ask_to_join_option_title)) },
|
||||||
supportingContent = { Text(text = stringResource(R.string.screen_security_and_privacy_ask_to_join_option_description)) },
|
supportingContent = { Text(text = stringResource(R.string.screen_security_and_privacy_ask_to_join_option_description)) },
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ class SecurityAndPrivacyPresenterTest {
|
||||||
assertThat(showRoomVisibilitySections).isFalse()
|
assertThat(showRoomVisibilitySections).isFalse()
|
||||||
assertThat(showHistoryVisibilitySection).isFalse()
|
assertThat(showHistoryVisibilitySection).isFalse()
|
||||||
assertThat(showEncryptionSection).isFalse()
|
assertThat(showEncryptionSection).isFalse()
|
||||||
assertThat(canUserSelectAskToJoinOption).isFalse()
|
assertThat(showAskToJoinOption).isFalse()
|
||||||
}
|
}
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
assertThat(editedSettings).isEqualTo(savedSettings)
|
assertThat(editedSettings).isEqualTo(savedSettings)
|
||||||
|
|
@ -52,7 +52,7 @@ class SecurityAndPrivacyPresenterTest {
|
||||||
assertThat(showRoomVisibilitySections).isFalse()
|
assertThat(showRoomVisibilitySections).isFalse()
|
||||||
assertThat(showHistoryVisibilitySection).isTrue()
|
assertThat(showHistoryVisibilitySection).isTrue()
|
||||||
assertThat(showEncryptionSection).isTrue()
|
assertThat(showEncryptionSection).isTrue()
|
||||||
assertThat(canUserSelectAskToJoinOption).isFalse()
|
assertThat(showAskToJoinOption).isFalse()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -341,7 +341,7 @@ class SecurityAndPrivacyPresenterTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `present - canUserSelectAskToJoinOption is true if the Knock feature flag is enabled`() = runTest {
|
fun `present - showAskToJoinOption is true if the Knock feature flag is enabled`() = runTest {
|
||||||
val presenter = createSecurityAndPrivacyPresenter(
|
val presenter = createSecurityAndPrivacyPresenter(
|
||||||
featureFlagService = FakeFeatureFlagService(
|
featureFlagService = FakeFeatureFlagService(
|
||||||
initialState = mapOf(
|
initialState = mapOf(
|
||||||
|
|
@ -350,8 +350,30 @@ class SecurityAndPrivacyPresenterTest {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
assertThat(awaitItem().canUserSelectAskToJoinOption).isFalse()
|
assertThat(awaitItem().showAskToJoinOption).isFalse()
|
||||||
assertThat(awaitItem().canUserSelectAskToJoinOption).isTrue()
|
assertThat(awaitItem().showAskToJoinOption).isTrue()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `present - showAskToJoinOption is true if ask to join is the current value Knock feature flag is enabled`() = runTest {
|
||||||
|
val presenter = createSecurityAndPrivacyPresenter(
|
||||||
|
featureFlagService = FakeFeatureFlagService(
|
||||||
|
initialState = mapOf(
|
||||||
|
FeatureFlags.Knock.key to false,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
room = FakeJoinedRoom(
|
||||||
|
baseRoom = FakeBaseRoom(
|
||||||
|
canSendStateResult = { _, _ -> Result.success(true) },
|
||||||
|
getRoomVisibilityResult = { Result.success(RoomVisibility.Private) },
|
||||||
|
initialRoomInfo = aRoomInfo(historyVisibility = RoomHistoryVisibility.Shared, joinRule = JoinRule.Knock)
|
||||||
|
),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
presenter.test {
|
||||||
|
assertThat(awaitItem().showAskToJoinOption).isTrue()
|
||||||
|
cancelAndIgnoreRemainingEvents()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue