Skip to content

Commit fca4df3

Browse files
author
Florian Renaud
committed
Revert "Ensure that Realm is up to date before returning the roomId"
This reverts commit 8a5a47c.
1 parent fdb9ed8 commit fca4df3

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/create/CreateLocalRoomTask.kt

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,17 @@ package org.matrix.android.sdk.internal.session.room.create
1818

1919
import com.zhuinden.monarchy.Monarchy
2020
import io.realm.Realm
21+
import io.realm.RealmConfiguration
2122
import io.realm.kotlin.createObject
23+
import kotlinx.coroutines.TimeoutCancellationException
2224
import org.matrix.android.sdk.api.extensions.orFalse
2325
import org.matrix.android.sdk.api.extensions.tryOrNull
2426
import org.matrix.android.sdk.api.session.events.model.Content
2527
import org.matrix.android.sdk.api.session.events.model.Event
2628
import org.matrix.android.sdk.api.session.events.model.EventType
2729
import org.matrix.android.sdk.api.session.events.model.LocalEcho
2830
import org.matrix.android.sdk.api.session.events.model.toContent
31+
import org.matrix.android.sdk.api.session.room.failure.CreateRoomFailure
2932
import org.matrix.android.sdk.api.session.room.model.GuestAccess
3033
import org.matrix.android.sdk.api.session.room.model.Membership
3134
import org.matrix.android.sdk.api.session.room.model.RoomDirectoryVisibility
@@ -38,6 +41,7 @@ import org.matrix.android.sdk.api.session.room.send.SendState
3841
import org.matrix.android.sdk.api.session.sync.model.RoomSyncSummary
3942
import org.matrix.android.sdk.api.session.user.UserService
4043
import org.matrix.android.sdk.api.session.user.model.User
44+
import org.matrix.android.sdk.internal.database.awaitNotEmptyResult
4145
import org.matrix.android.sdk.internal.database.helper.addTimelineEvent
4246
import org.matrix.android.sdk.internal.database.mapper.asDomain
4347
import org.matrix.android.sdk.internal.database.mapper.toEntity
@@ -47,6 +51,7 @@ import org.matrix.android.sdk.internal.database.model.EventInsertType
4751
import org.matrix.android.sdk.internal.database.model.RoomEntity
4852
import org.matrix.android.sdk.internal.database.model.RoomMembersLoadStatusType
4953
import org.matrix.android.sdk.internal.database.model.RoomSummaryEntity
54+
import org.matrix.android.sdk.internal.database.model.RoomSummaryEntityFields
5055
import org.matrix.android.sdk.internal.database.query.copyToRealmOrIgnore
5156
import org.matrix.android.sdk.internal.database.query.getOrCreate
5257
import org.matrix.android.sdk.internal.database.query.getOrNull
@@ -59,6 +64,7 @@ import org.matrix.android.sdk.internal.session.room.timeline.PaginationDirection
5964
import org.matrix.android.sdk.internal.task.Task
6065
import org.matrix.android.sdk.internal.util.awaitTransaction
6166
import org.matrix.android.sdk.internal.util.time.Clock
67+
import java.util.concurrent.TimeUnit
6268
import javax.inject.Inject
6369

6470
internal interface CreateLocalRoomTask : Task<CreateRoomParams, String>
@@ -68,6 +74,7 @@ internal class DefaultCreateLocalRoomTask @Inject constructor(
6874
@SessionDatabase private val monarchy: Monarchy,
6975
private val roomMemberEventHandler: RoomMemberEventHandler,
7076
private val roomSummaryUpdater: RoomSummaryUpdater,
77+
@SessionDatabase private val realmConfiguration: RealmConfiguration,
7178
private val createRoomBodyBuilder: CreateRoomBodyBuilder,
7279
private val userService: UserService,
7380
private val clock: Clock,
@@ -81,8 +88,16 @@ internal class DefaultCreateLocalRoomTask @Inject constructor(
8188
createLocalRoomSummaryEntity(realm, roomId, createRoomBody)
8289
}
8390

84-
// Ensure that Realm is up to date before returning the roomId.
85-
monarchy.doWithRealm { it.refresh() }
91+
// Wait for room to be created in DB
92+
try {
93+
awaitNotEmptyResult(realmConfiguration, TimeUnit.MINUTES.toMillis(1L)) { realm ->
94+
realm.where(RoomSummaryEntity::class.java)
95+
.equalTo(RoomSummaryEntityFields.ROOM_ID, roomId)
96+
.equalTo(RoomSummaryEntityFields.MEMBERSHIP_STR, Membership.JOIN.name)
97+
}
98+
} catch (exception: TimeoutCancellationException) {
99+
throw CreateRoomFailure.CreatedWithTimeout(roomId)
100+
}
86101

87102
return roomId
88103
}

0 commit comments

Comments
 (0)