Split MatrixRoom into BaseRoom and JoinedRoom (#4561)

`JoinedRoom` will now contain both a mandatory live timeline reference and all the functionality associated to it.

`BaseRoom` on the other hand will contain only functionality that's shared for both joined and not joined rooms.

`NotJoinedRoom` is a wrapper around `RoomPreviewInfo` data and a possible local `BaseRoom`, if it exists.

The `RustRoomFactory` cache is now gone since the persistent event cache should have the same effect.
This commit is contained in:
Jorge Martin Espinosa
2025-04-23 15:53:40 +02:00
committed by GitHub
parent 57254a6f9c
commit c537e94146
193 changed files with 2921 additions and 2567 deletions

View File

@@ -72,7 +72,7 @@ class SharePresenter @AssistedInject constructor(
} else {
roomIds
.map { roomId ->
val room = matrixClient.getRoom(roomId) ?: return@map false
val room = matrixClient.getJoinedRoom(roomId) ?: return@map false
val mediaSender = MediaSender(
preProcessor = mediaPreProcessor,
room = room,
@@ -93,7 +93,7 @@ class SharePresenter @AssistedInject constructor(
onPlainText = { text ->
roomIds
.map { roomId ->
matrixClient.getRoom(roomId)?.sendMessage(
matrixClient.getJoinedRoom(roomId)?.sendMessage(
body = text,
htmlBody = null,
intentionalMentions = emptyList(),

View File

@@ -23,7 +23,7 @@ import io.element.android.libraries.matrix.test.A_MESSAGE
import io.element.android.libraries.matrix.test.A_ROOM_ID
import io.element.android.libraries.matrix.test.FakeMatrixClient
import io.element.android.libraries.matrix.test.media.FakeMediaUploadHandler
import io.element.android.libraries.matrix.test.room.FakeMatrixRoom
import io.element.android.libraries.matrix.test.room.FakeJoinedRoom
import io.element.android.libraries.mediaupload.api.MediaPreProcessor
import io.element.android.libraries.mediaupload.test.FakeMediaPreProcessor
import io.element.android.libraries.preferences.test.InMemorySessionPreferencesStore
@@ -90,11 +90,11 @@ class SharePresenterTest {
@Test
fun `present - send text ok`() = runTest {
val matrixRoom = FakeMatrixRoom(
val joinedRoom = FakeJoinedRoom(
sendMessageResult = { _, _, _ -> Result.success(Unit) },
)
val matrixClient = FakeMatrixClient().apply {
givenGetRoomResult(A_ROOM_ID, matrixRoom)
givenGetRoomResult(A_ROOM_ID, joinedRoom)
}
val presenter = createSharePresenter(
matrixClient = matrixClient,
@@ -121,11 +121,11 @@ class SharePresenterTest {
lambdaRecorder<File, FileInfo, String?, String?, ProgressCallback?, ReplyParameters?, Result<FakeMediaUploadHandler>> { _, _, _, _, _, _ ->
Result.success(FakeMediaUploadHandler())
}
val matrixRoom = FakeMatrixRoom(
val joinedRoom = FakeJoinedRoom(
sendFileResult = sendFileResult,
)
val matrixClient = FakeMatrixClient().apply {
givenGetRoomResult(A_ROOM_ID, matrixRoom)
givenGetRoomResult(A_ROOM_ID, joinedRoom)
}
val presenter = createSharePresenter(
matrixClient = matrixClient,