Merge pull request #6200 from vector-im/bugfix/eric/upgrade-room-deduplication
Fixes room not being in space after upgrade
This commit is contained in:
commit
38ba61f144
|
@ -0,0 +1 @@
|
|||
Fixes room not being in space after upgrade
|
|
@ -33,5 +33,7 @@ enum class VersioningState {
|
|||
/**
|
||||
* The room has been upgraded, and the new room has been joined.
|
||||
*/
|
||||
UPGRADED_ROOM_JOINED,
|
||||
UPGRADED_ROOM_JOINED;
|
||||
|
||||
fun isUpgraded() = this != NONE
|
||||
}
|
||||
|
|
|
@ -84,8 +84,6 @@ class UpgradeRoomViewModelTask @Inject constructor(
|
|||
// autoJoin = currentInfo.autoJoin ?: false,
|
||||
suggested = currentInfo.suggested
|
||||
)
|
||||
|
||||
parentSpace.removeChildren(params.roomId)
|
||||
}
|
||||
}
|
||||
} catch (failure: Throwable) {
|
||||
|
|
|
@ -110,6 +110,7 @@ class SpaceDirectoryController @Inject constructor(
|
|||
?.filter {
|
||||
it.parentRoomId == (data.hierarchyStack.lastOrNull() ?: data.spaceId)
|
||||
}
|
||||
?.filterNot { it.isUpgradedRoom(data) }
|
||||
?: emptyList()
|
||||
|
||||
if (flattenChildInfo.isEmpty()) {
|
||||
|
@ -209,4 +210,7 @@ class SpaceDirectoryController @Inject constructor(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun SpaceChildInfo.isUpgradedRoom(data: SpaceDirectoryState) =
|
||||
data.knownRoomSummaries.any { it.roomId == childRoomId && it.versioningState.isUpgraded() }
|
||||
}
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* Copyright (c) 2022 New Vector Ltd
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.matrix.android.sdk.api.session.room.model
|
||||
|
||||
import org.amshove.kluent.shouldBe
|
||||
import org.junit.Test
|
||||
|
||||
internal class VersioningStateTest {
|
||||
|
||||
@Test
|
||||
fun `when VersioningState is NONE, then isUpgraded returns false`() {
|
||||
val versioningState = VersioningState.NONE
|
||||
|
||||
val isUpgraded = versioningState.isUpgraded()
|
||||
|
||||
isUpgraded shouldBe false
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `when VersioningState is UPGRADED_ROOM_NOT_JOINED, then isUpgraded returns true`() {
|
||||
val versioningState = VersioningState.UPGRADED_ROOM_NOT_JOINED
|
||||
|
||||
val isUpgraded = versioningState.isUpgraded()
|
||||
|
||||
isUpgraded shouldBe true
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `when VersioningState is UPGRADED_ROOM_JOINED, then isUpgraded returns true`() {
|
||||
val versioningState = VersioningState.UPGRADED_ROOM_JOINED
|
||||
|
||||
val isUpgraded = versioningState.isUpgraded()
|
||||
|
||||
isUpgraded shouldBe true
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue