From 230841c21dc1e039bc0c49d484b6479c815d33bd Mon Sep 17 00:00:00 2001 From: Doug Date: Mon, 15 Jul 2024 17:17:24 +0100 Subject: [PATCH 1/3] Use the same UI as Android when tapping a link to a private room. --- .../Screens/JoinRoomScreen/JoinRoomScreenModels.swift | 8 ++++++++ .../Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift | 2 ++ .../Screens/JoinRoomScreen/View/JoinRoomScreen.swift | 5 +++-- ElementX/Sources/Services/Client/ClientProxy.swift | 2 ++ .../Sources/Services/Client/ClientProxyProtocol.swift | 1 + .../test_joinRoomScreen-iPad-en-GB.Unknown.png | 4 ++-- .../test_joinRoomScreen-iPad-pseudo.Unknown.png | 4 ++-- 7 files changed, 20 insertions(+), 6 deletions(-) diff --git a/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenModels.swift b/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenModels.swift index d712bf4478..a29f63aac1 100644 --- a/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenModels.swift +++ b/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenModels.swift @@ -43,6 +43,14 @@ struct JoinRoomScreenViewState: BindableState { roomDetails?.name ?? L10n.screenJoinRoomTitleNoPreview } + var subtitle: String? { + switch mode { + case .loading: nil + case .unknown: L10n.screenJoinRoomSubtitleNoPreview + case .invited, .join, .knock: roomDetails?.canonicalAlias + } + } + var avatar: RoomAvatar { .room(id: roomID, name: title, avatarURL: roomDetails?.avatarURL) } diff --git a/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift b/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift index 78b41cfbe7..7ef6f2fdf1 100644 --- a/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift +++ b/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift @@ -81,6 +81,8 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo switch await clientProxy.roomPreviewForIdentifier(roomID, via: via) { case .success(let roomDetails): state.roomDetails = roomDetails + case .failure(.roomPreviewIsPrivate): + break // Handled by the mode, we don't need an error indicator. case .failure: userIndicatorController.submitIndicator(UserIndicator(title: L10n.errorUnknown)) } diff --git a/ElementX/Sources/Screens/JoinRoomScreen/View/JoinRoomScreen.swift b/ElementX/Sources/Screens/JoinRoomScreen/View/JoinRoomScreen.swift index bedf659dd3..2268a14f0d 100644 --- a/ElementX/Sources/Screens/JoinRoomScreen/View/JoinRoomScreen.swift +++ b/ElementX/Sources/Screens/JoinRoomScreen/View/JoinRoomScreen.swift @@ -51,10 +51,11 @@ struct JoinRoomScreen: View { .foregroundStyle(.compound.textPrimary) .multilineTextAlignment(.center) - if let alias = context.viewState.roomDetails?.canonicalAlias { - Text(alias) + if let subtitle = context.viewState.subtitle { + Text(subtitle) .font(.compound.bodyMD) .foregroundStyle(.compound.textSecondary) + .multilineTextAlignment(.center) } if let memberCount = context.viewState.roomDetails?.memberCount { diff --git a/ElementX/Sources/Services/Client/ClientProxy.swift b/ElementX/Sources/Services/Client/ClientProxy.swift index 51457809c3..5d5a6ab235 100644 --- a/ElementX/Sources/Services/Client/ClientProxy.swift +++ b/ElementX/Sources/Services/Client/ClientProxy.swift @@ -481,6 +481,8 @@ class ClientProxy: ClientProxyProtocol { do { let roomPreview = try await client.getRoomPreviewFromRoomId(roomId: identifier, viaServers: via) return .success(.init(roomPreview)) + } catch let error as ClientError where error.code == .forbidden { + return .failure(.roomPreviewIsPrivate) } catch { MXLog.error("Failed retrieving preview for room: \(identifier) with error: \(error)") return .failure(.sdkError(error)) diff --git a/ElementX/Sources/Services/Client/ClientProxyProtocol.swift b/ElementX/Sources/Services/Client/ClientProxyProtocol.swift index fbe7960a37..70eba486c9 100644 --- a/ElementX/Sources/Services/Client/ClientProxyProtocol.swift +++ b/ElementX/Sources/Services/Client/ClientProxyProtocol.swift @@ -43,6 +43,7 @@ enum ClientProxyError: Error { case invalidMedia case invalidUserIDServerName case failedUploadingMedia(Error, MatrixErrorCode) + case roomPreviewIsPrivate } enum SlidingSyncConstants { diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Unknown.png b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Unknown.png index 0da71bd56c..6ff8f3f953 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Unknown.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Unknown.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7eb5aca42879ec370564b491fe57faf286d479a4aa02566e6fa681004f322a7a -size 1953618 +oid sha256:a0b850d16e626197c8ce12f6b6467284adefaf19295b2c75deb13599bda4796f +size 1963867 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Unknown.png b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Unknown.png index 9691cb2567..d52f6a7243 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Unknown.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Unknown.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74c93b3fc3f013c500294c67cd801a6bec14b184dfac231c176ffc5b2b48158e -size 1957146 +oid sha256:b3cb6c41cb549203b7bae407d7dd9bc11381a1f15087d148dd067dbaab819e75 +size 1977775 From 797a0d089967e6c8e12784626a841a5a3583a186 Mon Sep 17 00:00:00 2001 From: Doug Date: Tue, 16 Jul 2024 10:45:42 +0100 Subject: [PATCH 2/3] Fix preview of knocking. --- .../Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift | 7 +++++-- .../Screens/JoinRoomScreen/View/JoinRoomScreen.swift | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift b/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift index 7ef6f2fdf1..8000b19960 100644 --- a/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift +++ b/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift @@ -22,6 +22,7 @@ typealias JoinRoomScreenViewModelType = StateStoreViewModel Date: Wed, 17 Jul 2024 18:03:16 +0100 Subject: [PATCH 3/3] Fix snapshots. --- .../PreviewTests/test_joinRoomScreen-iPad-en-GB.Invite.png | 4 ++-- .../PreviewTests/test_joinRoomScreen-iPad-en-GB.Join.png | 4 ++-- .../PreviewTests/test_joinRoomScreen-iPad-en-GB.Knock.png | 4 ++-- .../PreviewTests/test_joinRoomScreen-iPad-pseudo.Invite.png | 4 ++-- .../PreviewTests/test_joinRoomScreen-iPad-pseudo.Join.png | 4 ++-- .../PreviewTests/test_joinRoomScreen-iPad-pseudo.Knock.png | 4 ++-- .../test_joinRoomScreen-iPhone-15-en-GB.Invite.png | 4 ++-- .../PreviewTests/test_joinRoomScreen-iPhone-15-en-GB.Join.png | 4 ++-- .../test_joinRoomScreen-iPhone-15-en-GB.Knock.png | 4 ++-- .../test_joinRoomScreen-iPhone-15-pseudo.Invite.png | 4 ++-- .../test_joinRoomScreen-iPhone-15-pseudo.Join.png | 4 ++-- .../test_joinRoomScreen-iPhone-15-pseudo.Knock.png | 4 ++-- 12 files changed, 24 insertions(+), 24 deletions(-) diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Invite.png b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Invite.png index 94bea8b4f7..57f5cd7ef8 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Invite.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Invite.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2e66eb9d53892d4849c24958504b80a47029b242d19d37750eda9e92be99f16a -size 1980877 +oid sha256:ff22a5528ff2c3df3d16f8340919a8b31117603d374db7531d26021c774d3512 +size 1980756 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Join.png b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Join.png index 42761e7bce..e33772658b 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Join.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Join.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:84719756861fed326f1b076a63e9229a3d725da98342a3f31d00e8614865537e -size 1944887 +oid sha256:656011b2f47a26f568bf84df3ccd5c14281722a9102bf8b3b79b714c22c26b21 +size 1944766 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Knock.png b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Knock.png index 4844224d0e..a193b68889 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Knock.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-en-GB.Knock.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12fcce0c1ecfe6a4cf327fc1bc1392df9645e1598e9f198b19ac6f5d0fa6ea7e -size 2004327 +oid sha256:29ba90bb910486c5aba146e7f6692975d76adbde4c7aa291ada4164291726848 +size 1936891 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Invite.png b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Invite.png index 2db70cd0c2..31bc3567e3 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Invite.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Invite.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f249e7835423b71f8b5920def18070ba55875b2edc43898662e00d4780b9bc1 -size 1983443 +oid sha256:0cfe8c8a252ff738c7f630d083e5da55717027c01b21bf7c296346516fcc4650 +size 1983322 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Join.png b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Join.png index 325cf0ecf5..c2734a93a1 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Join.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Join.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d17a5a65a74b86c36e84246a0c7dabaf646e7c0df3990b8c85b3699bca3241cf -size 1946578 +oid sha256:c091decb9974de8d19b018e19285428fc5c5ee13c4706347c08b1338724db372 +size 1946457 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Knock.png b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Knock.png index 4844224d0e..f31e44885c 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Knock.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPad-pseudo.Knock.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12fcce0c1ecfe6a4cf327fc1bc1392df9645e1598e9f198b19ac6f5d0fa6ea7e -size 2004327 +oid sha256:de02b3401e0343c7784e8b29f8a255c4eafaf47574f55fdf518cf3578cd966a5 +size 1938644 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-en-GB.Invite.png b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-en-GB.Invite.png index 2b671c1ef0..d24a6db3fc 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-en-GB.Invite.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-en-GB.Invite.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:60a7304bba6808b92b41a36a83c8a9989ba676b893da7d2afec9dbc5e085c59f -size 818315 +oid sha256:f3ebfa2fc96c65b8652344cb46cf33f3c546f3f84e74d8b3403be8aebccb9972 +size 818046 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-en-GB.Join.png b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-en-GB.Join.png index 8344d592c5..73f82631be 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-en-GB.Join.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-en-GB.Join.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64419b0af6a9d4e89d8cfd5e610f69c744301088eb9f281fa72bb794d799c77c -size 796935 +oid sha256:f08cb674179dc0ad5765865043e1d93dc5f9612669e15c702b8c7121cbe110d7 +size 796666 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-en-GB.Knock.png b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-en-GB.Knock.png index bbc274be97..d83d9d41d4 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-en-GB.Knock.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-en-GB.Knock.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:576d5682c28ac13292d982b540c4cdd9753645bd7469d7085d0de28569a1654c -size 829540 +oid sha256:5ef205a1f5a1756ba3f89b8c0dd2dcfccb39da7e5bc1e72abd90fd2a3d803812 +size 791829 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-pseudo.Invite.png b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-pseudo.Invite.png index 45ff672d15..3eb0b72518 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-pseudo.Invite.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-pseudo.Invite.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8fe3c40f41cd97a62e3bc8a1054e875becaeffc5279a55d422c419464ef6ec55 -size 820702 +oid sha256:58a83d3709c4e7d6ac704ebb46b400e4127e97b91d7a13e5a5c0ab45df214827 +size 820433 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-pseudo.Join.png b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-pseudo.Join.png index 482d1666d1..1aaa9604dc 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-pseudo.Join.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-pseudo.Join.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:660601c6904b98270312dadbfc9e3d14aedb66e00fc6ce6f552cd4419436720e -size 798700 +oid sha256:24751938068a6a8a711d083640911f0b0d0a7a2d46e9c0cb649804a89e850e88 +size 798431 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-pseudo.Knock.png b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-pseudo.Knock.png index bbc274be97..c714c94212 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-pseudo.Knock.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_joinRoomScreen-iPhone-15-pseudo.Knock.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:576d5682c28ac13292d982b540c4cdd9753645bd7469d7085d0de28569a1654c -size 829540 +oid sha256:4e8df72dbca5c057ce933d2602d5e29350a3af0e79f6c1431b6cee897030e56d +size 793487