mirror of
https://github.com/element-hq/element-x-ios.git
synced 2025-03-11 13:59:13 +00:00
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:
parent
37786b8fad
commit
f44c0765f8
@ -81,6 +81,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
|
|||||||
|
|
||||||
defer {
|
defer {
|
||||||
hideLoadingIndicator()
|
hideLoadingIndicator()
|
||||||
|
updateRoomDetails()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Using only the preview API isn't enough as it's not capable
|
// Using only the preview API isn't enough as it's not capable
|
||||||
@ -105,10 +106,6 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func updateRoomDetails() {
|
private func updateRoomDetails() {
|
||||||
if roomProxy == nil, roomPreviewDetails == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
let name = roomProxy?.name ?? roomPreviewDetails?.name
|
let name = roomProxy?.name ?? roomPreviewDetails?.name
|
||||||
state.roomDetails = JoinRoomScreenRoomDetails(name: name,
|
state.roomDetails = JoinRoomScreenRoomDetails(name: name,
|
||||||
topic: roomProxy?.topic ?? roomPreviewDetails?.topic,
|
topic: roomProxy?.topic ?? roomPreviewDetails?.topic,
|
||||||
@ -120,11 +117,6 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func updateMode() {
|
private func updateMode() {
|
||||||
if roomProxy == nil, roomPreviewDetails == nil {
|
|
||||||
state.mode = .unknown
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if roomProxy?.isPublic ?? false || roomPreviewDetails?.isPublic ?? false {
|
if roomProxy?.isPublic ?? false || roomPreviewDetails?.isPublic ?? false {
|
||||||
state.mode = .join
|
state.mode = .join
|
||||||
} else if roomProxy?.membership == .invited || roomPreviewDetails?.isInvited ?? false {
|
} 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.
|
} else if roomPreviewDetails?.canKnock ?? false, allowKnocking { // Knocking is not supported yet, the flag is purely for preview tests.
|
||||||
state.mode = .knock
|
state.mode = .knock
|
||||||
} else {
|
} 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> {
|
func resolveRoomAlias(_ alias: String) async -> Result<ResolvedRoomAlias, ClientProxyError> {
|
||||||
do {
|
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 {
|
} catch {
|
||||||
MXLog.error("Failed resolving room alias: \(alias) with error: \(error)")
|
MXLog.error("Failed resolving room alias: \(alias) with error: \(error)")
|
||||||
return .failure(.sdkError(error))
|
return .failure(.sdkError(error))
|
||||||
|
BIN
PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Unknown.png
(Stored with Git LFS)
BIN
PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Unknown.png
(Stored with Git LFS)
Binary file not shown.
BIN
PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Unknown.png
(Stored with Git LFS)
BIN
PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Unknown.png
(Stored with Git LFS)
Binary file not shown.
BIN
PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-en-GB.Unknown.png
(Stored with Git LFS)
BIN
PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-en-GB.Unknown.png
(Stored with Git LFS)
Binary file not shown.
BIN
PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-pseudo.Unknown.png
(Stored with Git LFS)
BIN
PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-pseudo.Unknown.png
(Stored with Git LFS)
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user