First try to resolve the room before checking for the alias validity. Fixes #5611

This commit is contained in:
Benoit Marty 2026-01-22 17:09:54 +01:00
parent a5a37664ba
commit a243ef7b0b
2 changed files with 115 additions and 3 deletions

View file

@ -113,7 +113,7 @@ class JoinRoomByAddressPresenter(
// debounce the room address resolution
delay(300)
val roomAlias = tryOrNull { RoomAlias(fullAddress) }
if (roomAlias != null && roomAliasHelper.isRoomAliasValid(roomAlias)) {
if (roomAlias != null) {
onChange(RoomAddressState.Resolving)
onChange(client.resolveRoomAddress(roomAlias))
} else {
@ -130,11 +130,21 @@ class JoinRoomByAddressPresenter(
if (resolved.isPresent) {
RoomAddressState.RoomFound(resolved.get())
} else {
RoomAddressState.RoomNotFound
roomAlias.toInvalidOrNotFound()
}
},
onFailure = { _ -> RoomAddressState.RoomNotFound }
onFailure = { _ ->
roomAlias.toInvalidOrNotFound()
}
)
} ?: RoomAddressState.RoomNotFound
}
private fun RoomAlias.toInvalidOrNotFound(): RoomAddressState {
return if (roomAliasHelper.isRoomAliasValid(this)) {
RoomAddressState.RoomNotFound
} else {
RoomAddressState.Invalid
}
}
}