From 8b831d3f9e5b84e844148e4d94dbeb5a02d232cb Mon Sep 17 00:00:00 2001 From: Doug <6060466+pixlwave@users.noreply.github.com> Date: Tue, 7 Oct 2025 10:51:58 +0100 Subject: [PATCH] Add support for space rooms on the JoinRoomScreen. (#4582) * Add support for space rooms to JoinRoomScreenModel. * Make a single wrapper type for JoinRoomScreen previews to simplify instantiation. * Add previews for JoinRoomScreen for spaces. --- .../Sources/GeneratedAccessibilityTests.swift | 8 + ElementX.xcodeproj/project.pbxproj | 4 + .../en-US.lproj/Localizable.strings | 14 +- .../en.lproj/Localizable.strings | 2 +- .../RoomFlowCoordinator.swift | 3 +- .../SpaceFlowCoordinator.swift | 3 +- ElementX/Sources/Generated/Strings.swift | 2 +- .../Sources/Mocks/SpaceRoomProxyMock.swift | 40 +++ ElementX/Sources/Other/Avatars.swift | 2 +- .../Views/JoinedMembersBadgeView.swift | 85 ++++++ .../TestablePreviewsDictionary.swift | 2 + .../JoinRoomScreenCoordinator.swift | 20 +- .../JoinRoomScreen/JoinRoomScreenModels.swift | 51 +++- .../JoinRoomScreenViewModel.swift | 122 +++++--- .../JoinRoomScreen/View/JoinRoomScreen.swift | 263 +++++++++++------- .../Spaces/Common/SpaceHeaderView.swift | 60 +--- .../Sources/GeneratedPreviewTests.swift | 12 + .../joinRoomScreen.Banned-iPad-en-GB.png | 4 +- .../joinRoomScreen.Banned-iPad-pseudo.png | 4 +- .../joinRoomScreen.Banned-iPhone-16-en-GB.png | 4 +- ...joinRoomScreen.Banned-iPhone-16-pseudo.png | 4 +- .../joinRoomScreen.Forbidden-iPad-en-GB.png | 4 +- .../joinRoomScreen.Forbidden-iPad-pseudo.png | 4 +- ...inRoomScreen.Forbidden-iPhone-16-en-GB.png | 4 +- ...nRoomScreen.Forbidden-iPhone-16-pseudo.png | 4 +- ...inRoomScreen.InviteRequired-iPad-en-GB.png | 4 +- ...nRoomScreen.InviteRequired-iPad-pseudo.png | 4 +- ...mScreen.InviteRequired-iPhone-16-en-GB.png | 4 +- ...Screen.InviteRequired-iPhone-16-pseudo.png | 4 +- .../joinRoomScreen.Invited-iPad-en-GB.png | 4 +- .../joinRoomScreen.Invited-iPad-pseudo.png | 4 +- ...joinRoomScreen.Invited-iPhone-16-en-GB.png | 4 +- ...oinRoomScreen.Invited-iPhone-16-pseudo.png | 4 +- .../joinRoomScreen.InvitedDM-iPad-en-GB.png | 4 +- .../joinRoomScreen.InvitedDM-iPad-pseudo.png | 4 +- ...inRoomScreen.InvitedDM-iPhone-16-en-GB.png | 4 +- ...nRoomScreen.InvitedDM-iPhone-16-pseudo.png | 4 +- ...en.InvitedWithHiddenAvatars-iPad-en-GB.png | 4 +- ...n.InvitedWithHiddenAvatars-iPad-pseudo.png | 4 +- ...vitedWithHiddenAvatars-iPhone-16-en-GB.png | 4 +- ...itedWithHiddenAvatars-iPhone-16-pseudo.png | 4 +- .../joinRoomScreen.Joinable-iPad-en-GB.png | 4 +- .../joinRoomScreen.Joinable-iPad-pseudo.png | 4 +- ...oinRoomScreen.Joinable-iPhone-16-en-GB.png | 4 +- ...inRoomScreen.Joinable-iPhone-16-pseudo.png | 4 +- .../joinRoomScreen.Knockable-iPad-en-GB.png | 4 +- .../joinRoomScreen.Knockable-iPad-pseudo.png | 4 +- ...inRoomScreen.Knockable-iPhone-16-en-GB.png | 4 +- ...nRoomScreen.Knockable-iPhone-16-pseudo.png | 4 +- .../joinRoomScreen.Restricted-iPad-en-GB.png | 4 +- .../joinRoomScreen.Restricted-iPad-pseudo.png | 4 +- ...nRoomScreen.Restricted-iPhone-16-en-GB.png | 4 +- ...RoomScreen.Restricted-iPhone-16-pseudo.png | 4 +- ...omScreen.RestrictedJoinable-iPad-en-GB.png | 4 +- ...mScreen.RestrictedJoinable-iPad-pseudo.png | 4 +- ...een.RestrictedJoinable-iPhone-16-en-GB.png | 4 +- ...en.RestrictedJoinable-iPhone-16-pseudo.png | 4 +- .../joinRoomScreen.Unknown-iPad-en-GB.png | 4 +- .../joinRoomScreen.Unknown-iPad-pseudo.png | 4 +- ...joinRoomScreen.Unknown-iPhone-16-en-GB.png | 4 +- ...oinRoomScreen.Unknown-iPhone-16-pseudo.png | 4 +- ...oomScreenSpace.Banned-Space-iPad-en-GB.png | 3 + ...omScreenSpace.Banned-Space-iPad-pseudo.png | 3 + ...reenSpace.Banned-Space-iPhone-16-en-GB.png | 3 + ...eenSpace.Banned-Space-iPhone-16-pseudo.png | 3 + ...ScreenSpace.Forbidden-Space-iPad-en-GB.png | 3 + ...creenSpace.Forbidden-Space-iPad-pseudo.png | 3 + ...nSpace.Forbidden-Space-iPhone-16-en-GB.png | 3 + ...Space.Forbidden-Space-iPhone-16-pseudo.png | 3 + ...nSpace.InviteRequired-Space-iPad-en-GB.png | 3 + ...Space.InviteRequired-Space-iPad-pseudo.png | 3 + ...e.InviteRequired-Space-iPhone-16-en-GB.png | 3 + ....InviteRequired-Space-iPhone-16-pseudo.png | 3 + ...omScreenSpace.Invited-Space-iPad-en-GB.png | 3 + ...mScreenSpace.Invited-Space-iPad-pseudo.png | 3 + ...eenSpace.Invited-Space-iPhone-16-en-GB.png | 3 + ...enSpace.Invited-Space-iPhone-16-pseudo.png | 3 + ...itedWithHiddenAvatars-Space-iPad-en-GB.png | 3 + ...tedWithHiddenAvatars-Space-iPad-pseudo.png | 3 + ...ithHiddenAvatars-Space-iPhone-16-en-GB.png | 3 + ...thHiddenAvatars-Space-iPhone-16-pseudo.png | 3 + ...mScreenSpace.Joinable-Space-iPad-en-GB.png | 3 + ...ScreenSpace.Joinable-Space-iPad-pseudo.png | 3 + ...enSpace.Joinable-Space-iPhone-16-en-GB.png | 3 + ...nSpace.Joinable-Space-iPhone-16-pseudo.png | 3 + ...ScreenSpace.Knockable-Space-iPad-en-GB.png | 3 + ...creenSpace.Knockable-Space-iPad-pseudo.png | 3 + ...nSpace.Knockable-Space-iPhone-16-en-GB.png | 3 + ...Space.Knockable-Space-iPhone-16-pseudo.png | 3 + ...omScreenSpace.Knocked-Space-iPad-en-GB.png | 3 + ...mScreenSpace.Knocked-Space-iPad-pseudo.png | 3 + ...eenSpace.Knocked-Space-iPhone-16-en-GB.png | 3 + ...enSpace.Knocked-Space-iPhone-16-pseudo.png | 3 + ...creenSpace.Restricted-Space-iPad-en-GB.png | 3 + ...reenSpace.Restricted-Space-iPad-pseudo.png | 3 + ...Space.Restricted-Space-iPhone-16-en-GB.png | 3 + ...pace.Restricted-Space-iPhone-16-pseudo.png | 3 + ...ce.RestrictedJoinable-Space-iPad-en-GB.png | 3 + ...e.RestrictedJoinable-Space-iPad-pseudo.png | 3 + ...strictedJoinable-Space-iPhone-16-en-GB.png | 3 + ...trictedJoinable-Space-iPhone-16-pseudo.png | 3 + .../JoinRoomScreenViewModelTests.swift | 3 +- 102 files changed, 671 insertions(+), 321 deletions(-) create mode 100644 ElementX/Sources/Other/SwiftUI/Views/JoinedMembersBadgeView.swift create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Banned-Space-iPad-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Banned-Space-iPad-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Banned-Space-iPhone-16-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Banned-Space-iPhone-16-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Forbidden-Space-iPad-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Forbidden-Space-iPad-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Forbidden-Space-iPhone-16-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Forbidden-Space-iPhone-16-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InviteRequired-Space-iPad-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InviteRequired-Space-iPad-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InviteRequired-Space-iPhone-16-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InviteRequired-Space-iPhone-16-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Invited-Space-iPad-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Invited-Space-iPad-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Invited-Space-iPhone-16-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Invited-Space-iPhone-16-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InvitedWithHiddenAvatars-Space-iPad-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InvitedWithHiddenAvatars-Space-iPad-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InvitedWithHiddenAvatars-Space-iPhone-16-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InvitedWithHiddenAvatars-Space-iPhone-16-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Joinable-Space-iPad-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Joinable-Space-iPad-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Joinable-Space-iPhone-16-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Joinable-Space-iPhone-16-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knockable-Space-iPad-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knockable-Space-iPad-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knockable-Space-iPhone-16-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knockable-Space-iPhone-16-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knocked-Space-iPad-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knocked-Space-iPad-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knocked-Space-iPhone-16-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knocked-Space-iPhone-16-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Restricted-Space-iPad-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Restricted-Space-iPad-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Restricted-Space-iPhone-16-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Restricted-Space-iPhone-16-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.RestrictedJoinable-Space-iPad-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.RestrictedJoinable-Space-iPad-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.RestrictedJoinable-Space-iPhone-16-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.RestrictedJoinable-Space-iPhone-16-pseudo.png diff --git a/AccessibilityTests/Sources/GeneratedAccessibilityTests.swift b/AccessibilityTests/Sources/GeneratedAccessibilityTests.swift index e3d239e15..e3b08b1f7 100644 --- a/AccessibilityTests/Sources/GeneratedAccessibilityTests.swift +++ b/AccessibilityTests/Sources/GeneratedAccessibilityTests.swift @@ -227,10 +227,18 @@ extension AccessibilityTests { try await performAccessibilityAudit(named: "JoinRoomByAddressView_Previews") } + func testJoinRoomScreenSpace() async throws { + try await performAccessibilityAudit(named: "JoinRoomScreenSpace_Previews") + } + func testJoinRoomScreen() async throws { try await performAccessibilityAudit(named: "JoinRoomScreen_Previews") } + func testJoinedMembersBadgeView() async throws { + try await performAccessibilityAudit(named: "JoinedMembersBadgeView_Previews") + } + func testKnockRequestCell() async throws { try await performAccessibilityAudit(named: "KnockRequestCell_Previews") } diff --git a/ElementX.xcodeproj/project.pbxproj b/ElementX.xcodeproj/project.pbxproj index 932d947a0..1f706300a 100644 --- a/ElementX.xcodeproj/project.pbxproj +++ b/ElementX.xcodeproj/project.pbxproj @@ -1330,6 +1330,7 @@ F103924DED414ADFE398CE99 /* RoomPollsHistoryScreenViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = A130A2251A15A7AACC84FD37 /* RoomPollsHistoryScreenViewModelProtocol.swift */; }; F118DD449066E594F63C697D /* RoomMemberProxyProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B5E17028C02DFA7DDA3931 /* RoomMemberProxyProtocol.swift */; }; F12F6BED7B6D7EE4BEE55039 /* PlainMentionBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AE78FA0011E07920AE83135 /* PlainMentionBuilder.swift */; }; + F16EED85E30B83878FBC6629 /* JoinedMembersBadgeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F320003F490B11F808ECC5E9 /* JoinedMembersBadgeView.swift */; }; F18CA61A58C77C84F551B8E7 /* GeneratedMocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57916A1578D8043BB0795441 /* GeneratedMocks.swift */; }; F1C68F64FC8A66B6B9510BF7 /* ManageRoomMemberSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B30CD19ED6243FEDFBA8400 /* ManageRoomMemberSheetView.swift */; }; F252C0EA49088801F4CA6006 /* landscape_test_image.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 96CE9D6642DD487D8CC90C9C /* landscape_test_image.jpg */; }; @@ -2778,6 +2779,7 @@ F2DC502B1A566E99969D34DD /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/InfoPlist.strings; sourceTree = ""; }; F2E4EF80DFB8FE7C4469B15D /* RoomDirectorySearchScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomDirectorySearchScreen.swift; sourceTree = ""; }; F31F59030205A6F65B057E1A /* MatrixEntityRegexTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MatrixEntityRegexTests.swift; sourceTree = ""; }; + F320003F490B11F808ECC5E9 /* JoinedMembersBadgeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JoinedMembersBadgeView.swift; sourceTree = ""; }; F348B5F2C12F9D4F4B4D3884 /* VideoRoomTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoRoomTimelineItem.swift; sourceTree = ""; }; F36C0A6D59717193F49EA986 /* UserSessionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSessionTests.swift; sourceTree = ""; }; F37FA1A5D55633E1942B153B /* CallScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallScreenCoordinator.swift; sourceTree = ""; }; @@ -3585,6 +3587,7 @@ FEC4B431B0117BDEE697DB4A /* ComposerDisabledView.swift */, E2776E63E02719B20758EB78 /* EditRoomAddressListRow.swift */, 8F4F0AB250EFA7B71FB2BDB2 /* HorizontalHighlightGradient.swift */, + F320003F490B11F808ECC5E9 /* JoinedMembersBadgeView.swift */, 9C6B6FFCE5B28AA03DD46F46 /* LinkPreviewView.swift */, B590BD4507D4F0A377FDE01A /* LoadableAvatarImage.swift */, C352359663A0E52BA20761EE /* LoadableImage.swift */, @@ -7855,6 +7858,7 @@ DEDBD3E9CFCC9F20CAC79881 /* JoinRoomScreenModels.swift in Sources */, EF47D802A404A53F15D5D4B6 /* JoinRoomScreenViewModel.swift in Sources */, 7B66DA4E7E5FE4D1A0FCEAA4 /* JoinRoomScreenViewModelProtocol.swift in Sources */, + F16EED85E30B83878FBC6629 /* JoinedMembersBadgeView.swift in Sources */, 261261778DEFAEFC042B875E /* JoinedRoomProxy.swift in Sources */, 7D249465ED00988EEEC14E05 /* JoinedRoomProxyMock.swift in Sources */, E3CA565A4B9704F191B191F0 /* JoinedRoomSize+MemberCount.swift in Sources */, diff --git a/ElementX/Resources/Localizations/en-US.lproj/Localizable.strings b/ElementX/Resources/Localizations/en-US.lproj/Localizable.strings index 58ddf4887..d8c244160 100644 --- a/ElementX/Resources/Localizations/en-US.lproj/Localizable.strings +++ b/ElementX/Resources/Localizations/en-US.lproj/Localizable.strings @@ -833,14 +833,14 @@ "screen_invites_decline_direct_chat_title" = "Decline chat"; "screen_invites_empty_list" = "No Invites"; "screen_invites_invited_you" = "%1$@ (%2$@) invited you"; -"screen_join_room_ban_by_message" = "You were banned from this room by %1$@."; -"screen_join_room_ban_message" = "You were banned from this room"; +"screen_join_room_ban_by_message" = "You were banned by %1$@."; +"screen_join_room_ban_message" = "You were banned"; "screen_join_room_ban_reason" = "Reason: %1$@."; -"screen_join_room_fail_message" = "Joining the room failed."; -"screen_join_room_fail_reason" = "This room is either invite-only or there might be restrictions to access at space level."; -"screen_join_room_forget_action" = "Forget this room"; -"screen_join_room_invite_required_message" = "You need an invite in order to join this room"; -"screen_join_room_join_action" = "Join room"; +"screen_join_room_fail_message" = "Joining failed"; +"screen_join_room_fail_reason" = "You either need to be invited to join or there might be restrictions to access."; +"screen_join_room_forget_action" = "Forget"; +"screen_join_room_invite_required_message" = "You need an invite in order to join"; +"screen_join_room_join_action" = "Join"; "screen_join_room_join_restricted_message" = "You may need to be invited or be a member of a space in order to join."; "screen_join_room_knock_action" = "Send request to join"; "screen_join_room_space_not_supported_description" = "%1$@ does not support spaces yet. You can access spaces on web."; diff --git a/ElementX/Resources/Localizations/en.lproj/Localizable.strings b/ElementX/Resources/Localizations/en.lproj/Localizable.strings index 4a3e1ba17..d8d48bddd 100644 --- a/ElementX/Resources/Localizations/en.lproj/Localizable.strings +++ b/ElementX/Resources/Localizations/en.lproj/Localizable.strings @@ -840,7 +840,7 @@ "screen_join_room_ban_message" = "You were banned"; "screen_join_room_ban_reason" = "Reason: %1$@."; "screen_join_room_fail_message" = "Joining failed"; -"screen_join_room_fail_reason" = "This room is either invite-only or there might be restrictions to access at space level."; +"screen_join_room_fail_reason" = "You either need to be invited to join or there might be restrictions to access."; "screen_join_room_forget_action" = "Forget"; "screen_join_room_invite_required_message" = "You need an invite in order to join"; "screen_join_room_join_action" = "Join"; diff --git a/ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift b/ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift index 3cd3e7909..f1d573a60 100644 --- a/ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift +++ b/ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift @@ -746,8 +746,7 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol { } private func presentJoinRoomScreen(via: [String], animated: Bool) { - let coordinator = JoinRoomScreenCoordinator(parameters: .init(roomID: roomID, - via: via, + let coordinator = JoinRoomScreenCoordinator(parameters: .init(source: .generic(roomID: roomID, via: via), userSession: userSession, userIndicatorController: flowParameters.userIndicatorController, appSettings: flowParameters.appSettings)) diff --git a/ElementX/Sources/FlowCoordinators/SpaceFlowCoordinator.swift b/ElementX/Sources/FlowCoordinators/SpaceFlowCoordinator.swift index e28cb9cc1..00007286a 100644 --- a/ElementX/Sources/FlowCoordinators/SpaceFlowCoordinator.swift +++ b/ElementX/Sources/FlowCoordinators/SpaceFlowCoordinator.swift @@ -236,8 +236,7 @@ class SpaceFlowCoordinator: FlowCoordinatorProtocol { private func presentJoinSpaceScreen() { guard case let .joinSpace(spaceRoomProxy) = entryPoint else { fatalError("Attempting to join a space with the wrong entry point.") } - let parameters = JoinRoomScreenCoordinatorParameters(roomID: spaceRoomProxy.id, - via: [], + let parameters = JoinRoomScreenCoordinatorParameters(source: .space(spaceRoomProxy), userSession: flowParameters.userSession, userIndicatorController: flowParameters.userIndicatorController, appSettings: flowParameters.appSettings) diff --git a/ElementX/Sources/Generated/Strings.swift b/ElementX/Sources/Generated/Strings.swift index 34d6d7b38..39ca587dc 100644 --- a/ElementX/Sources/Generated/Strings.swift +++ b/ElementX/Sources/Generated/Strings.swift @@ -1714,7 +1714,7 @@ internal enum L10n { internal static var screenJoinRoomDeclineAndBlockButtonTitle: String { return L10n.tr("Localizable", "screen_join_room_decline_and_block_button_title") } /// Joining failed internal static var screenJoinRoomFailMessage: String { return L10n.tr("Localizable", "screen_join_room_fail_message") } - /// This room is either invite-only or there might be restrictions to access at space level. + /// You either need to be invited to join or there might be restrictions to access. internal static var screenJoinRoomFailReason: String { return L10n.tr("Localizable", "screen_join_room_fail_reason") } /// Forget internal static var screenJoinRoomForgetAction: String { return L10n.tr("Localizable", "screen_join_room_forget_action") } diff --git a/ElementX/Sources/Mocks/SpaceRoomProxyMock.swift b/ElementX/Sources/Mocks/SpaceRoomProxyMock.swift index f21f4c055..88b32abdc 100644 --- a/ElementX/Sources/Mocks/SpaceRoomProxyMock.swift +++ b/ElementX/Sources/Mocks/SpaceRoomProxyMock.swift @@ -137,3 +137,43 @@ extension [SpaceRoomProxyProtocol] { ] } } + +extension SpaceRoomProxyMock { + convenience init(mode: JoinRoomScreenMode) { + var state: Membership? + var joinRule: JoinRule? + + switch mode { + case .joinable: + joinRule = .public + case .restricted: + joinRule = .restricted(rules: []) + case .inviteRequired: + joinRule = .private + case .invited: + state = .invited + joinRule = .private + case .knockable: + joinRule = .knock + case .knocked: + state = .knocked + joinRule = .knock + case .banned: + state = .banned + case .loading, .unknown, .forbidden: + break + } + + self.init(.init(id: "1", + name: "The Three-Body Problem", + avatarURL: .mockMXCAvatar, + isSpace: true, + childrenCount: 100, + joinedMembersCount: 123, + heroes: [.mockAlice, .mockBob, .mockCharlie], + topic: "“Science and technology were the only keys to opening the door to the future, and people approached science with the faith and sincerity of elementary school students.”", + canonicalAlias: "#3-body-problem:matrix.org", + joinRule: joinRule, + state: state)) + } +} diff --git a/ElementX/Sources/Other/Avatars.swift b/ElementX/Sources/Other/Avatars.swift index 7275bca02..e3ba241ce 100644 --- a/ElementX/Sources/Other/Avatars.swift +++ b/ElementX/Sources/Other/Avatars.swift @@ -166,7 +166,7 @@ enum RoomAvatarSizeOnScreen { case .details: return 96 case .joinRoom: - return 96 + return 64 case .spaceHeader: return 64 } diff --git a/ElementX/Sources/Other/SwiftUI/Views/JoinedMembersBadgeView.swift b/ElementX/Sources/Other/SwiftUI/Views/JoinedMembersBadgeView.swift new file mode 100644 index 000000000..9f32c352b --- /dev/null +++ b/ElementX/Sources/Other/SwiftUI/Views/JoinedMembersBadgeView.swift @@ -0,0 +1,85 @@ +// +// Copyright 2025 New Vector Ltd. +// +// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial +// Please see LICENSE files in the repository root for full details. +// + +import Compound +import SwiftUI + +struct JoinedMembersBadgeView: View { + let heroes: [UserProfileProxy] + let joinedCount: Int + + let mediaProvider: MediaProviderProtocol? + + var body: some View { + if heroes.isEmpty { + Label(title: title) { + CompoundIcon(\.userProfile, size: .small, relativeTo: .compound.bodyMD) + .foregroundStyle(.compound.textSecondary) + } + .font(.compound.bodyMD) + .foregroundStyle(.compound.textSecondary) + .labelStyle(.custom(spacing: 4)) + .padding(.trailing, 8) + .background(.compound.bgSubtleSecondary, in: Capsule()) + } else { + Label(title: title) { + heroesFacePile + } + .font(.compound.bodyMD) + .foregroundStyle(.compound.textSecondary) + .labelStyle(.custom(spacing: 6)) + } + } + + func title() -> Text { + Text("\(joinedCount)") + } + + var heroesFacePile: some View { + HStack(spacing: -8) { + ForEach(heroes.prefix(3).reversed()) { hero in + LoadableAvatarImage(url: hero.avatarURL, + name: hero.displayName, + contentID: hero.userID, + avatarSize: .user(on: .spaceHeader), + mediaProvider: mediaProvider) + .mask { + Circle() + .fill(Color.white) + .overlay { + if hero != heroes.first { + Circle() + .inset(by: -2) + .fill(Color.black) + .offset(x: 12) + } + } + .compositingGroup() + .luminanceToAlpha() + } + } + } + } +} + +// MARK: - Previews + +struct JoinedMembersBadgeView_Previews: PreviewProvider, TestablePreview { + static let mediaProvider = MediaProviderMock(configuration: .init()) + + static var previews: some View { + VStack(spacing: 16) { + JoinedMembersBadgeView(heroes: [], + joinedCount: 123, + mediaProvider: mediaProvider) + + JoinedMembersBadgeView(heroes: [.mockAlice, .mockBob, .mockCharlie, .mockDan], + joinedCount: 123, + mediaProvider: mediaProvider) + } + } +} diff --git a/ElementX/Sources/Other/TestablePreview/TestablePreviewsDictionary.swift b/ElementX/Sources/Other/TestablePreview/TestablePreviewsDictionary.swift index 7a0a9b62b..66cc03005 100644 --- a/ElementX/Sources/Other/TestablePreview/TestablePreviewsDictionary.swift +++ b/ElementX/Sources/Other/TestablePreview/TestablePreviewsDictionary.swift @@ -64,7 +64,9 @@ enum TestablePreviewsDictionary { "InviteUsersScreenSelectedItem_Previews" : InviteUsersScreenSelectedItem_Previews.self, "InviteUsersScreen_Previews" : InviteUsersScreen_Previews.self, "JoinRoomByAddressView_Previews" : JoinRoomByAddressView_Previews.self, + "JoinRoomScreenSpace_Previews" : JoinRoomScreenSpace_Previews.self, "JoinRoomScreen_Previews" : JoinRoomScreen_Previews.self, + "JoinedMembersBadgeView_Previews" : JoinedMembersBadgeView_Previews.self, "KnockRequestCell_Previews" : KnockRequestCell_Previews.self, "KnockRequestsBannerView_Previews" : KnockRequestsBannerView_Previews.self, "KnockRequestsListEmptyStateView_Previews" : KnockRequestsListEmptyStateView_Previews.self, diff --git a/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenCoordinator.swift b/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenCoordinator.swift index db404a85d..748f714e0 100644 --- a/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenCoordinator.swift +++ b/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenCoordinator.swift @@ -9,13 +9,26 @@ import Combine import SwiftUI struct JoinRoomScreenCoordinatorParameters { - let roomID: String - let via: [String] + let source: JoinRoomScreenSource let userSession: UserSessionProtocol let userIndicatorController: UserIndicatorControllerProtocol let appSettings: AppSettings } +enum JoinRoomScreenSource { + case generic(roomID: String, via: [String]) + case space(SpaceRoomProxyProtocol) + + func roomIDAndVia() -> (roomID: String, via: [String]) { + switch self { + case let .generic(roomID: roomID, via: via): + return (roomID: roomID, via: via) + case let .space(spaceRoomProxy): + return (roomID: spaceRoomProxy.id, via: spaceRoomProxy.via) + } + } +} + enum JoinRoomScreenJoinDetails { case roomID(String) case space(SpaceRoomListProxyProtocol) @@ -38,8 +51,7 @@ final class JoinRoomScreenCoordinator: CoordinatorProtocol { } init(parameters: JoinRoomScreenCoordinatorParameters) { - viewModel = JoinRoomScreenViewModel(roomID: parameters.roomID, - via: parameters.via, + viewModel = JoinRoomScreenViewModel(source: parameters.source, appSettings: parameters.appSettings, userSession: parameters.userSession, userIndicatorController: parameters.userIndicatorController) diff --git a/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenModels.swift b/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenModels.swift index c7510242d..e9ea7fa8a 100644 --- a/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenModels.swift +++ b/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenModels.swift @@ -5,7 +5,8 @@ // Please see LICENSE files in the repository root for full details. // -import Foundation +import Compound +import SwiftUI enum JoinRoomScreenViewModelAction { case joined(JoinRoomScreenJoinDetails) @@ -41,9 +42,13 @@ struct JoinRoomScreenRoomDetails { let canonicalAlias: String? let avatar: RoomAvatar? let memberCount: Int? + let heroes: [UserProfileProxy] let inviter: RoomInviterDetails? let isDirect: Bool? + let isSpace: Bool? + let childrenCount: Int? + let spaceVisibility: SpaceRoomProxyVisibility? } struct JoinRoomScreenViewState: BindableState { @@ -70,16 +75,40 @@ struct JoinRoomScreenViewState: BindableState { } var subtitle: String? { - switch mode { - case .invited(isDM: true): - if let inviter = roomDetails?.inviter { - return inviter.displayName != nil ? inviter.id : nil + if roomDetails?.isSpace == true, let spaceVisibilityTitle, let childrenCount = roomDetails?.childrenCount { + return L10n.screenSpaceListDetails(spaceVisibilityTitle, L10n.commonRooms(childrenCount)) + } else { + switch mode { + case .invited(isDM: true): + if let inviter = roomDetails?.inviter { + return inviter.displayName != nil ? inviter.id : nil + } + return nil + case .loading, .unknown, .knocked: + return nil + default: + return roomDetails?.canonicalAlias } - return nil - case .loading, .unknown, .knocked: - return nil - default: - return roomDetails?.canonicalAlias + } + } + + var subtitleIcon: KeyPath? { + guard roomDetails?.isSpace == true else { return nil } + + return switch roomDetails?.spaceVisibility { + case .public: \.public + case .private: \.lock + case .restricted(let parentName): \.space + case .none: \.lock + } + } + + var spaceVisibilityTitle: String? { + switch roomDetails?.spaceVisibility { + case .public: L10n.commonPublicSpace + case .private: L10n.commonPrivateSpace + case .restricted(let parentName): L10n.screenSpaceListParentSpace(parentName) + case .none: L10n.commonPrivateSpace } } @@ -88,7 +117,7 @@ struct JoinRoomScreenViewState: BindableState { // https://github.com/matrix-org/matrix-rust-sdk/issues/4825 if isDMInvite, let inviter = roomDetails?.inviter { .heroes([.init(userID: inviter.id, displayName: inviter.displayName, avatarURL: hideInviteAvatars ? nil : inviter.avatarURL)]) - } else if let roomDetails, let avatar = roomDetails.avatar { + } else if let avatar = roomDetails?.avatar { shouldHideAvatars ? avatar.removingAvatar : avatar } else if let name = roomDetails?.name { .room(id: roomID, name: name, avatarURL: nil) diff --git a/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift b/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift index 639435a56..a19291a3f 100644 --- a/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift +++ b/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift @@ -12,8 +12,7 @@ import SwiftUI typealias JoinRoomScreenViewModelType = StateStoreViewModel class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewModelProtocol { - private let roomID: String - private let via: [String] + private let source: JoinRoomScreenSource private let appSettings: AppSettings private let clientProxy: ClientProxyProtocol private let userIndicatorController: UserIndicatorControllerProtocol @@ -28,17 +27,16 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo actionsSubject.eraseToAnyPublisher() } - init(roomID: String, - via: [String], + init(source: JoinRoomScreenSource, appSettings: AppSettings, userSession: UserSessionProtocol, userIndicatorController: UserIndicatorControllerProtocol) { - self.roomID = roomID - self.via = via + self.source = source self.appSettings = appSettings clientProxy = userSession.clientProxy self.userIndicatorController = userIndicatorController + let (roomID, _) = source.roomIDAndVia() super.init(initialViewState: JoinRoomScreenViewState(roomID: roomID), mediaProvider: userSession.mediaProvider) clientProxy.hideInviteAvatarsPublisher @@ -100,21 +98,26 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo await updateRoom() - switch await clientProxy.roomPreviewForIdentifier(roomID, via: via) { - case .success(let roomPreview): + switch source { + case .generic(let roomID, let via): + switch await clientProxy.roomPreviewForIdentifier(roomID, via: via) { + case .success(let roomPreview): + isLoadingPreview = false + self.roomPreview = roomPreview + await updateRoomDetails() + case .failure(.roomPreviewIsPrivate): + // Handled by the mode, we don't need an error indicator. + isLoadingPreview = false + case .failure: + hideLoadingIndicator() + state.bindings.alertInfo = .init(id: .loadingError, + title: L10n.commonError, + message: L10n.screenJoinRoomLoadingAlertMessage, + primaryButton: .init(title: L10n.actionTryAgain) { [weak self] in Task { await self?.loadRoomDetails() }}, + secondaryButton: .init(title: L10n.actionCancel, role: .cancel) { [weak self] in self?.actionsSubject.send(.dismiss) }) + } + case .space(let spaceRoomProxyProtocol): isLoadingPreview = false - self.roomPreview = roomPreview - await updateRoomDetails() - case .failure(.roomPreviewIsPrivate): - // Handled by the mode, we don't need an error indicator. - isLoadingPreview = false - case .failure: - hideLoadingIndicator() - state.bindings.alertInfo = .init(id: .loadingError, - title: L10n.commonError, - message: L10n.screenJoinRoomLoadingAlertMessage, - primaryButton: .init(title: L10n.actionTryAgain) { [weak self] in Task { await self?.loadRoomDetails() }}, - secondaryButton: .init(title: L10n.actionCancel, role: .cancel) { [weak self] in self?.actionsSubject.send(.dismiss) }) } hideLoadingIndicator() @@ -127,7 +130,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo // of giving us information for non-joined rooms (at least not on synapse) // See if we known about the room locally and, if so, have that // take priority over the preview one. - if let room = await clientProxy.roomForIdentifier(roomID) { + if let room = await clientProxy.roomForIdentifier(state.roomID) { self.room = room await updateRoomDetails() } @@ -164,7 +167,17 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo default: break } - + + switch source { + case .generic(let roomID, _): + await updateGenericRoomDetails(roomID: roomID, roomInfo: roomInfo, inviter: inviter) + case .space(let spaceRoomProxy): + await updateSpaceRoomDetails(spaceRoomProxy: spaceRoomProxy, inviter: inviter) + } + await updateMode() + } + + private func updateGenericRoomDetails(roomID: String, roomInfo: BaseRoomInfoProxyProtocol?, inviter: RoomInviterDetails?) async { let info = roomPreview?.info ?? roomInfo let avatar: RoomAvatar? = if let avatar = info?.avatar { avatar @@ -178,11 +191,26 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo canonicalAlias: info?.canonicalAlias, avatar: avatar, memberCount: info?.joinedMembersCount, + heroes: [], inviter: inviter, isDirect: info?.isDirect, - isSpace: info?.isSpace) - - await updateMode() + isSpace: info?.isSpace, + childrenCount: nil, + spaceVisibility: nil) + } + + private func updateSpaceRoomDetails(spaceRoomProxy: SpaceRoomProxyProtocol, inviter: RoomInviterDetails?) async { + state.roomDetails = JoinRoomScreenRoomDetails(name: spaceRoomProxy.computedName, + topic: spaceRoomProxy.topic, + canonicalAlias: spaceRoomProxy.canonicalAlias, + avatar: spaceRoomProxy.avatar, + memberCount: spaceRoomProxy.joinedMembersCount, + heroes: spaceRoomProxy.heroes, + inviter: inviter, + isDirect: spaceRoomProxy.isDirect, + isSpace: spaceRoomProxy.isSpace, + childrenCount: spaceRoomProxy.childrenCount, + spaceVisibility: spaceRoomProxy.visibility) } private func updateMode() async { @@ -191,12 +219,32 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo return } - if roomPreview == nil, room == nil { + if case .generic = source, roomPreview == nil, room == nil { state.mode = .unknown return } - if let roomPreview { + if case .space(let spaceRoomProxy) = source { + switch spaceRoomProxy.state { + case .invited: + state.mode = .invited(isDM: spaceRoomProxy.isDirect == true && spaceRoomProxy.joinedMembersCount == 1) + case .knocked: + state.mode = .knocked + case .banned: + state.mode = .banned(sender: nil, reason: nil) + default: + switch spaceRoomProxy.joinRule { + case .private, .invite: + state.mode = .inviteRequired + case .knock, .knockRestricted: + state.mode = appSettings.knockingEnabled ? .knockable : .joinable + case .restricted(let rules): + state.mode = clientProxy.canJoinRoom(with: rules) ? .joinable : .restricted + default: + state.mode = .joinable + } + } + } else if let roomPreview { let membershipDetails = await roomPreview.ownMembershipDetails switch roomPreview.info.membership { @@ -259,6 +307,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo } } } else { + let (roomID, via) = source.roomIDAndVia() switch await clientProxy.joinRoom(roomID, via: via) { case .success: await finishJoinAction() @@ -279,6 +328,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo } private func finishJoinAction() async { + let roomID = state.roomID appSettings.seenInvites.remove(roomID) guard state.roomDetails?.isSpace == true else { @@ -313,6 +363,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo userIndicatorController.submitIndicator(.init(title: L10n.errorUnknown)) } } else { + let (roomID, via) = source.roomIDAndVia() switch await clientProxy.knockRoom(roomID, via: via, message: state.bindings.knockMessage.isBlank ? nil : state.bindings.knockMessage) { @@ -332,7 +383,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo return } - let roomName = roomDetails.name ?? roomID + let roomName = roomDetails.name ?? state.roomID state.bindings.alertInfo = .init(id: .declineInvite, title: L10n.screenInvitesDeclineChatTitle, message: L10n.screenInvitesDeclineChatMessage(roomName), @@ -373,11 +424,10 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo @discardableResult private func declineInvite() async -> Bool { - defer { - userIndicatorController.retractIndicatorWithId(roomID) - } + let roomID = state.roomID userIndicatorController.submitIndicator(UserIndicator(id: roomID, type: .modal, title: L10n.commonLoading, persistent: true)) + defer { userIndicatorController.retractIndicatorWithId(roomID) } guard case let .invited(roomProxy) = room else { userIndicatorController.submitIndicator(.init(title: L10n.errorUnknown)) @@ -398,11 +448,10 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo } private func cancelKnock() async { - defer { - userIndicatorController.retractIndicatorWithId(roomID) - } + let roomID = state.roomID userIndicatorController.submitIndicator(UserIndicator(id: roomID, type: .modal, title: L10n.commonLoading, persistent: true)) + defer { userIndicatorController.retractIndicatorWithId(roomID) } guard case let .knocked(roomProxy) = room else { userIndicatorController.submitIndicator(.init(title: L10n.errorUnknown)) @@ -419,11 +468,10 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo } private func forgetRoom() async { - defer { - userIndicatorController.retractIndicatorWithId(roomID) - } + let roomID = state.roomID userIndicatorController.submitIndicator(UserIndicator(id: roomID, type: .modal, title: L10n.commonLoading, persistent: true)) + defer { userIndicatorController.retractIndicatorWithId(roomID) } guard case let .banned(roomProxy) = room else { userIndicatorController.submitIndicator(.init(title: L10n.errorUnknown)) diff --git a/ElementX/Sources/Screens/JoinRoomScreen/View/JoinRoomScreen.swift b/ElementX/Sources/Screens/JoinRoomScreen/View/JoinRoomScreen.swift index 0e218f93d..32ce8be68 100644 --- a/ElementX/Sources/Screens/JoinRoomScreen/View/JoinRoomScreen.swift +++ b/ElementX/Sources/Screens/JoinRoomScreen/View/JoinRoomScreen.swift @@ -23,7 +23,7 @@ struct JoinRoomScreen: View { if context.viewState.roomDetails?.inviter != nil { return 32 } - return context.viewState.mode == .knocked ? 151 : 44 + return context.viewState.mode == .knocked ? 151 : 32 } var body: some View { @@ -57,60 +57,83 @@ struct JoinRoomScreen: View { @ViewBuilder private var defaultView: some View { VStack(spacing: 16) { - if let inviter = context.viewState.roomDetails?.inviter { - RoomInviterLabel(inviter: inviter, - shouldHideAvatar: context.viewState.hideInviteAvatars, - mediaProvider: context.mediaProvider) - .multilineTextAlignment(.center) - .font(.compound.bodyMD) - .foregroundStyle(.compound.textSecondary) - .padding(.bottom, 44) - } - - if let avatar = context.viewState.avatar { - RoomAvatarImage(avatar: avatar, - avatarSize: .room(on: .joinRoom), - mediaProvider: context.mediaProvider) - .dynamicTypeSize(dynamicTypeSize < .accessibility1 ? dynamicTypeSize : .accessibility1) - .accessibilityHidden(true) - } else { - RoomAvatarImage(avatar: .room(id: "", name: nil, avatarURL: nil), - avatarSize: .room(on: .joinRoom), - mediaProvider: context.mediaProvider) - .dynamicTypeSize(dynamicTypeSize < .accessibility1 ? dynamicTypeSize : .accessibility1) - .hidden() - .accessibilityHidden(true) - } + RoomAvatarImage(avatar: context.viewState.avatar ?? .room(id: "", name: nil, avatarURL: nil), + avatarSize: .room(on: .joinRoom), + mediaProvider: context.mediaProvider) + .dynamicTypeSize(dynamicTypeSize < .accessibility1 ? dynamicTypeSize : .accessibility1) + .opacity(context.viewState.avatar == nil ? 0 : 1) + .accessibilityHidden(true) VStack(spacing: 8) { Text(context.viewState.title) - .font(.compound.headingMDBold) + .font(.compound.headingLGBold) .foregroundStyle(.compound.textPrimary) .multilineTextAlignment(.center) if let subtitle = context.viewState.subtitle { - Text(subtitle) - .font(.compound.bodyLG) - .foregroundStyle(.compound.textSecondary) - .multilineTextAlignment(.center) + Label { + Text(subtitle) + .font(.compound.bodyLG) + .foregroundStyle(.compound.textSecondary) + .multilineTextAlignment(.center) + } icon: { + if let icon = context.viewState.subtitleIcon { + CompoundIcon(icon) + .foregroundStyle(.compound.iconTertiary) + } + } } if !context.viewState.isDMInvite, let memberCount = context.viewState.roomDetails?.memberCount { - BadgeLabel(title: "\(memberCount)", icon: \.userProfile, style: .default) + JoinedMembersBadgeView(heroes: context.viewState.roomDetails?.heroes ?? [], + joinedCount: memberCount, + mediaProvider: context.mediaProvider) } - - if let topic = context.viewState.roomDetails?.topic { - Text(topic) + } + + if let topic = context.viewState.roomDetails?.topic { + Text(topic) + .font(.compound.bodyMD) + .foregroundStyle(.compound.textPrimary) + .multilineTextAlignment(.center) + .lineLimit(2) + } + + if let inviter = context.viewState.roomDetails?.inviter { + VStack(spacing: 8) { + Text(L10n.screenJoinRoomInvitedBy) .font(.compound.bodyMD) - .foregroundStyle(.compound.textSecondary) + .foregroundStyle(.compound.textPrimary) .multilineTextAlignment(.center) - .lineLimit(3) - } - - if context.viewState.mode == .knockable { - knockMessage - .padding(.top, 19) + + LoadableAvatarImage(url: inviter.avatarURL, + name: inviter.displayName, + contentID: inviter.id, + avatarSize: .custom(52), + mediaProvider: context.mediaProvider) + .accessibilityHidden(true) + + VStack(spacing: 4) { + if let displayName = inviter.displayName { + Text(displayName) + .font(.compound.bodyLGSemibold) + .foregroundStyle(.compound.textPrimary) + .multilineTextAlignment(.center) + } + + Text(inviter.id) + .font(.compound.bodySM) + .foregroundStyle(.compound.textSecondary) + .multilineTextAlignment(.center) + } } + .accessibilityElement(children: .combine) + .padding(.top, 16) + } + + if context.viewState.mode == .knockable { + knockMessage + .padding(.top, 19) } } } @@ -304,67 +327,66 @@ struct JoinRoomScreen: View { // MARK: - Previews struct JoinRoomScreen_Previews: PreviewProvider, TestablePreview { - static let unknownViewModel = makeViewModel(mode: .unknown) - static let joinableViewModel = makeViewModel(mode: .joinable) - static let restrictedViewModel = makeViewModel(mode: .restricted, canJoinRoom: false) - static let restrictedJoinableViewModel = makeViewModel(mode: .restricted) - static let inviteRequiredViewModel = makeViewModel(mode: .inviteRequired) - static let invitedViewModel = makeViewModel(mode: .invited(isDM: false)) - static let invitedDMViewModel = makeViewModel(mode: .invited(isDM: true)) - static let invitedViewModelWithHiddenAvatars = makeViewModel(mode: .invited(isDM: false), hideInviteAvatars: true) - static let invitedDMViewModelWithHiddenAvatars = makeViewModel(mode: .invited(isDM: true), hideInviteAvatars: true) - static let knockableViewModel = makeViewModel(mode: .knockable) - static let knockedViewModel = makeViewModel(mode: .knocked) - static let bannedViewModel = makeViewModel(mode: .banned(sender: "Bob", reason: "Spamming")) - static let forbiddenViewModel = makeViewModel(mode: .forbidden) + static let previewWrappers: [JoinRoomScreenPreviewWrapper] = [ + .init(mode: .unknown), + .init(mode: .joinable), + .init(mode: .restricted, canJoinRoom: false), + .init(mode: .restricted, customPreviewName: "RestrictedJoinable"), + .init(mode: .inviteRequired), + .init(mode: .invited(isDM: false)), + .init(mode: .invited(isDM: true)), + .init(mode: .invited(isDM: false), hideInviteAvatars: true, customPreviewName: "InvitedWithHiddenAvatars"), + .init(mode: .knockable), + .init(mode: .knocked), + .init(mode: .banned(sender: "Bob", reason: "Spamming")), + .init(mode: .forbidden) + ] static var previews: some View { - makePreview(viewModel: unknownViewModel, mode: .unknown) - makePreview(viewModel: joinableViewModel, mode: .joinable) - makePreview(viewModel: restrictedViewModel, mode: .restricted) - makePreview(viewModel: restrictedJoinableViewModel, mode: .restricted, - customPreviewName: "RestrictedJoinable") - makePreview(viewModel: inviteRequiredViewModel, mode: .inviteRequired) - makePreview(viewModel: invitedViewModel, mode: .invited(isDM: false)) - makePreview(viewModel: invitedDMViewModel, mode: .invited(isDM: true)) - makePreview(viewModel: invitedViewModelWithHiddenAvatars, - mode: .invited(isDM: false), - customPreviewName: "InvitedWithHiddenAvatars") - makePreview(viewModel: knockableViewModel, mode: .knockable) - makePreview(viewModel: knockedViewModel, mode: .knocked) - makePreview(viewModel: bannedViewModel, mode: .banned(sender: nil, reason: nil)) - makePreview(viewModel: forbiddenViewModel, mode: .forbidden) - } - - @ViewBuilder - static func makePreview(viewModel: JoinRoomScreenViewModel, - mode: JoinRoomScreenMode, - customPreviewName: String? = nil) -> some View { - if mode == .forbidden { - NavigationStack { - JoinRoomScreen(context: viewModel.context) - } - .snapshotPreferences(expect: viewModel.context.$viewState.map { state in - state.mode == .forbidden - }) - .onAppear { - forbiddenViewModel.context.send(viewAction: .join) - } - .previewDisplayName(customPreviewName ?? mode.previewDisplayName) - } else { - NavigationStack { - JoinRoomScreen(context: viewModel.context) - } - .snapshotPreferences(expect: viewModel.context.$viewState.map { state in - state.roomDetails != nil - }) - .previewDisplayName(customPreviewName ?? mode.previewDisplayName) + ForEach(previewWrappers) { wrapper in + wrapper.preview } } +} + +struct JoinRoomScreenSpace_Previews: PreviewProvider, TestablePreview { + static let previewWrappers: [JoinRoomScreenPreviewWrapper] = [ + .init(isSpace: true, mode: .joinable), + .init(isSpace: true, mode: .restricted, canJoinRoom: false), + .init(isSpace: true, mode: .restricted, customPreviewName: "RestrictedJoinable"), + .init(isSpace: true, mode: .inviteRequired), + .init(isSpace: true, mode: .invited(isDM: false)), + .init(isSpace: true, mode: .invited(isDM: false), hideInviteAvatars: true, customPreviewName: "InvitedWithHiddenAvatars"), + .init(isSpace: true, mode: .knockable), + .init(isSpace: true, mode: .knocked), + .init(isSpace: true, mode: .banned(sender: "Bob", reason: "Spamming")), + .init(isSpace: true, mode: .forbidden) + ] - static func makeViewModel(mode: JoinRoomScreenMode, - canJoinRoom: Bool = true, - hideInviteAvatars: Bool = false) -> JoinRoomScreenViewModel { + static var previews: some View { + ForEach(previewWrappers) { wrapper in + wrapper.preview + } + } +} + +@MainActor +struct JoinRoomScreenPreviewWrapper: Identifiable { + let id = UUID() + let viewModel: JoinRoomScreenViewModel + let mode: JoinRoomScreenMode + let isSpace: Bool + let customPreviewName: String? + + init(isSpace: Bool = false, + mode: JoinRoomScreenMode, + canJoinRoom: Bool = true, + hideInviteAvatars: Bool = false, + customPreviewName: String? = nil) { + self.mode = mode + self.isSpace = isSpace + self.customPreviewName = customPreviewName + let appSettings = AppSettings() appSettings.knockingEnabled = true @@ -419,17 +441,20 @@ struct JoinRoomScreen_Previews: PreviewProvider, TestablePreview { break } - return JoinRoomScreenViewModel(roomID: "1", - via: [], - appSettings: appSettings, - userSession: UserSessionMock(.init(clientProxy: clientProxy)), - userIndicatorController: ServiceLocator.shared.userIndicatorController) + let source: JoinRoomScreenSource = if isSpace { + .space(SpaceRoomProxyMock(mode: mode)) + } else { + .generic(roomID: "1", via: []) + } + + viewModel = JoinRoomScreenViewModel(source: source, + appSettings: appSettings, + userSession: UserSessionMock(.init(clientProxy: clientProxy)), + userIndicatorController: ServiceLocator.shared.userIndicatorController) } -} - -private extension JoinRoomScreenMode { + var previewDisplayName: String { - switch self { + switch mode { case .unknown: return "Unknown" case .loading: @@ -452,4 +477,30 @@ private extension JoinRoomScreenMode { return "Forbidden" } } + + @ViewBuilder + var preview: some View { + let previewDisplayName = customPreviewName ?? previewDisplayName + let previewDisplayNameSuffix = isSpace ? " Space" : "" + if mode == .forbidden { + NavigationStack { + JoinRoomScreen(context: viewModel.context) + } + .snapshotPreferences(expect: viewModel.context.$viewState.map { state in + state.mode == .forbidden + }) + .onAppear { + viewModel.context.send(viewAction: .join) + } + .previewDisplayName(previewDisplayName + previewDisplayNameSuffix) + } else { + NavigationStack { + JoinRoomScreen(context: viewModel.context) + } + .snapshotPreferences(expect: viewModel.context.$viewState.map { state in + state.roomDetails != nil + }) + .previewDisplayName(previewDisplayName + previewDisplayNameSuffix) + } + } } diff --git a/ElementX/Sources/Screens/Spaces/Common/SpaceHeaderView.swift b/ElementX/Sources/Screens/Spaces/Common/SpaceHeaderView.swift index 4d8aae4f9..73af0a9f4 100644 --- a/ElementX/Sources/Screens/Spaces/Common/SpaceHeaderView.swift +++ b/ElementX/Sources/Screens/Spaces/Common/SpaceHeaderView.swift @@ -29,7 +29,7 @@ struct SpaceHeaderView: View { spaceDetails - SpaceHeaderMembersView(heroes: spaceRoomProxy.heroes, + JoinedMembersBadgeView(heroes: spaceRoomProxy.heroes, joinedCount: spaceRoomProxy.joinedMembersCount, mediaProvider: mediaProvider) } @@ -92,64 +92,6 @@ struct SpaceHeaderView: View { } } -struct SpaceHeaderMembersView: View { - let heroes: [UserProfileProxy] - let joinedCount: Int - - let mediaProvider: MediaProviderProtocol? - - var body: some View { - if heroes.isEmpty { - Label(title: title) { - CompoundIcon(\.userProfile, size: .small, relativeTo: .compound.bodyMD) - .foregroundStyle(.compound.textSecondary) - } - .font(.compound.bodyMD) - .foregroundStyle(.compound.textSecondary) - .labelStyle(.custom(spacing: 4)) - .padding(.trailing, 8) - .background(.compound.bgSubtleSecondary, in: Capsule()) - } else { - Label(title: title) { - heroesFacePile - } - .font(.compound.bodyMD) - .foregroundStyle(.compound.textSecondary) - .labelStyle(.custom(spacing: 6)) - } - } - - func title() -> Text { - Text("\(joinedCount)") - } - - var heroesFacePile: some View { - HStack(spacing: -8) { - ForEach(heroes.prefix(3).reversed()) { hero in - LoadableAvatarImage(url: hero.avatarURL, - name: hero.displayName, - contentID: hero.userID, - avatarSize: .user(on: .spaceHeader), - mediaProvider: mediaProvider) - .mask { - Circle() - .fill(Color.white) - .overlay { - if hero != heroes.first { - Circle() - .inset(by: -2) - .fill(Color.black) - .offset(x: 12) - } - } - .compositingGroup() - .luminanceToAlpha() - } - } - } - } -} - // MARK: - Previews struct SpaceHeaderView_Previews: PreviewProvider, TestablePreview { diff --git a/PreviewTests/Sources/GeneratedPreviewTests.swift b/PreviewTests/Sources/GeneratedPreviewTests.swift index 4ba407d54..6bec2a291 100644 --- a/PreviewTests/Sources/GeneratedPreviewTests.swift +++ b/PreviewTests/Sources/GeneratedPreviewTests.swift @@ -341,12 +341,24 @@ extension PreviewTests { } } + func testJoinRoomScreenSpace() async throws { + for (index, preview) in JoinRoomScreenSpace_Previews._allPreviews.enumerated() { + try await assertSnapshots(matching: preview, step: index) + } + } + func testJoinRoomScreen() async throws { for (index, preview) in JoinRoomScreen_Previews._allPreviews.enumerated() { try await assertSnapshots(matching: preview, step: index) } } + func testJoinedMembersBadgeView() async throws { + for (index, preview) in JoinedMembersBadgeView_Previews._allPreviews.enumerated() { + try await assertSnapshots(matching: preview, step: index) + } + } + func testKnockRequestCell() async throws { for (index, preview) in KnockRequestCell_Previews._allPreviews.enumerated() { try await assertSnapshots(matching: preview, step: index) diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Banned-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Banned-iPad-en-GB.png index aa1a3e5d2..1e9f74144 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Banned-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Banned-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0e53f423eeac9420d0ccae31c47be8409f836006a4846ba554def6765d8c3bed -size 203112 +oid sha256:cb868b68567b94ea9a29150e426c065e184a06fbd0a75c2e096d0a5f206ef4f7 +size 167001 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Banned-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Banned-iPad-pseudo.png index dd4910c78..6231abfa5 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Banned-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Banned-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:787ff9a0f80627dad05d44fe8ced266d963e6edf834d5e8597d60463f4b6478f -size 213824 +oid sha256:403e78acd2a4dfa1c7ca95770b574f5e562b8013b4136ebc7042923f16f0233b +size 173270 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Banned-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Banned-iPhone-16-en-GB.png index 17cdf12af..d66bfaa2b 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Banned-iPhone-16-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Banned-iPhone-16-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2fc5bc833d57743610efe9ecfcb6bd1b20b70a8399fc2ce20c2c50bb014a4233 -size 159388 +oid sha256:a7284fc08741e4f63c0dc3be9c08963af8c0e09cb96ba95d3c9da100c82682fc +size 111971 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Banned-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Banned-iPhone-16-pseudo.png index b7a12cc94..8e92222db 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Banned-iPhone-16-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Banned-iPhone-16-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:195adfac9267dd6a9b3586a35f9eaafc64551d1c536a7441ee5a371383611e83 -size 173775 +oid sha256:8099968e672a7929c99e3d64404a3646b1149e6ee2d59b41beae1a909424d18e +size 122227 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Forbidden-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Forbidden-iPad-en-GB.png index a543fc17e..1700c0bf7 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Forbidden-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Forbidden-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:87721cd38b5abfcc92be28bf91454450e7b7a5f44270763f9ac201114b5d3bb4 -size 203083 +oid sha256:d5cd4c3fd0b77fa5a67c859ab744e7d5b2644c7e028c513a70b1f7eab119a6fc +size 166372 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Forbidden-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Forbidden-iPad-pseudo.png index d46e858d7..e73c455bb 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Forbidden-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Forbidden-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd1dd390c0e0969cf7317d563c18c61e84ca7105b6cb23f603666ff1e73704af -size 215968 +oid sha256:aac8b1a09d7b6610268a1cc04617f72f7fdf9a69d240c8218340e00ff8698795 +size 180907 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Forbidden-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Forbidden-iPhone-16-en-GB.png index 9a07f2395..4371a07a4 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Forbidden-iPhone-16-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Forbidden-iPhone-16-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b23893ad6f43306ae45ad916f7436c0cf8d17f234fbb8b9e509ecfff2a87bc5 -size 159277 +oid sha256:7a0a1cc3b994c2651a3a99f528bfb9e9e6869fbb7b427dbf2d25d7a31b527137 +size 114083 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Forbidden-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Forbidden-iPhone-16-pseudo.png index 2b2387b1d..3e6754e15 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Forbidden-iPhone-16-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Forbidden-iPhone-16-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a8c878e2e440519587158c4b2c9978dd5da16c7313b9e155c8ae0633a14f382 -size 177735 +oid sha256:e75e76b16c723cead9e6c08e27dab99f6f08342bebced449014fe5ac68a766e4 +size 130101 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InviteRequired-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InviteRequired-iPad-en-GB.png index 1882a5331..2deba27cb 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InviteRequired-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InviteRequired-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa16085ef1d3f989f01eb43b5686ff19c3838b751dc4168a745cc66d71e94f86 -size 186974 +oid sha256:d01d5d76623447c2cc8f9050fdfa2f0fae5bc6c6d43d33e9683443453b59eb59 +size 153879 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InviteRequired-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InviteRequired-iPad-pseudo.png index 713e15299..edfa90a40 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InviteRequired-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InviteRequired-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:680fa23493566b93d88c8add51c0767a2eee968e9b85fbffa4aa06fa6d65f8f4 -size 193043 +oid sha256:0278bdca96c7e1543a2b7063d31ddb3a1bef03b17cd2268de3dd5255b9beabb1 +size 157594 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InviteRequired-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InviteRequired-iPhone-16-en-GB.png index d7b0ea2bc..7335ae541 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InviteRequired-iPhone-16-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InviteRequired-iPhone-16-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b200afb4a895ecdf68a0ff042fd249b397a1efae01dbe4eb4223a85813aadb1 -size 145356 +oid sha256:9c4f00d7dd64b157f86c2d30a00d6f7b226d7da414f9109393d8be14daaef029 +size 100437 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InviteRequired-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InviteRequired-iPhone-16-pseudo.png index 4c3148dfb..e606d73ee 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InviteRequired-iPhone-16-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InviteRequired-iPhone-16-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e1e3873317f9d7407ebb9cfeac9bbd994ddc2b5856a32c3d26b48b940c6db64c -size 153931 +oid sha256:8f7ff70abd04d9d3adede3aa6060da40fe7a8ad0d81b06f9e2edb566a7e2512e +size 107371 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Invited-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Invited-iPad-en-GB.png index a6fde0b15..14086cd3a 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Invited-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Invited-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a605f4f01ec7521f869b7ead8027fb88899a55b2f2f9ac3ab5a30464cdc60b73 -size 200598 +oid sha256:e92b55a7986ece584743d550309a96b647fc73cd34566191631c9aa272a13932 +size 170830 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Invited-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Invited-iPad-pseudo.png index 87d0ee446..b15a5ae89 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Invited-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Invited-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67527c71fad184e8d00749445efdc9c359f152c381d58c2f342ab9f1fa1cc83e -size 208079 +oid sha256:4187d18b46fdf2a1b90d0a1f67f498361b47f607ddcd16ee25409abe5e4d49de +size 177895 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Invited-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Invited-iPhone-16-en-GB.png index 388b86670..b04c9e574 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Invited-iPhone-16-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Invited-iPhone-16-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a2e7fc3ab96b1ff45228494b580d7f78e4c43c145bff5a720b43ab20e00dcd1d -size 157323 +oid sha256:95f76ff290664b4e546cb6125444bae814c705d00c877f2c08390a33aa104395 +size 117058 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Invited-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Invited-iPhone-16-pseudo.png index 844d62135..e57b8d808 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Invited-iPhone-16-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Invited-iPhone-16-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58e7bb75cb6225c255229a0667c48396456ddb4f0a757867edd1fe3d37f1de24 -size 166518 +oid sha256:da684451d5db25969a379e7c7f920d4f4563ccb77dccdc45a0598ad91bf1ac97 +size 123110 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPad-en-GB.png index 331d10845..55ae9ab48 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57335ecfb234a8b7f07533d2590a5893d8a345566de957c3c8078311ac2220fb -size 104839 +oid sha256:a8e8f15242f135c644e7905c246823c3b656f99a7b93169198783a6fddae27d3 +size 104800 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPad-pseudo.png index ef703bc66..752f48b59 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0071866c826fb34a01f6e39dd912efff185ec3c5ceed12c6cde1cacd0ae76f71 -size 112509 +oid sha256:41289451e2d6a6c61836fa3b57a80da888fb57c39e48a659615437700655e6d7 +size 111305 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPhone-16-en-GB.png index dff7cf6cd..f43dbab9a 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPhone-16-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPhone-16-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:586646492b6aff24360ecddd73c2e1fba29ca2550eb6563fd6d6740a556882d3 -size 62111 +oid sha256:e2379fc2ec3034d6b9713207b54f929073aa0786b5d0d46e92d4be9b76b6c89c +size 62221 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPhone-16-pseudo.png index cd163dd41..1a83305e6 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPhone-16-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPhone-16-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5831aad8fc5cc59cc503ad3aaff7afd2f3acd298679ef0b8302c1c7869a341e7 -size 71178 +oid sha256:207f1724725c1df5b53bf0580f9488f24afe144b613f4ae40392f4781c116c76 +size 67829 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedWithHiddenAvatars-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedWithHiddenAvatars-iPad-en-GB.png index d6e1e2ef4..f44aa5829 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedWithHiddenAvatars-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedWithHiddenAvatars-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ded19d256f8aaffe6d88faebd47f35f2a97d92435d984236eb2de4a246897c4 -size 135670 +oid sha256:993651429082ff90a9011c004206f59c56f794c3715b1c9f602454a147bc4fe0 +size 140094 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedWithHiddenAvatars-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedWithHiddenAvatars-iPad-pseudo.png index ac80e2a1c..cc98d5bf3 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedWithHiddenAvatars-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedWithHiddenAvatars-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:edf3b6507ac10d6c2ebcc205b77197033301f90fef09be1ad360be0a0de84e5a -size 143174 +oid sha256:9e0a313c7169d087e175587f72bce2ee96e8dfb8a37408ec385121f05ad82f60 +size 146964 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedWithHiddenAvatars-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedWithHiddenAvatars-iPhone-16-en-GB.png index b20b1c58e..3057bf571 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedWithHiddenAvatars-iPhone-16-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedWithHiddenAvatars-iPhone-16-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0310cb41f417c1a17eaefa2266dd6a964a8c3134505d519e314876150326e542 -size 87857 +oid sha256:67b992da597cafa039ab35ca60ae19d6d7877b02ac123e43404f3cd11bd023e3 +size 86830 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedWithHiddenAvatars-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedWithHiddenAvatars-iPhone-16-pseudo.png index e34d8c4ad..ab5b709c4 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedWithHiddenAvatars-iPhone-16-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedWithHiddenAvatars-iPhone-16-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:866f219044c83c4ced8ccc06627e64d4e28fe0f2ad71fb96dcaf1e67ffb343df -size 97226 +oid sha256:904a028d398ec816d1c29fa843e0a680addff92b91cc6c112376bdecc5ea3539 +size 92823 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Joinable-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Joinable-iPad-en-GB.png index 73944f674..5536e1e75 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Joinable-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Joinable-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82de11b9a746fe10ab8d1a51ccf3de6b675f4e119c7a539bba074428d603a36e -size 186741 +oid sha256:7505d8f1954ece3dfc9e6eea3edb92568b4e3b364223ae067a58a6555cc1e256 +size 154208 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Joinable-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Joinable-iPad-pseudo.png index 1037bddea..108a10d62 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Joinable-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Joinable-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:991e3e82e6c5c909c9c666bfe6a4294169c65339bc992926c05fff8a3422873d -size 188300 +oid sha256:7bb153d97cb75fbed5ab9488e2221bdcbdf558fbf0636b605104a8428d9dd5df +size 155769 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Joinable-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Joinable-iPhone-16-en-GB.png index 604c493bd..6e010ea94 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Joinable-iPhone-16-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Joinable-iPhone-16-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:353d108b89b701f63b4074de32493bec54c1c71703812af43d136f749738c356 -size 142905 +oid sha256:730d3e68bd40c246d173a12cd06b9a608f4c639100a5344e2dfebee8e17ae3b4 +size 99992 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Joinable-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Joinable-iPhone-16-pseudo.png index 054dcbdbf..ca8129e74 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Joinable-iPhone-16-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Joinable-iPhone-16-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9f794c684ee5aab9b95cff4f622cfad1e96477b5b762418b64e1991422ddba3 -size 144394 +oid sha256:813348a421e761ca04c98e8b5fb2c59dd2073674ac308beacf5cc590b369a61e +size 101449 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Knockable-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Knockable-iPad-en-GB.png index 9d249a5fc..5e0ded48d 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Knockable-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Knockable-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:393dd938a05503d644e614d05762e42cb51873cdc1d0d3db6f93f27f3e7c3982 -size 200925 +oid sha256:20fdbe3909e86d2391c60b7df3a157481eb81fda6130f74df375239143643e4f +size 168970 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Knockable-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Knockable-iPad-pseudo.png index e5ca32a5b..e9874b2b9 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Knockable-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Knockable-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88c7214c7d459ed8df3105373b015fa6ef5d1115f6f638ae8caf27922ce52480 -size 205958 +oid sha256:19ba5c89b813d948d988c9e89d073730b85bd3d1f43f60e24b05d4d022cb6ae9 +size 174617 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Knockable-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Knockable-iPhone-16-en-GB.png index 4393fa62a..009a32a5c 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Knockable-iPhone-16-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Knockable-iPhone-16-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7dda451fa80ee195a52de5cccc75478d972715891bd4acb6958f66ed09e8f50 -size 154534 +oid sha256:cb61570e8f041258e8137a61f11604b7ee9eeeddc5d4a24fa36a83150a3ff23f +size 112388 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Knockable-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Knockable-iPhone-16-pseudo.png index d0b1000d4..373a36302 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Knockable-iPhone-16-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Knockable-iPhone-16-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f52e16413f2484ce0abe7b687e09da36763072a19373061b90bcea115160245 -size 163348 +oid sha256:f98d8a01b8ae1bf1eaad8de3f18f96dc2a85e242ea1778af9affdb82c5e32bf5 +size 121701 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Restricted-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Restricted-iPad-en-GB.png index f882ac381..659efdfc8 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Restricted-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Restricted-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff679b59e5780125cb7fe193105fba1f5b38d54fb3998bce6e3e2e461b17e4ee -size 201793 +oid sha256:daee782ef06d06811b17f430164d7402be4cc47a288b2e9ebfb6e4ea394baf1a +size 169275 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Restricted-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Restricted-iPad-pseudo.png index 7f8bd8422..fc3bceebd 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Restricted-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Restricted-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db8b47b4bf5cf551a6bacec18b4dc3021b6bc0133ad97fae2f6ed30b79ef0217 -size 214884 +oid sha256:b1e42b6ef72e98b2f82499e98f7f2321dc6639a3cc33593903c396e60142ccb9 +size 182318 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Restricted-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Restricted-iPhone-16-en-GB.png index 561c8e464..30b4aa550 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Restricted-iPhone-16-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Restricted-iPhone-16-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ebb564d969e97583d3e22b5a227c8d8d223437f9602b84f1f3fb11818472b80 -size 159665 +oid sha256:48539de480de0e1a6e401d85dc6b15176be4a85ec4784a64a3d28f2031fcdee6 +size 116799 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Restricted-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Restricted-iPhone-16-pseudo.png index 46b684402..ec42bac72 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Restricted-iPhone-16-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Restricted-iPhone-16-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e4a3cddf33c186dd4196700f6a156da1544844e1fa552846dd75016735a4dcf -size 174632 +oid sha256:798a656c19a36359000e52cc5cc64e8a941fdafc1b4a3a5a26bd7091c520e077 +size 131798 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.RestrictedJoinable-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.RestrictedJoinable-iPad-en-GB.png index 73944f674..5536e1e75 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.RestrictedJoinable-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.RestrictedJoinable-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82de11b9a746fe10ab8d1a51ccf3de6b675f4e119c7a539bba074428d603a36e -size 186741 +oid sha256:7505d8f1954ece3dfc9e6eea3edb92568b4e3b364223ae067a58a6555cc1e256 +size 154208 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.RestrictedJoinable-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.RestrictedJoinable-iPad-pseudo.png index 1037bddea..108a10d62 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.RestrictedJoinable-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.RestrictedJoinable-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:991e3e82e6c5c909c9c666bfe6a4294169c65339bc992926c05fff8a3422873d -size 188300 +oid sha256:7bb153d97cb75fbed5ab9488e2221bdcbdf558fbf0636b605104a8428d9dd5df +size 155769 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.RestrictedJoinable-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.RestrictedJoinable-iPhone-16-en-GB.png index 604c493bd..6e010ea94 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.RestrictedJoinable-iPhone-16-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.RestrictedJoinable-iPhone-16-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:353d108b89b701f63b4074de32493bec54c1c71703812af43d136f749738c356 -size 142905 +oid sha256:730d3e68bd40c246d173a12cd06b9a608f4c639100a5344e2dfebee8e17ae3b4 +size 99992 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.RestrictedJoinable-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.RestrictedJoinable-iPhone-16-pseudo.png index 054dcbdbf..ca8129e74 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.RestrictedJoinable-iPhone-16-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.RestrictedJoinable-iPhone-16-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9f794c684ee5aab9b95cff4f622cfad1e96477b5b762418b64e1991422ddba3 -size 144394 +oid sha256:813348a421e761ca04c98e8b5fb2c59dd2073674ac308beacf5cc590b369a61e +size 101449 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Unknown-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Unknown-iPad-en-GB.png index 752fcecc8..07d1e1657 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Unknown-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Unknown-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:055835049c253c4e05a3739e51a7adb16f7653f5720c7cf7ff598ea06afead45 -size 100090 +oid sha256:29f48bf0bf788e260dd6db62aab45eb37cab826e0a3964a097f1b0456620eb77 +size 101089 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Unknown-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Unknown-iPad-pseudo.png index 7af2469b1..8c3d11a73 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Unknown-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Unknown-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7864850416ce40eb1b0f4e0bdbc0e540e3c0ec03719719931be4736d75864777 -size 115375 +oid sha256:d4712023172bfbebd477ca08e0f0227b7924851603df22db6322063002f25b95 +size 115370 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Unknown-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Unknown-iPhone-16-en-GB.png index ebf98a279..73bc3b40b 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Unknown-iPhone-16-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Unknown-iPhone-16-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:40d914b5dc4e677c049a914c25f174692bc37e75264e976960d87d9ac92e8753 -size 59087 +oid sha256:a38bf22de7d4e4ec95d56c0566957fc5b631d9e295cf4b46392846991fb1b226 +size 60127 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Unknown-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Unknown-iPhone-16-pseudo.png index b200c8e1e..4c8611001 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Unknown-iPhone-16-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.Unknown-iPhone-16-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56431a9fd21f367332b4c314b41d20727a06a32aa4340ca1fa1585629614522e -size 78009 +oid sha256:8c68184347c99f3040fda4443da38a04d90e30deef03be13c3e0f288b1d74179 +size 82540 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Banned-Space-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Banned-Space-iPad-en-GB.png new file mode 100644 index 000000000..6a37102dd --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Banned-Space-iPad-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:781e4c61b2bf35b1bc86902ce9401f2c0d7c094b29054ccd6f9c89baa828d376 +size 159198 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Banned-Space-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Banned-Space-iPad-pseudo.png new file mode 100644 index 000000000..f15f9ce1c --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Banned-Space-iPad-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5b8f3388f0a9255a2f500eb0bed0675a4f6216c52e80431d3ffc8387af44a93 +size 168187 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Banned-Space-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Banned-Space-iPhone-16-en-GB.png new file mode 100644 index 000000000..d3f760ede --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Banned-Space-iPhone-16-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:402fac3e7bcfff87bdbc89eb7c6d35b869e5ab149629e4699d6e0b87b390b7bb +size 103769 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Banned-Space-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Banned-Space-iPhone-16-pseudo.png new file mode 100644 index 000000000..7767674f5 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Banned-Space-iPhone-16-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec484092e0e97334665d626b863b6a47a2c176d1b5e7f3a855c3125519edaaca +size 113735 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Forbidden-Space-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Forbidden-Space-iPad-en-GB.png new file mode 100644 index 000000000..bf52ebccf --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Forbidden-Space-iPad-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d8c772a1d8eaf7a8bac1d88a14d12430100d0f52023679e695955cdf9ebad33 +size 168628 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Forbidden-Space-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Forbidden-Space-iPad-pseudo.png new file mode 100644 index 000000000..a6960695f --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Forbidden-Space-iPad-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d01e685bc5761f29addfd833fe4d24fa1b1654f8c2b91a13c4ca7dffc235782 +size 189531 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Forbidden-Space-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Forbidden-Space-iPhone-16-en-GB.png new file mode 100644 index 000000000..ff62dbcd0 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Forbidden-Space-iPhone-16-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:313b046a9c8cd7dd4475597c52a257dfb0951fc205bb6f0465ce9c462ba4208a +size 114677 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Forbidden-Space-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Forbidden-Space-iPhone-16-pseudo.png new file mode 100644 index 000000000..88d428a7e --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Forbidden-Space-iPhone-16-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cac35642ae6f970bf4b28f8d902bb38bc21b5be099c8dd8b260e98318ef8912 +size 138280 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InviteRequired-Space-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InviteRequired-Space-iPad-en-GB.png new file mode 100644 index 000000000..f422b52cd --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InviteRequired-Space-iPad-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40e4750c2b5e0f582f2be5435c0ce73b643e7f2a5a6ccafb0eb450d81ad10bdc +size 156135 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InviteRequired-Space-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InviteRequired-Space-iPad-pseudo.png new file mode 100644 index 000000000..9b6551699 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InviteRequired-Space-iPad-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6244889d82654517c52825f781b5c7525fd94c6cd3fdb7f4d5a8afc0320d46e +size 166218 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InviteRequired-Space-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InviteRequired-Space-iPhone-16-en-GB.png new file mode 100644 index 000000000..fa4b0d952 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InviteRequired-Space-iPhone-16-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d4d6ae41a24e73c0f38dc0587a2d920225fcb58fbcbfb1482d6f2979fb08e6c +size 101031 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InviteRequired-Space-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InviteRequired-Space-iPhone-16-pseudo.png new file mode 100644 index 000000000..876d442f4 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InviteRequired-Space-iPhone-16-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2006aa0ac864d2610b38c71e081530b995873500d1a3d98f1ebcdce914a84526 +size 115550 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Invited-Space-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Invited-Space-iPad-en-GB.png new file mode 100644 index 000000000..df673e661 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Invited-Space-iPad-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e4f55d300def18cb8bfe031be8bad6dddb45983fead425600fec938ac3506cc +size 173122 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Invited-Space-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Invited-Space-iPad-pseudo.png new file mode 100644 index 000000000..8816b9d10 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Invited-Space-iPad-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4466aa5d18da393b14a1e78b174ee810e337741fbd46bfcb48129dc3bf341421 +size 186507 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Invited-Space-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Invited-Space-iPhone-16-en-GB.png new file mode 100644 index 000000000..bd594b9ae --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Invited-Space-iPhone-16-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cb916fb72f46870cda686096d190d096ee8fa9c8f87726d53a974214265730e +size 117750 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Invited-Space-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Invited-Space-iPhone-16-pseudo.png new file mode 100644 index 000000000..b2debd4bb --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Invited-Space-iPhone-16-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:740a2c55b515fa98f8928d4449e6a79e82455a9edbb634b9ff2770d0029d4f15 +size 130925 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InvitedWithHiddenAvatars-Space-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InvitedWithHiddenAvatars-Space-iPad-en-GB.png new file mode 100644 index 000000000..89776c64f --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InvitedWithHiddenAvatars-Space-iPad-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8a241ee0871baabbe42ad32258c3e0c33cef6dfd4f784189cef789af35ae0b5 +size 139503 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InvitedWithHiddenAvatars-Space-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InvitedWithHiddenAvatars-Space-iPad-pseudo.png new file mode 100644 index 000000000..9fdee84cd --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InvitedWithHiddenAvatars-Space-iPad-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b316be924b98aafb5a74e3d159f64791fe1523ed8b178454360ad92bf205d6f2 +size 152341 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InvitedWithHiddenAvatars-Space-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InvitedWithHiddenAvatars-Space-iPhone-16-en-GB.png new file mode 100644 index 000000000..31a411d5a --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InvitedWithHiddenAvatars-Space-iPhone-16-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b54c10c5f2c768aa766d2925f262a55ffab01ddf122f6ea7720d8f6a64789d2 +size 86214 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InvitedWithHiddenAvatars-Space-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InvitedWithHiddenAvatars-Space-iPhone-16-pseudo.png new file mode 100644 index 000000000..096c602d7 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.InvitedWithHiddenAvatars-Space-iPhone-16-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b323cb7fdafb2a33d5cd5049e6729e03fdd1f4dd39abe85965dbc7d0fbb78fcd +size 99217 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Joinable-Space-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Joinable-Space-iPad-en-GB.png new file mode 100644 index 000000000..6284b2c0a --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Joinable-Space-iPad-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:163d05a1a2804d19d8551ad86ecfcb0b40563e79952662effc79566c150fcc5c +size 157210 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Joinable-Space-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Joinable-Space-iPad-pseudo.png new file mode 100644 index 000000000..15395fcb2 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Joinable-Space-iPad-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68d023be4b3beb2c2c0390fee38476d4ab47598ced8c4bfeb2faac35b21233e7 +size 165798 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Joinable-Space-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Joinable-Space-iPhone-16-en-GB.png new file mode 100644 index 000000000..35be9d420 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Joinable-Space-iPhone-16-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08bb8765338a52a2414371396cf86703ff62ed918b6350eeef4111d2f479bcd4 +size 101267 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Joinable-Space-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Joinable-Space-iPhone-16-pseudo.png new file mode 100644 index 000000000..9dd86241e --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Joinable-Space-iPhone-16-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7eecb1e3a28b4e6362ce4e3a5fc1a08e90d3e7a439b46b1e813e221621597171 +size 111488 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knockable-Space-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knockable-Space-iPad-en-GB.png new file mode 100644 index 000000000..9696686c9 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knockable-Space-iPad-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8466754a9aa189bea4e33c2c0375d8cd6eb0133ca68281ad245c89b2ee96684 +size 171268 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knockable-Space-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knockable-Space-iPad-pseudo.png new file mode 100644 index 000000000..42cd58055 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knockable-Space-iPad-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80b0ded88cb72bff8c02c932faf83bda7b4e8c9b38722ad295c0d82f4a24768c +size 182956 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knockable-Space-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knockable-Space-iPhone-16-en-GB.png new file mode 100644 index 000000000..fb84b890d --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knockable-Space-iPhone-16-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0c412fc1bc7a5c6d628bf4d6368f0dd9f4de7442841605bd4256858c735b43b +size 113141 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knockable-Space-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knockable-Space-iPhone-16-pseudo.png new file mode 100644 index 000000000..5db9baa39 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knockable-Space-iPhone-16-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f8307e0e1ec76ded38824b060787899d8bd03963a1e56c5fc29ff755fb7f755 +size 129626 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knocked-Space-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knocked-Space-iPad-en-GB.png new file mode 100644 index 000000000..c979c0388 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knocked-Space-iPad-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2df3c053fc7476be99d6121e23c1fcca743a1ba4ed37cc1c545a28502ae63ca +size 109413 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knocked-Space-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knocked-Space-iPad-pseudo.png new file mode 100644 index 000000000..20832b8fb --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knocked-Space-iPad-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61432ef0fc35f38d0eb41c422fb18f5f45af51b68f20d9ebe15f14ddd2d46beb +size 119120 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knocked-Space-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knocked-Space-iPhone-16-en-GB.png new file mode 100644 index 000000000..5139abb48 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knocked-Space-iPhone-16-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f470276995af0c846587e4c06af7159b9f57824b208592fcc580e9356d18ae19 +size 67332 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knocked-Space-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knocked-Space-iPhone-16-pseudo.png new file mode 100644 index 000000000..f42b8174f --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Knocked-Space-iPhone-16-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d79f6c9c32e9e878024572de6fb6b16807989f16468bb0fc7fc38c6a19ea38c4 +size 81912 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Restricted-Space-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Restricted-Space-iPad-en-GB.png new file mode 100644 index 000000000..6154dc213 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Restricted-Space-iPad-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:456e6176b4b4ea0cc0339844b976f7f072974b8b917fac2d6d9b31fcf29b032c +size 171531 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Restricted-Space-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Restricted-Space-iPad-pseudo.png new file mode 100644 index 000000000..dc20e0dc1 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Restricted-Space-iPad-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d198376610c2a9710e44171f5b5cf084ce03e624b4c89cc45b758b3e80cc14a +size 190942 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Restricted-Space-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Restricted-Space-iPhone-16-en-GB.png new file mode 100644 index 000000000..22a38a6f0 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Restricted-Space-iPhone-16-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fd6c13f04ec391f2b1e6dfa574191140ee2ca024669e7a3383668bd36dcf9e1 +size 117393 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Restricted-Space-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Restricted-Space-iPhone-16-pseudo.png new file mode 100644 index 000000000..9183cc7bd --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.Restricted-Space-iPhone-16-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a830646b6fa078a8b41fb97edc503853c36b1ef1e87c33468a8d2dc2cc259903 +size 139977 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.RestrictedJoinable-Space-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.RestrictedJoinable-Space-iPad-en-GB.png new file mode 100644 index 000000000..e5782a1b6 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.RestrictedJoinable-Space-iPad-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21d96120db7f71a4eec79d50dd0bf5cc785dcff443a909221ecff87bd395c6a9 +size 156464 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.RestrictedJoinable-Space-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.RestrictedJoinable-Space-iPad-pseudo.png new file mode 100644 index 000000000..e468246c9 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.RestrictedJoinable-Space-iPad-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:258d9c116eb0c54b60f27f16c430c932d70cda9a70c3c6fc83165dab4060aea1 +size 164393 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.RestrictedJoinable-Space-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.RestrictedJoinable-Space-iPhone-16-en-GB.png new file mode 100644 index 000000000..2a158bdc5 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.RestrictedJoinable-Space-iPhone-16-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:218fccd9e9cd16bdca6343dc8f0caaf721dbbbde46ee071039af8791e8f4264a +size 100586 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.RestrictedJoinable-Space-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.RestrictedJoinable-Space-iPhone-16-pseudo.png new file mode 100644 index 000000000..21feddd3c --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreenSpace.RestrictedJoinable-Space-iPhone-16-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97bdd9de56a6f0634edefe6dd6095dae022e41f280f3a86fdca770c16d269304 +size 109628 diff --git a/UnitTests/Sources/JoinRoomScreenViewModelTests.swift b/UnitTests/Sources/JoinRoomScreenViewModelTests.swift index 5b8de014c..c02f7aa2a 100644 --- a/UnitTests/Sources/JoinRoomScreenViewModelTests.swift +++ b/UnitTests/Sources/JoinRoomScreenViewModelTests.swift @@ -194,8 +194,7 @@ class JoinRoomScreenViewModelTests: XCTestCase { } } - viewModel = JoinRoomScreenViewModel(roomID: "1", - via: [], + viewModel = JoinRoomScreenViewModel(source: .generic(roomID: "1", via: []), appSettings: appSettings, userSession: UserSessionMock(.init(clientProxy: clientProxy)), userIndicatorController: ServiceLocator.shared.userIndicatorController)