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].
*/
fun toJoinRule(): JoinRule = when (this) {
Private -> JoinRule.Private
Private -> JoinRule.Invite
PublicVisibility.Public -> JoinRule.Public
PublicVisibility.AskToJoin -> JoinRule.Knock
is PublicVisibility.Restricted -> JoinRule.Restricted(persistentListOf(AllowRule.RoomMembership(parentSpaceId)))

View File

@@ -18,7 +18,7 @@ import org.junit.Test
class JoinRuleItemTest {
@Test
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.AskToJoin.toJoinRule()).isEqualTo(JoinRule.Knock)
assertThat(JoinRuleItem.PublicVisibility.Restricted(A_ROOM_ID).toJoinRule())

View File

@@ -376,10 +376,9 @@ private fun JoinRule?.toJoinAuthorisationStatus(): JoinAuthorisationStatus {
return when (this) {
JoinRule.Knock,
is JoinRule.KnockRestricted -> JoinAuthorisationStatus.CanKnock
JoinRule.Invite,
JoinRule.Private -> JoinAuthorisationStatus.NeedInvite
JoinRule.Invite -> JoinAuthorisationStatus.NeedInvite
is JoinRule.Restricted -> JoinAuthorisationStatus.Restricted
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
fun `present - when room is not known RoomPreview is loaded as Custom`() = runTest {
val client = FakeMatrixClient(

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -14,7 +14,6 @@ import kotlinx.collections.immutable.ImmutableList
@Immutable
sealed interface JoinRule {
data object Public : JoinRule
data object Private : JoinRule
data object Knock : JoinRule
data object Invite : 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 {
return when (this) {
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.Invite -> JoinRule.Invite
is RustJoinRule.Restricted -> JoinRule.Restricted(rules.map { it.map() }.toImmutableList())
@@ -27,7 +28,6 @@ fun RustJoinRule.map(): JoinRule {
fun JoinRule.map(): RustJoinRule {
return when (this) {
JoinRule.Public -> RustJoinRule.Public
JoinRule.Private -> RustJoinRule.Private
JoinRule.Knock -> RustJoinRule.Knock
JoinRule.Invite -> RustJoinRule.Invite
is JoinRule.Restricted -> RustJoinRule.Restricted(rules.map { it.map() })