Provide calculated server names when opening a room from another (#5155)
* Provide calculated server names when opening a room from another, based on the most frequently used domain names in the user ids for the users in the room. This helps when following permalinks or navigating to the successor room of a tombstoned one. Previously, the `/summary` endpoint was failing because no server names were used in the `via` parameters.
This commit is contained in:
committed by
GitHub
parent
1a31e49f1e
commit
516c3cfda3
+3
-3
@@ -283,7 +283,7 @@ class RustMatrixClient(
|
||||
}
|
||||
|
||||
override suspend fun getJoinedRoom(roomId: RoomId): JoinedRoom? = withContext(sessionDispatcher) {
|
||||
(roomFactory.getJoinedRoomOrPreview(roomId) as? GetRoomResult.Joined)?.joinedRoom
|
||||
(roomFactory.getJoinedRoomOrPreview(roomId, emptyList()) as? GetRoomResult.Joined)?.joinedRoom
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -481,7 +481,7 @@ class RustMatrixClient(
|
||||
is RoomIdOrAlias.Alias -> {
|
||||
val roomId = innerClient.resolveRoomAlias(roomIdOrAlias.roomAlias.value)?.roomId?.let { RoomId(it) }
|
||||
|
||||
var room = (roomId?.let { roomFactory.getJoinedRoomOrPreview(it) } as? GetRoomResult.NotJoined)?.notJoinedRoom
|
||||
var room = (roomId?.let { roomFactory.getJoinedRoomOrPreview(it, serverNames) } as? GetRoomResult.NotJoined)?.notJoinedRoom
|
||||
if (room == null) {
|
||||
val preview = innerClient.getRoomPreviewFromRoomAlias(roomIdOrAlias.roomAlias.value)
|
||||
room = NotJoinedRustRoom(sessionId, null, RoomPreviewInfoMapper.map(preview.info()))
|
||||
@@ -489,7 +489,7 @@ class RustMatrixClient(
|
||||
room
|
||||
}
|
||||
is RoomIdOrAlias.Id -> {
|
||||
var room = (roomFactory.getJoinedRoomOrPreview(roomIdOrAlias.roomId) as? GetRoomResult.NotJoined)?.notJoinedRoom
|
||||
var room = (roomFactory.getJoinedRoomOrPreview(roomIdOrAlias.roomId, serverNames) as? GetRoomResult.NotJoined)?.notJoinedRoom
|
||||
|
||||
if (room == null) {
|
||||
val preview = innerClient.getRoomPreviewFromRoomId(roomIdOrAlias.roomId.value, serverNames)
|
||||
|
||||
+2
-2
@@ -98,7 +98,7 @@ class RustRoomFactory(
|
||||
)
|
||||
}
|
||||
|
||||
suspend fun getJoinedRoomOrPreview(roomId: RoomId): GetRoomResult? = withContext(dispatcher) {
|
||||
suspend fun getJoinedRoomOrPreview(roomId: RoomId, serverNames: List<String>): GetRoomResult? = withContext(dispatcher) {
|
||||
mutex.withLock {
|
||||
if (isDestroyed.get()) {
|
||||
Timber.d("Room factory is destroyed, returning null for $roomId")
|
||||
@@ -132,7 +132,7 @@ class RustRoomFactory(
|
||||
)
|
||||
} else {
|
||||
val preview = try {
|
||||
sdkRoom.previewRoom(via = emptyList())
|
||||
sdkRoom.previewRoom(via = serverNames)
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e, "Failed to get room preview for $roomId")
|
||||
return@withContext null
|
||||
|
||||
Reference in New Issue
Block a user