Fixes #3078 - Trim number of resolved alias vias and always default to a join button in the room preview screen
This commit is contained in:
committed by
Stefan Ceriu
parent
35e69bae24
commit
7fd97d4426
@@ -81,6 +81,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
|
||||
|
||||
defer {
|
||||
hideLoadingIndicator()
|
||||
updateRoomDetails()
|
||||
}
|
||||
|
||||
// Using only the preview API isn't enough as it's not capable
|
||||
@@ -105,10 +106,6 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
|
||||
}
|
||||
|
||||
private func updateRoomDetails() {
|
||||
if roomProxy == nil, roomPreviewDetails == nil {
|
||||
return
|
||||
}
|
||||
|
||||
let name = roomProxy?.name ?? roomPreviewDetails?.name
|
||||
state.roomDetails = JoinRoomScreenRoomDetails(name: name,
|
||||
topic: roomProxy?.topic ?? roomPreviewDetails?.topic,
|
||||
@@ -120,11 +117,6 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
|
||||
}
|
||||
|
||||
private func updateMode() {
|
||||
if roomProxy == nil, roomPreviewDetails == nil {
|
||||
state.mode = .unknown
|
||||
return
|
||||
}
|
||||
|
||||
if roomProxy?.isPublic ?? false || roomPreviewDetails?.isPublic ?? false {
|
||||
state.mode = .join
|
||||
} else if roomProxy?.membership == .invited || roomPreviewDetails?.isInvited ?? false {
|
||||
@@ -132,7 +124,9 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
|
||||
} else if roomPreviewDetails?.canKnock ?? false, allowKnocking { // Knocking is not supported yet, the flag is purely for preview tests.
|
||||
state.mode = .knock
|
||||
} else {
|
||||
state.mode = .unknown
|
||||
// If everything else fails fallback to showing the join button and
|
||||
// letting the server figure it out.
|
||||
state.mode = .join
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -608,7 +608,14 @@ class ClientProxy: ClientProxyProtocol {
|
||||
|
||||
func resolveRoomAlias(_ alias: String) async -> Result<ResolvedRoomAlias, ClientProxyError> {
|
||||
do {
|
||||
return try await .success(client.resolveRoomAlias(roomAlias: alias))
|
||||
let resolvedAlias = try await client.resolveRoomAlias(roomAlias: alias)
|
||||
|
||||
// Resolving aliases is done through the directory/room API which returns too many / all known
|
||||
// vias, which in turn results in invalid join requests. Trim them to something manageable
|
||||
// https://github.com/element-hq/synapse/issues/17298
|
||||
let limitedAlias = ResolvedRoomAlias(roomId: resolvedAlias.roomId, servers: Array(resolvedAlias.servers.prefix(50)))
|
||||
|
||||
return .success(limitedAlias)
|
||||
} catch {
|
||||
MXLog.error("Failed resolving room alias: \(alias) with error: \(error)")
|
||||
return .failure(.sdkError(error))
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d101e405e058e332a699eb6c2db1ab38b15966e06b185b2241be78608dd1939e
|
||||
size 1959342
|
||||
oid sha256:682a385d77654a834eda1e16b05ceae250a9730868b133f5d73e0656b7d8e1f4
|
||||
size 1893025
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d101e405e058e332a699eb6c2db1ab38b15966e06b185b2241be78608dd1939e
|
||||
size 1959342
|
||||
oid sha256:5919ca74ce5a73c50b1ade86ce92cd6043d4aa187157be648b2a609f12546256
|
||||
size 1898227
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1f2d8c4d1cbce5e5cfe0437f75bf101189f3913592bb0d34b8b60f8ceff7f2d6
|
||||
size 800542
|
||||
oid sha256:c001018d811bda7d9db87503f38d94dc23a2102bc134d08b69e3af171ecbf350
|
||||
size 755374
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1f2d8c4d1cbce5e5cfe0437f75bf101189f3913592bb0d34b8b60f8ceff7f2d6
|
||||
size 800542
|
||||
oid sha256:93d65076d29abb7a6476b649fae781a8be6bad9d4b905c8251b7253498af3d3e
|
||||
size 761944
|
||||
|
||||
Reference in New Issue
Block a user