Remove JoinRule.Private from the codebase (#6129)

It shouldn't be in use, since it was never properly defined:

- The `Private` values coming from the SDK are considered to be `Invite` instead.
- Remove any existing `JoinRule.Private` usages in our code.
This commit is contained in:
Jorge Martin Espinosa 2026-02-03 19:27:22 +01:00 committed by GitHub
parent 4fe7463679
commit 5175bacb5e
12 changed files with 14 additions and 46 deletions

View file

@ -35,7 +35,7 @@ sealed interface JoinRuleItem {
* Transforms a [JoinRuleItem] option into a [JoinRule]. * Transforms a [JoinRuleItem] option into a [JoinRule].
*/ */
fun toJoinRule(): JoinRule = when (this) { fun toJoinRule(): JoinRule = when (this) {
Private -> JoinRule.Private Private -> JoinRule.Invite
PublicVisibility.Public -> JoinRule.Public PublicVisibility.Public -> JoinRule.Public
PublicVisibility.AskToJoin -> JoinRule.Knock PublicVisibility.AskToJoin -> JoinRule.Knock
is PublicVisibility.Restricted -> JoinRule.Restricted(persistentListOf(AllowRule.RoomMembership(parentSpaceId))) is PublicVisibility.Restricted -> JoinRule.Restricted(persistentListOf(AllowRule.RoomMembership(parentSpaceId)))

View file

@ -18,7 +18,7 @@ import org.junit.Test
class JoinRuleItemTest { class JoinRuleItemTest {
@Test @Test
fun `toJoinRule works as expected`() { fun `toJoinRule works as expected`() {
assertThat(JoinRuleItem.Private.toJoinRule()).isEqualTo(JoinRule.Private) assertThat(JoinRuleItem.Private.toJoinRule()).isEqualTo(JoinRule.Invite)
assertThat(JoinRuleItem.PublicVisibility.Public.toJoinRule()).isEqualTo(JoinRule.Public) assertThat(JoinRuleItem.PublicVisibility.Public.toJoinRule()).isEqualTo(JoinRule.Public)
assertThat(JoinRuleItem.PublicVisibility.AskToJoin.toJoinRule()).isEqualTo(JoinRule.Knock) assertThat(JoinRuleItem.PublicVisibility.AskToJoin.toJoinRule()).isEqualTo(JoinRule.Knock)
assertThat(JoinRuleItem.PublicVisibility.Restricted(A_ROOM_ID).toJoinRule()) assertThat(JoinRuleItem.PublicVisibility.Restricted(A_ROOM_ID).toJoinRule())

View file

@ -376,10 +376,9 @@ private fun JoinRule?.toJoinAuthorisationStatus(): JoinAuthorisationStatus {
return when (this) { return when (this) {
JoinRule.Knock, JoinRule.Knock,
is JoinRule.KnockRestricted -> JoinAuthorisationStatus.CanKnock is JoinRule.KnockRestricted -> JoinAuthorisationStatus.CanKnock
JoinRule.Invite, JoinRule.Invite -> JoinAuthorisationStatus.NeedInvite
JoinRule.Private -> JoinAuthorisationStatus.NeedInvite
is JoinRule.Restricted -> JoinAuthorisationStatus.Restricted is JoinRule.Restricted -> JoinAuthorisationStatus.Restricted
JoinRule.Public -> JoinAuthorisationStatus.CanJoin JoinRule.Public -> JoinAuthorisationStatus.CanJoin
else -> JoinAuthorisationStatus.Unknown is JoinRule.Custom, null -> JoinAuthorisationStatus.Unknown
} }
} }

View file

@ -1035,34 +1035,6 @@ class JoinRoomPresenterTest {
} }
} }
@Test
fun `present - when room is not known RoomPreview is loaded as Private`() = runTest {
val client = FakeMatrixClient(
getNotJoinedRoomResult = { _, _ ->
Result.success(
aRoomPreview(
info = aRoomPreviewInfo(joinRule = JoinRule.Private),
roomMembershipDetails = {
Result.success(aRoomMembershipDetails())
},
)
)
},
spaceService = FakeSpaceService(
spaceRoomListResult = { FakeSpaceRoomList() },
),
)
val presenter = createJoinRoomPresenter(
matrixClient = client
)
presenter.test {
skipItems(1)
awaitItem().also { state ->
assertThat(state.joinAuthorisationStatus).isEqualTo(JoinAuthorisationStatus.NeedInvite)
}
}
}
@Test @Test
fun `present - when room is not known RoomPreview is loaded as Custom`() = runTest { fun `present - when room is not known RoomPreview is loaded as Custom`() = runTest {
val client = FakeMatrixClient( val client = FakeMatrixClient(

View file

@ -582,7 +582,7 @@ class RoomDetailsPresenterTest {
assertThat(awaitItem().canShowKnockRequests).isFalse() assertThat(awaitItem().canShowKnockRequests).isFalse()
featureFlagService.setFeatureEnabled(FeatureFlags.Knock, true) featureFlagService.setFeatureEnabled(FeatureFlags.Knock, true)
assertThat(awaitItem().canShowKnockRequests).isTrue() assertThat(awaitItem().canShowKnockRequests).isTrue()
room.givenRoomInfo(aRoomInfo(joinRule = JoinRule.Private)) room.givenRoomInfo(aRoomInfo(joinRule = JoinRule.Invite))
assertThat(awaitItem().canShowKnockRequests).isFalse() assertThat(awaitItem().canShowKnockRequests).isFalse()
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
} }

View file

@ -472,7 +472,6 @@ private fun JoinRule?.map(): SecurityAndPrivacyRoomAccess {
JoinRule.Invite -> SecurityAndPrivacyRoomAccess.InviteOnly JoinRule.Invite -> SecurityAndPrivacyRoomAccess.InviteOnly
// All other cases are not supported so we default to InviteOnly // All other cases are not supported so we default to InviteOnly
is JoinRule.Custom, is JoinRule.Custom,
JoinRule.Private,
null -> SecurityAndPrivacyRoomAccess.InviteOnly null -> SecurityAndPrivacyRoomAccess.InviteOnly
} }
} }
@ -481,7 +480,7 @@ private fun SecurityAndPrivacyRoomAccess.map(): JoinRule? {
return when (this) { return when (this) {
SecurityAndPrivacyRoomAccess.Anyone -> JoinRule.Public SecurityAndPrivacyRoomAccess.Anyone -> JoinRule.Public
SecurityAndPrivacyRoomAccess.AskToJoin -> JoinRule.Knock SecurityAndPrivacyRoomAccess.AskToJoin -> JoinRule.Knock
SecurityAndPrivacyRoomAccess.InviteOnly -> JoinRule.Private SecurityAndPrivacyRoomAccess.InviteOnly -> JoinRule.Invite
is SecurityAndPrivacyRoomAccess.SpaceMember -> JoinRule.Restricted( is SecurityAndPrivacyRoomAccess.SpaceMember -> JoinRule.Restricted(
rules = this.spaceIds.map { AllowRule.RoomMembership(it) }.toImmutableList() rules = this.spaceIds.map { AllowRule.RoomMembership(it) }.toImmutableList()
) )

View file

@ -309,7 +309,7 @@ class SecurityAndPrivacyPresenterTest {
baseRoom = FakeBaseRoom( baseRoom = FakeBaseRoom(
roomPermissions = roomPermissions(), roomPermissions = roomPermissions(),
getRoomVisibilityResult = { Result.success(RoomVisibility.Private) }, getRoomVisibilityResult = { Result.success(RoomVisibility.Private) },
initialRoomInfo = aRoomInfo(historyVisibility = RoomHistoryVisibility.Shared, joinRule = JoinRule.Private) initialRoomInfo = aRoomInfo(historyVisibility = RoomHistoryVisibility.Shared, joinRule = JoinRule.Invite)
), ),
enableEncryptionResult = enableEncryptionLambda, enableEncryptionResult = enableEncryptionLambda,
updateJoinRuleResult = updateJoinRuleLambda, updateJoinRuleResult = updateJoinRuleLambda,
@ -1091,7 +1091,7 @@ class SecurityAndPrivacyPresenterTest {
baseRoom = FakeBaseRoom( baseRoom = FakeBaseRoom(
roomPermissions = roomPermissions(), roomPermissions = roomPermissions(),
getRoomVisibilityResult = { Result.success(RoomVisibility.Private) }, getRoomVisibilityResult = { Result.success(RoomVisibility.Private) },
initialRoomInfo = aRoomInfo(historyVisibility = RoomHistoryVisibility.Shared, joinRule = JoinRule.Private) initialRoomInfo = aRoomInfo(historyVisibility = RoomHistoryVisibility.Shared, joinRule = JoinRule.Invite)
), ),
), ),
navigator: SecurityAndPrivacyNavigator = FakeSecurityAndPrivacyNavigator(), navigator: SecurityAndPrivacyNavigator = FakeSecurityAndPrivacyNavigator(),

View file

@ -38,7 +38,7 @@ class LeaveSpaceStateProvider : PreviewParameterProvider<LeaveSpaceState> {
), ),
aSelectableSpaceRoom( aSelectableSpaceRoom(
spaceRoom = aSpaceRoom( spaceRoom = aSpaceRoom(
joinRule = JoinRule.Private, joinRule = JoinRule.Invite,
), ),
isSelected = false, isSelected = false,
), ),
@ -56,7 +56,7 @@ class LeaveSpaceStateProvider : PreviewParameterProvider<LeaveSpaceState> {
), ),
aSelectableSpaceRoom( aSelectableSpaceRoom(
spaceRoom = aSpaceRoom( spaceRoom = aSpaceRoom(
joinRule = JoinRule.Private, joinRule = JoinRule.Invite,
), ),
isSelected = true, isSelected = true,
), ),

View file

@ -311,8 +311,8 @@ private fun SpaceItem(
Row( Row(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
if (room.joinRule == JoinRule.Private) { if (room.joinRule == JoinRule.Invite) {
// Picto for private // Picto for invite only
Icon( Icon(
modifier = Modifier modifier = Modifier
.size(16.dp) .size(16.dp)

View file

@ -37,7 +37,6 @@ fun MediaPreviewValue?.isPreviewEnabled(joinRule: JoinRule?): Boolean {
null, On -> true null, On -> true
Off -> false Off -> false
Private -> when (joinRule) { Private -> when (joinRule) {
is JoinRule.Private,
is JoinRule.Knock, is JoinRule.Knock,
is JoinRule.Invite, is JoinRule.Invite,
is JoinRule.Restricted, is JoinRule.Restricted,

View file

@ -14,7 +14,6 @@ import kotlinx.collections.immutable.ImmutableList
@Immutable @Immutable
sealed interface JoinRule { sealed interface JoinRule {
data object Public : JoinRule data object Public : JoinRule
data object Private : JoinRule
data object Knock : JoinRule data object Knock : JoinRule
data object Invite : JoinRule data object Invite : JoinRule
data class Restricted(val rules: ImmutableList<AllowRule>) : JoinRule data class Restricted(val rules: ImmutableList<AllowRule>) : JoinRule

View file

@ -15,7 +15,8 @@ import org.matrix.rustcomponents.sdk.JoinRule as RustJoinRule
fun RustJoinRule.map(): JoinRule { fun RustJoinRule.map(): JoinRule {
return when (this) { return when (this) {
RustJoinRule.Public -> JoinRule.Public RustJoinRule.Public -> JoinRule.Public
RustJoinRule.Private -> JoinRule.Private // Assume a private join rule is invite only instead. Private shouldn't be in use in Matrix.
RustJoinRule.Private -> JoinRule.Invite
RustJoinRule.Knock -> JoinRule.Knock RustJoinRule.Knock -> JoinRule.Knock
RustJoinRule.Invite -> JoinRule.Invite RustJoinRule.Invite -> JoinRule.Invite
is RustJoinRule.Restricted -> JoinRule.Restricted(rules.map { it.map() }.toImmutableList()) is RustJoinRule.Restricted -> JoinRule.Restricted(rules.map { it.map() }.toImmutableList())
@ -27,7 +28,6 @@ fun RustJoinRule.map(): JoinRule {
fun JoinRule.map(): RustJoinRule { fun JoinRule.map(): RustJoinRule {
return when (this) { return when (this) {
JoinRule.Public -> RustJoinRule.Public JoinRule.Public -> RustJoinRule.Public
JoinRule.Private -> RustJoinRule.Private
JoinRule.Knock -> RustJoinRule.Knock JoinRule.Knock -> RustJoinRule.Knock
JoinRule.Invite -> RustJoinRule.Invite JoinRule.Invite -> RustJoinRule.Invite
is JoinRule.Restricted -> RustJoinRule.Restricted(rules.map { it.map() }) is JoinRule.Restricted -> RustJoinRule.Restricted(rules.map { it.map() })