diff --git a/wire-ios/Wire-iOS Tests/ConversationCreationControllerSnapshotTests.swift b/wire-ios/Wire-iOS Tests/ConversationCreationControllerSnapshotTests.swift index 21ff064dcae..e50be2e9298 100644 --- a/wire-ios/Wire-iOS Tests/ConversationCreationControllerSnapshotTests.swift +++ b/wire-ios/Wire-iOS Tests/ConversationCreationControllerSnapshotTests.swift @@ -52,7 +52,7 @@ final class ConversationCreationControllerSnapshotTests: XCTestCase { snapshotHelper.verify(matching: sut) } - func testTeamGroupOptionsCollapsed() { + func testTeamGroupOptions() { createSut(isTeamMember: true) snapshotHelper @@ -76,13 +76,6 @@ final class ConversationCreationControllerSnapshotTests: XCTestCase { ) } - func testTeamGroupOptionsExpanded() { - createSut(isTeamMember: true) - sut.expandOptions() - - snapshotHelper.verify(matching: sut) - } - // MARK: - Helper Method private func createSut(isTeamMember: Bool) { diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testForEditingTextField.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testForEditingTextField.1.png index e46442ee728..10616a9d008 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testForEditingTextField.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testForEditingTextField.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testTeamGroupOptions.DarkTheme.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testTeamGroupOptions.DarkTheme.png new file mode 100644 index 00000000000..87abb2b7aec Binary files /dev/null and b/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testTeamGroupOptions.DarkTheme.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testTeamGroupOptions.LightTheme.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testTeamGroupOptions.LightTheme.png new file mode 100644 index 00000000000..c8f9a4bd44b Binary files /dev/null and b/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testTeamGroupOptions.LightTheme.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testTeamGroupOptionsCollapsed.DarkTheme.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testTeamGroupOptionsCollapsed.DarkTheme.png deleted file mode 100644 index 2a9924d893e..00000000000 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testTeamGroupOptionsCollapsed.DarkTheme.png and /dev/null differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testTeamGroupOptionsCollapsed.LightTheme.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testTeamGroupOptionsCollapsed.LightTheme.png deleted file mode 100644 index f7b6635fca8..00000000000 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testTeamGroupOptionsCollapsed.LightTheme.png and /dev/null differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testTeamGroupOptionsExpanded.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testTeamGroupOptionsExpanded.1.png deleted file mode 100644 index 68446c76f2b..00000000000 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ConversationCreationControllerSnapshotTests/testTeamGroupOptionsExpanded.1.png and /dev/null differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/FolderCreationControllerSnapshotTests/testForEditingTextField.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/FolderCreationControllerSnapshotTests/testForEditingTextField.1.png index 974c9bab750..d1a46d29baf 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/FolderCreationControllerSnapshotTests/testForEditingTextField.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/FolderCreationControllerSnapshotTests/testForEditingTextField.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForMlsConversation_withNotVerifiedStatus.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForMlsConversation_withNotVerifiedStatus.1.png index 63a09699fa9..b3019a66244 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForMlsConversation_withNotVerifiedStatus.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForMlsConversation_withNotVerifiedStatus.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForMlsConversation_withVerifiedStatus.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForMlsConversation_withVerifiedStatus.1.png index 63a09699fa9..b3019a66244 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForMlsConversation_withVerifiedStatus.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForMlsConversation_withVerifiedStatus.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForNonTeamUser.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForNonTeamUser.1.png index 7893383de0c..680cfb1fd63 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForNonTeamUser.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForNonTeamUser.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInNonTeamConversation.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInNonTeamConversation.1.png index b216bedbd89..8b149636277 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInNonTeamConversation.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInNonTeamConversation.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInNonTeamConversation_Partner.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInNonTeamConversation_Partner.1.png index 078993970f3..63961c5b977 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInNonTeamConversation_Partner.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInNonTeamConversation_Partner.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInTeamConversation.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInTeamConversation.1.png index 0fde8673428..eedde93beec 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInTeamConversation.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInTeamConversation.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInTeamConversation_Admins.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInTeamConversation_Admins.1.png index f418810299f..18f9baa9e26 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInTeamConversation_Admins.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInTeamConversation_Admins.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInTeamConversation_Partner.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInTeamConversation_Partner.1.png index 078993970f3..63961c5b977 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInTeamConversation_Partner.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForOptionsForTeamUserInTeamConversation_Partner.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForProteusConversation_withVerifiedStatus.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForProteusConversation_withVerifiedStatus.1.png index 368bc8e05d4..059bc7dc349 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForProteusConversation_withVerifiedStatus.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/GroupDetailsViewControllerSnapshotTests/testForProteusConversation_withVerifiedStatus.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_BlockingConnectionRequest_MissingLegalHoldConsent1.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_BlockingConnectionRequest_MissingLegalHoldConsent1.1.png index 77d88dc9fbf..cecf050db0e 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_BlockingConnectionRequest_MissingLegalHoldConsent1.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_BlockingConnectionRequest_MissingLegalHoldConsent1.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ConnectionRequest.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ConnectionRequest.1.png index 94b247edde6..791e41c9756 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ConnectionRequest.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ConnectionRequest.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsGuestFromOtherTeam_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsGuestFromOtherTeam_SCIM.1.png index cbab51cfab5..7d2d470cf21 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsGuestFromOtherTeam_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsGuestFromOtherTeam_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsGuest_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsGuest_SCIM.1.png index 33edd8bda45..2e20a264cc0 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsGuest_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsGuest_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsGuest_SCIM_NoEmail.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsGuest_SCIM_NoEmail.1.png index cbab51cfab5..7d2d470cf21 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsGuest_SCIM_NoEmail.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsGuest_SCIM_NoEmail.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsPartner_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsPartner_SCIM.1.png index 97b0ac6376c..dcb28994731 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsPartner_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsPartner_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsPartner_SCIM_NoEmail.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsPartner_SCIM_NoEmail.1.png index 084e8e754b8..2281d113585 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsPartner_SCIM_NoEmail.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserInTeam_ViewerIsPartner_SCIM_NoEmail.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsAdmin_ViewerIsGuest_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsAdmin_ViewerIsGuest_SCIM.1.png index 33edd8bda45..2e20a264cc0 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsAdmin_ViewerIsGuest_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsAdmin_ViewerIsGuest_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsExpiringGuest_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsExpiringGuest_SCIM.1.png index 92d3de32d9b..d092a8e836a 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsExpiringGuest_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsExpiringGuest_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsGuest_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsGuest_SCIM.1.png index daa7804e198..227b8282240 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsGuest_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsGuest_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsGuest_ViewerIsGuest_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsGuest_ViewerIsGuest_SCIM.1.png index daa7804e198..227b8282240 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsGuest_ViewerIsGuest_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsGuest_ViewerIsGuest_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsGuest_ViewerIsPartner_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsGuest_ViewerIsPartner_SCIM.1.png index daa7804e198..227b8282240 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsGuest_ViewerIsPartner_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsGuest_ViewerIsPartner_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_NoSCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_NoSCIM.1.png index cfcf812831b..d05dd4f2bff 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_NoSCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_NoSCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_NoSCIM_NoEmail.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_NoSCIM_NoEmail.1.png index 04310753b95..cf210f8782b 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_NoSCIM_NoEmail.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_NoSCIM_NoEmail.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_SCIM.1.png index bfad03354e7..9830c44eeb9 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_ViewerIsGuest_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_ViewerIsGuest_SCIM.1.png index cfcf812831b..d05dd4f2bff 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_ViewerIsGuest_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_ViewerIsGuest_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_ViewerIsGuest_SCIM_NoEmail.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_ViewerIsGuest_SCIM_NoEmail.1.png index 04310753b95..cf210f8782b 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_ViewerIsGuest_SCIM_NoEmail.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_ViewerIsGuest_SCIM_NoEmail.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_ViewerIsPartner_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_ViewerIsPartner_SCIM.1.png index bfad03354e7..9830c44eeb9 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_ViewerIsPartner_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_ViewerIsPartner_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_ViewerIsPartner_SCIM_NoEmail.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_ViewerIsPartner_SCIM_NoEmail.1.png index 9c53bbb85b0..80b455ac226 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_ViewerIsPartner_SCIM_NoEmail.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUserIsPartner_ViewerIsPartner_SCIM_NoEmail.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUser_NoSCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUser_NoSCIM.1.png index 33edd8bda45..2e20a264cc0 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUser_NoSCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUser_NoSCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUser_NoSCIM_NoEmail.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUser_NoSCIM_NoEmail.1.png index cbab51cfab5..7d2d470cf21 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUser_NoSCIM_NoEmail.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUser_NoSCIM_NoEmail.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUser_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUser_SCIM.1.png index 97b0ac6376c..dcb28994731 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUser_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_OtherUser_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_SelfUser_NoSCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_SelfUser_NoSCIM.1.png index 4cda61a723b..e41aab355c9 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_SelfUser_NoSCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_SelfUser_NoSCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_SelfUser_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_SelfUser_SCIM.1.png index f110684b16e..aabfcdd70d9 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_SelfUser_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_SelfUser_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_UserAndViewerAreGuestsFromSameTeam_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_UserAndViewerAreGuestsFromSameTeam_SCIM.1.png index 15511dab035..5626e07d54b 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_UserAndViewerAreGuestsFromSameTeam_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_UserAndViewerAreGuestsFromSameTeam_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_UserAndViewerAreGuestsFromSameTeam_SCIM_NoEmail.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_UserAndViewerAreGuestsFromSameTeam_SCIM_NoEmail.1.png index a40f5d04bae..1aeccdb0150 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_UserAndViewerAreGuestsFromSameTeam_SCIM_NoEmail.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_UserAndViewerAreGuestsFromSameTeam_SCIM_NoEmail.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewIsAdmin_OtherIsFederated.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewIsAdmin_OtherIsFederated.1.png index abf4b5179d2..047f422fbcf 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewIsAdmin_OtherIsFederated.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewIsAdmin_OtherIsFederated.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewIsNotAdmin_OtherIsFederated.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewIsNotAdmin_OtherIsFederated.1.png index 680851aa1ef..81595c1a978 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewIsNotAdmin_OtherIsFederated.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewIsNotAdmin_OtherIsFederated.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsAdmin_OtherIsAdmin.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsAdmin_OtherIsAdmin.1.png index 6a9ccd8965f..ce45f1cd266 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsAdmin_OtherIsAdmin.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsAdmin_OtherIsAdmin.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsAdmin_OtherIsExternalAdmin.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsAdmin_OtherIsExternalAdmin.1.png index 031b05e3b76..21e84a76f63 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsAdmin_OtherIsExternalAdmin.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsAdmin_OtherIsExternalAdmin.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsAdmin_OtherIsNotAdmin.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsAdmin_OtherIsNotAdmin.1.png index bbac8efaa4a..b869d1ac923 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsAdmin_OtherIsNotAdmin.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsAdmin_OtherIsNotAdmin.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsAdmin_OtherIsWirelessAdmin.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsAdmin_OtherIsWirelessAdmin.1.png index b7178259a31..1300bcda671 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsAdmin_OtherIsWirelessAdmin.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsAdmin_OtherIsWirelessAdmin.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsMember_OtherIsAdmin.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsMember_OtherIsAdmin.1.png index b7178259a31..1300bcda671 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsMember_OtherIsAdmin.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_Group_ViewerIsMember_OtherIsAdmin.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserInTeam_ViewerIsGuest_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserInTeam_ViewerIsGuest_SCIM.1.png index 026bdad9396..a799f5b59c3 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserInTeam_ViewerIsGuest_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserInTeam_ViewerIsGuest_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserInTeam_ViewerIsGuest_SCIM_NoEmail.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserInTeam_ViewerIsGuest_SCIM_NoEmail.1.png index ab0dddbbfbf..7452e2e7649 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserInTeam_ViewerIsGuest_SCIM_NoEmail.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserInTeam_ViewerIsGuest_SCIM_NoEmail.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserInTeam_ViewerIsPartner_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserInTeam_ViewerIsPartner_SCIM.1.png index 51bc6b4e99c..60b06543a69 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserInTeam_ViewerIsPartner_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserInTeam_ViewerIsPartner_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserInTeam_ViewerIsPartner_SCIM_NoEmail.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserInTeam_ViewerIsPartner_SCIM_NoEmail.1.png index bdee746b8c4..c5ddd8edc9c 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserInTeam_ViewerIsPartner_SCIM_NoEmail.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserInTeam_ViewerIsPartner_SCIM_NoEmail.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsGuest_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsGuest_SCIM.1.png index 4fb4efb9e8f..8ad75c144fc 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsGuest_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsGuest_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsGuest_ViewerIsGuest_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsGuest_ViewerIsGuest_SCIM.1.png index 0b7feb31f04..6f655c5d957 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsGuest_ViewerIsGuest_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsGuest_ViewerIsGuest_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsGuest_ViewerIsGuest_SCIM_NoEmail.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsGuest_ViewerIsGuest_SCIM_NoEmail.1.png index 4fb4efb9e8f..8ad75c144fc 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsGuest_ViewerIsGuest_SCIM_NoEmail.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsGuest_ViewerIsGuest_SCIM_NoEmail.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsGuest_ViewerIsPartner_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsGuest_ViewerIsPartner_SCIM.1.png index 4fb4efb9e8f..8ad75c144fc 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsGuest_ViewerIsPartner_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsGuest_ViewerIsPartner_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_NoSCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_NoSCIM.1.png index 03c05d3205a..0f79f80bd7f 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_NoSCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_NoSCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_NoSCIM_NoEmail.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_NoSCIM_NoEmail.1.png index a4e67c18257..48c7d57a504 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_NoSCIM_NoEmail.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_NoSCIM_NoEmail.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_SCIM.1.png index a53ba121ab5..1fbb8eec7c9 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_ViewerIsGuest_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_ViewerIsGuest_SCIM.1.png index 7279f5e4ee2..4fbf44fffbe 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_ViewerIsGuest_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_ViewerIsGuest_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_ViewerIsGuest_SCIM_NoEmail.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_ViewerIsGuest_SCIM_NoEmail.1.png index b325854919b..f18f0b515d1 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_ViewerIsGuest_SCIM_NoEmail.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_ViewerIsGuest_SCIM_NoEmail.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_ViewerIsPartner_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_ViewerIsPartner_SCIM.1.png index 21fd72aa52c..55714442277 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_ViewerIsPartner_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_ViewerIsPartner_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_ViewerIsPartner_SCIM_NoEmail.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_ViewerIsPartner_SCIM_NoEmail.1.png index d1cc6fa57a7..df32c9488f1 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_ViewerIsPartner_SCIM_NoEmail.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUserIsPartner_ViewerIsPartner_SCIM_NoEmail.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUser_NoSCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUser_NoSCIM.1.png index 026bdad9396..a799f5b59c3 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUser_NoSCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUser_NoSCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUser_NoSCIM_NoEmail.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUser_NoSCIM_NoEmail.1.png index ab0dddbbfbf..7452e2e7649 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUser_NoSCIM_NoEmail.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUser_NoSCIM_NoEmail.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUser_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUser_SCIM.1.png index 51bc6b4e99c..60b06543a69 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUser_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_OtherUser_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_SelfUser_NoSCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_SelfUser_NoSCIM.1.png index 4aa1c8b9cb9..4506446eb54 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_SelfUser_NoSCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_SelfUser_NoSCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_SelfUser_SCIM.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_SelfUser_SCIM.1.png index 24c77e69266..20cf7e14990 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_SelfUser_SCIM.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_OneToOne_SelfUser_SCIM.1.png differ diff --git a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_ProfileViewer_OtherUserIsGuest.1.png b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_ProfileViewer_OtherUserIsGuest.1.png index daa7804e198..227b8282240 100644 Binary files a/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_ProfileViewer_OtherUserIsGuest.1.png and b/wire-ios/Wire-iOS Tests/ReferenceImages/ProfileDetailsViewControllerTests/test_ProfileViewer_OtherUserIsGuest.1.png differ diff --git a/wire-ios/Wire-iOS.xcodeproj/project.pbxproj b/wire-ios/Wire-iOS.xcodeproj/project.pbxproj index 125d4933dd7..189154c4626 100644 --- a/wire-ios/Wire-iOS.xcodeproj/project.pbxproj +++ b/wire-ios/Wire-iOS.xcodeproj/project.pbxproj @@ -1366,6 +1366,7 @@ E6F0F90B2C170C0A0019297F /* WireDatadogBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6F0F90A2C170C0A0019297F /* WireDatadogBuilder.swift */; }; E6F442FD2B15FD3200D2B08A /* ConversationSystemMessageCellSnapshotTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6F442FC2B15FD3200D2B08A /* ConversationSystemMessageCellSnapshotTests.swift */; }; E6F443032B1601BA00D2B08A /* MLSMigrationCellDescriptionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6F443022B1601BA00D2B08A /* MLSMigrationCellDescriptionTests.swift */; }; + E90052782C34A52C00020291 /* WireTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = E90052772C34A52C00020291 /* WireTextField.swift */; }; E902B3B429ED3A240090DE32 /* SwiftUIButton+HapticFeedback.swift in Sources */ = {isa = PBXBuildFile; fileRef = E902B3B329ED3A240090DE32 /* SwiftUIButton+HapticFeedback.swift */; }; E90553CB27D612370006EB47 /* AuthenticationEmailVerificationRequiredErrorHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = E90553CA27D612370006EB47 /* AuthenticationEmailVerificationRequiredErrorHandler.swift */; }; E90A2F0D28EEC674005AF571 /* TextFieldStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E90A2F0C28EEC674005AF571 /* TextFieldStyle.swift */; }; @@ -1395,6 +1396,7 @@ E95B0A1A2B559C850088B778 /* ConversationDomainsStoppedFederatingSystemMessageCellDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = E95B0A192B559C850088B778 /* ConversationDomainsStoppedFederatingSystemMessageCellDescription.swift */; }; E95CF9522AEA79F800DCAC6D /* ConversationMessageSnapshotTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = E95CF9512AEA79F800DCAC6D /* ConversationMessageSnapshotTestCase.swift */; }; E95D482F2C57974600F342EE /* CharacterInputFieldSnapshotTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E95D482E2C57974500F342EE /* CharacterInputFieldSnapshotTests.swift */; }; + E96089A02CBFD17600E2F34C /* WireTextFieldDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E960899F2CBFD17600E2F34C /* WireTextFieldDelegate.swift */; }; E961C0752A332E7400A36DE6 /* ConversationReactionMessageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E961C0742A332E7400A36DE6 /* ConversationReactionMessageTests.swift */; }; E96301BB2B4EEDD600726CDB /* Strings+Generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = E96301BA2B4EEDD600726CDB /* Strings+Generated.swift */; }; E964168628997173007F9756 /* ButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E964168528997173007F9756 /* ButtonStyle.swift */; }; @@ -1444,6 +1446,8 @@ E9DD582D2C539B3C00645A2F /* ChangeEmailViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9DD582C2C539B3C00645A2F /* ChangeEmailViewModelTests.swift */; }; E9DD582F2C539D0C00645A2F /* ChangeEmailError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9DD582E2C539D0C00645A2F /* ChangeEmailError.swift */; }; E9E20AEA2AC42ED3005D7E00 /* CreateSecureGuestLinkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9E20AE92AC42ED3005D7E00 /* CreateSecureGuestLinkViewController.swift */; }; + E9E49A5D2CBED6FD0026801A /* SectionFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9E49A5C2CBED6FD0026801A /* SectionFooterView.swift */; }; + E9E49A5F2CBED7FB0026801A /* SectionTableFooter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9E49A5E2CBED7FB0026801A /* SectionTableFooter.swift */; }; E9F0BC292BFD4D13008DD6E9 /* SnapshotTesting+UITableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9F0BC282BFD4D13008DD6E9 /* SnapshotTesting+UITableViewCell.swift */; }; E9F2D63E2B55D2D200133C59 /* ConversationCannotDecryptSystemMessageCellDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9F2D63D2B55D2D200133C59 /* ConversationCannotDecryptSystemMessageCellDescription.swift */; }; E9F2D6402B55D9CD00133C59 /* ConversationStartedSystemMessageCellDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9F2D63F2B55D9CD00133C59 /* ConversationStartedSystemMessageCellDescription.swift */; }; @@ -1538,7 +1542,6 @@ EEA9A76121B0244D001F7B5C /* ConversationCreateErrorSectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEA9A76021B0244D001F7B5C /* ConversationCreateErrorSectionController.swift */; }; EEAC0A1221AD875900BE5F5D /* ConversationCreateNameSectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEAC0A1121AD875900BE5F5D /* ConversationCreateNameSectionController.swift */; }; EEAC0A1421AD898200BE5F5D /* ConversationCreateNameCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEAC0A1321AD898200BE5F5D /* ConversationCreateNameCell.swift */; }; - EEAC0A1621AD98BA00BE5F5D /* ConversationCreateOptionsSectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEAC0A1521AD98BA00BE5F5D /* ConversationCreateOptionsSectionController.swift */; }; EEAC654C206BD64700365C0C /* LinkInteractionTextViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEAC654B206BD64700365C0C /* LinkInteractionTextViewTests.swift */; }; EEB8A2D01F628D1100958881 /* Settings+Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEB8A2CF1F628D1100958881 /* Settings+Account.swift */; }; EEB8CD052410FFCC006FDE0B /* UserSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEB8CD042410FFCC006FDE0B /* UserSet.swift */; }; @@ -1597,7 +1600,6 @@ EEF6E3C428D86408001C1799 /* MessageProtocolSectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEF6E3C328D86408001C1799 /* MessageProtocolSectionController.swift */; }; EEF71F6321B1973D00F0FB30 /* ConversationCreateReceiptsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEF71F6221B1973D00F0FB30 /* ConversationCreateReceiptsCell.swift */; }; EEF71F6521B19F5300F0FB30 /* ConversationCreateReceiptsSectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEF71F6421B19F5300F0FB30 /* ConversationCreateReceiptsSectionController.swift */; }; - EEFF3E7A21B67990000834A6 /* ConversationCreateOptionsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEFF3E7921B67990000834A6 /* ConversationCreateOptionsCell.swift */; }; EEFF3E7C21B6D1FB000834A6 /* ConversationCreateSectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEFF3E7B21B6D1FB000834A6 /* ConversationCreateSectionController.swift */; }; EF00FD741FDA97BA0059FEDC /* UIViewController+Orientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF00FD731FDA97BA0059FEDC /* UIViewController+Orientation.swift */; }; EF0154B7225B922200A77FB6 /* ContactsViewController+Constraints.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF0154B6225B922200A77FB6 /* ContactsViewController+Constraints.swift */; }; @@ -3397,6 +3399,7 @@ E6F0F90A2C170C0A0019297F /* WireDatadogBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WireDatadogBuilder.swift; sourceTree = ""; }; E6F442FC2B15FD3200D2B08A /* ConversationSystemMessageCellSnapshotTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationSystemMessageCellSnapshotTests.swift; sourceTree = ""; }; E6F443022B1601BA00D2B08A /* MLSMigrationCellDescriptionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MLSMigrationCellDescriptionTests.swift; sourceTree = ""; }; + E90052772C34A52C00020291 /* WireTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WireTextField.swift; sourceTree = ""; }; E902B3B329ED3A240090DE32 /* SwiftUIButton+HapticFeedback.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SwiftUIButton+HapticFeedback.swift"; sourceTree = ""; }; E90553CA27D612370006EB47 /* AuthenticationEmailVerificationRequiredErrorHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationEmailVerificationRequiredErrorHandler.swift; sourceTree = ""; }; E90A2F0C28EEC674005AF571 /* TextFieldStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextFieldStyle.swift; sourceTree = ""; }; @@ -3426,6 +3429,7 @@ E95B0A192B559C850088B778 /* ConversationDomainsStoppedFederatingSystemMessageCellDescription.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationDomainsStoppedFederatingSystemMessageCellDescription.swift; sourceTree = ""; }; E95CF9512AEA79F800DCAC6D /* ConversationMessageSnapshotTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationMessageSnapshotTestCase.swift; sourceTree = ""; }; E95D482E2C57974500F342EE /* CharacterInputFieldSnapshotTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CharacterInputFieldSnapshotTests.swift; sourceTree = ""; }; + E960899F2CBFD17600E2F34C /* WireTextFieldDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WireTextFieldDelegate.swift; sourceTree = ""; }; E961C0742A332E7400A36DE6 /* ConversationReactionMessageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationReactionMessageTests.swift; sourceTree = ""; }; E96301BA2B4EEDD600726CDB /* Strings+Generated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Strings+Generated.swift"; sourceTree = ""; }; E964168528997173007F9756 /* ButtonStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonStyle.swift; sourceTree = ""; }; @@ -3471,6 +3475,8 @@ E9DD582C2C539B3C00645A2F /* ChangeEmailViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeEmailViewModelTests.swift; sourceTree = ""; }; E9DD582E2C539D0C00645A2F /* ChangeEmailError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeEmailError.swift; sourceTree = ""; }; E9E20AE92AC42ED3005D7E00 /* CreateSecureGuestLinkViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateSecureGuestLinkViewController.swift; sourceTree = ""; }; + E9E49A5C2CBED6FD0026801A /* SectionFooterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SectionFooterView.swift; sourceTree = ""; }; + E9E49A5E2CBED7FB0026801A /* SectionTableFooter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SectionTableFooter.swift; sourceTree = ""; }; E9F0BC282BFD4D13008DD6E9 /* SnapshotTesting+UITableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SnapshotTesting+UITableViewCell.swift"; sourceTree = ""; }; E9F2D63D2B55D2D200133C59 /* ConversationCannotDecryptSystemMessageCellDescription.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationCannotDecryptSystemMessageCellDescription.swift; sourceTree = ""; }; E9F2D63F2B55D9CD00133C59 /* ConversationStartedSystemMessageCellDescription.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationStartedSystemMessageCellDescription.swift; sourceTree = ""; }; @@ -3561,7 +3567,6 @@ EEA9A76021B0244D001F7B5C /* ConversationCreateErrorSectionController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationCreateErrorSectionController.swift; sourceTree = ""; }; EEAC0A1121AD875900BE5F5D /* ConversationCreateNameSectionController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationCreateNameSectionController.swift; sourceTree = ""; }; EEAC0A1321AD898200BE5F5D /* ConversationCreateNameCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationCreateNameCell.swift; sourceTree = ""; }; - EEAC0A1521AD98BA00BE5F5D /* ConversationCreateOptionsSectionController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationCreateOptionsSectionController.swift; sourceTree = ""; }; EEAC654B206BD64700365C0C /* LinkInteractionTextViewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LinkInteractionTextViewTests.swift; sourceTree = ""; }; EEB8A2CF1F628D1100958881 /* Settings+Account.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Settings+Account.swift"; sourceTree = ""; }; EEB8CD042410FFCC006FDE0B /* UserSet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSet.swift; sourceTree = ""; }; @@ -3628,7 +3633,6 @@ EEFAB4972AB83AC2003140DF /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Emoji.strings; sourceTree = ""; }; EEFAB4982AB83AC4003140DF /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Emoji.strings; sourceTree = ""; }; EEFAB4992AB83AC5003140DF /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Emoji.strings; sourceTree = ""; }; - EEFF3E7921B67990000834A6 /* ConversationCreateOptionsCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationCreateOptionsCell.swift; sourceTree = ""; }; EEFF3E7B21B6D1FB000834A6 /* ConversationCreateSectionController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationCreateSectionController.swift; sourceTree = ""; }; EF00FD731FDA97BA0059FEDC /* UIViewController+Orientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIViewController+Orientation.swift"; sourceTree = ""; }; EF0154B6225B922200A77FB6 /* ContactsViewController+Constraints.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ContactsViewController+Constraints.swift"; sourceTree = ""; }; @@ -5744,6 +5748,8 @@ 8750B1CA2124236200B807A9 /* SecondaryTextButton.swift */, 5E21345221E39AE100273D0D /* EmailPasswordTextField.swift */, E93DA6192913F38A00A0F17C /* LinkButton.swift */, + E9E49A5C2CBED6FD0026801A /* SectionFooterView.swift */, + E9E49A5E2CBED7FB0026801A /* SectionTableFooter.swift */, ); path = Views; sourceTree = ""; @@ -8088,7 +8094,6 @@ EEFF3E7B21B6D1FB000834A6 /* ConversationCreateSectionController.swift */, EEAC0A1121AD875900BE5F5D /* ConversationCreateNameSectionController.swift */, EEA9A76021B0244D001F7B5C /* ConversationCreateErrorSectionController.swift */, - EEAC0A1521AD98BA00BE5F5D /* ConversationCreateOptionsSectionController.swift */, EE0DE1CC21B172BF00CF3C4E /* ConversationCreateGuestsSectionController.swift */, EEF71F6421B19F5300F0FB30 /* ConversationCreateReceiptsSectionController.swift */, E94784E8278EDDC200F9FE80 /* ConversationCreateServicesSectionController.swift */, @@ -8102,7 +8107,6 @@ children = ( EEAC0A1321AD898200BE5F5D /* ConversationCreateNameCell.swift */, EEA9A75E21B01F28001F7B5C /* ConversationCreateErrorCell.swift */, - EEFF3E7921B67990000834A6 /* ConversationCreateOptionsCell.swift */, EEC6A08E21B7BF7900133BC7 /* ConversationCreateGuestsCell.swift */, EEF71F6221B1973D00F0FB30 /* ConversationCreateReceiptsCell.swift */, E91DCC35278DE2AE00B66DD7 /* ConversationCreateServicesCell.swift */, @@ -8396,6 +8400,8 @@ EEFF3E7421B67573000834A6 /* Cells */, F1B5EAC62029AB9A0081D402 /* SimpleTextField.swift */, F1B5EAC82029AC7E0081D402 /* SimpleTextFieldValidator.swift */, + E90052772C34A52C00020291 /* WireTextField.swift */, + E960899F2CBFD17600E2F34C /* WireTextFieldDelegate.swift */, ); path = Create; sourceTree = ""; @@ -9351,7 +9357,6 @@ 63AFE23825B6E16B0054B067 /* RoundedSegmentedView.swift in Sources */, E9DD582B2C53929400645A2F /* ChangeEmailViewModel.swift in Sources */, A95FB36B23ED7F030095247C /* PassthroughTouchesView.swift in Sources */, - EEFF3E7A21B67990000834A6 /* ConversationCreateOptionsCell.swift in Sources */, E9C0B35D2B558F1700BC80E8 /* ConversationStartedSystemMessageCell.swift in Sources */, 5E8FFC2621F0879B0052DF03 /* ReauthenticateWithCompanyLoginStepDescription.swift in Sources */, 5E8C38B2212E9799002AE12B /* AuthenticationStartMissingCredentialsErrorHandler.swift in Sources */, @@ -9429,6 +9434,7 @@ 5E769C5C21AEA3CB00785EB7 /* MessageDetailsContentViewController.swift in Sources */, EF33204C21496A0D0079E832 /* AVPlayerViewController+StatusBarAndNotification.swift in Sources */, A9806A3C23E209FC00691DFE /* AudioTrack.swift in Sources */, + E9E49A5F2CBED7FB0026801A /* SectionTableFooter.swift in Sources */, EF834B8422035AD400E92F13 /* ConversationContentViewController+MessageAction.swift in Sources */, 8712134B1FA37882008B6767 /* TrackingManager.swift in Sources */, F1199D371FC8490A0070FAC3 /* AuthenticationStepController.swift in Sources */, @@ -9485,7 +9491,6 @@ EF22DC7F224BC5C2001EDE8E /* UIViewController+Alert.swift in Sources */, 5E0FB21B2057F50C00FD9867 /* CallQualitySurveyReview.swift in Sources */, 0619FBBB258A1DF700A0F3E2 /* ZClientViewController+FeatureChange.swift in Sources */, - EEAC0A1621AD98BA00BE5F5D /* ConversationCreateOptionsSectionController.swift in Sources */, 0665DF6E28E494360094482B /* ImagePickerManager.swift in Sources */, BFF8CBE02126E98900DB0330 /* InteractiveModalTransition.swift in Sources */, 1661C71D21A71853003DCE1C /* ConversationVideoMessageCell.swift in Sources */, @@ -9517,6 +9522,7 @@ 5E53534421B14A8A0060DB38 /* MessageDetailsCellDescription.swift in Sources */, EF2A8DEB214A9AFD002C9058 /* ContactsCell.swift in Sources */, E902B3B429ED3A240090DE32 /* SwiftUIButton+HapticFeedback.swift in Sources */, + E9E49A5D2CBED6FD0026801A /* SectionFooterView.swift in Sources */, 0667FE312384237E00F75F93 /* UICollectionView+SetMessage.swift in Sources */, 06717E5C2865183600AF442C /* Stylable.swift in Sources */, 5EA73D8720D901000001D106 /* SeparatorCollectionViewCell.swift in Sources */, @@ -9806,6 +9812,7 @@ EE742AB6284DE57900A6B5F3 /* DeveloperToolsView.swift in Sources */, 879718921D1C109900163C07 /* AudioRecordKeyboardViewController.swift in Sources */, F1A989D01FD1630300B8A82E /* SecondaryViewDescription.swift in Sources */, + E90052782C34A52C00020291 /* WireTextField.swift in Sources */, 6328BBAD2C2EFEA2007A3288 /* SettingsDebugReportViewModel.swift in Sources */, E942A38D28A2AC3A00C3092F /* NavigationController.swift in Sources */, 87F18BBC1E01577C00C69D9B /* FileMessageViewState.swift in Sources */, @@ -10280,6 +10287,7 @@ D5168F522010F20700F8222A /* ShareDestinationCell.swift in Sources */, BFB5972320E62EB6008720ED /* CancelableItem.swift in Sources */, 5E35F74121804A9E00D3F4FE /* ConversationSenderMessageDetailsCell.swift in Sources */, + E96089A02CBFD17600E2F34C /* WireTextFieldDelegate.swift in Sources */, 16D68E9B1CEF99C7003AB9E0 /* WaveformProgressView.swift in Sources */, EF4C5D50233A17680092CA38 /* ConversationListContentController.swift in Sources */, 87BEB0441D3E478500DE9575 /* AssetLibrary.swift in Sources */, diff --git a/wire-ios/Wire-iOS/Generated/Strings+Generated.swift b/wire-ios/Wire-iOS/Generated/Strings+Generated.swift index b1b420b84b6..5aa54c49b5c 100644 --- a/wire-ios/Wire-iOS/Generated/Strings+Generated.swift +++ b/wire-ios/Wire-iOS/Generated/Strings+Generated.swift @@ -2364,7 +2364,7 @@ internal enum L10n { internal enum Create { internal enum GroupName { /// Group name - internal static let placeholder = L10n.tr("Localizable", "conversation.create.group_name.placeholder", fallback: "Group name") + internal static let label = L10n.tr("Localizable", "conversation.create.group_name.label", fallback: "Group name") /// Create group internal static let title = L10n.tr("Localizable", "conversation.create.group_name.title", fallback: "Create group") } @@ -2410,8 +2410,8 @@ internal enum L10n { internal static func subtitle(_ p1: Any, _ p2: Any, _ p3: Any) -> String { return L10n.tr("Localizable", "conversation.create.options.subtitle", String(describing: p1), String(describing: p2), String(describing: p3), fallback: "Guests: %@, Services: %@, Read receipts: %@") } - /// Conversation options - internal static let title = L10n.tr("Localizable", "conversation.create.options.title", fallback: "Conversation options") + /// CONVERSATION OPTIONS + internal static let title = L10n.tr("Localizable", "conversation.create.options.title", fallback: "CONVERSATION OPTIONS") } internal enum ProtocolSelection { /// MLS diff --git a/wire-ios/Wire-iOS/Resources/Base.lproj/Localizable.strings b/wire-ios/Wire-iOS/Resources/Base.lproj/Localizable.strings index c50ffef2a37..4d08fdcef54 100644 --- a/wire-ios/Wire-iOS/Resources/Base.lproj/Localizable.strings +++ b/wire-ios/Wire-iOS/Resources/Base.lproj/Localizable.strings @@ -312,10 +312,10 @@ "conversation.input_bar.message_too_long.message" = "You can send messages up to %d characters long."; "conversation.create.group_name.title" = "Create group"; -"conversation.create.group_name.placeholder" = "Group name"; +"conversation.create.group_name.label" = "Group name"; "conversation.create.guidance.empty" = "At least 1 character"; "conversation.create.guidance.toolong" = "Too many characters"; -"conversation.create.options.title" = "Conversation options"; +"conversation.create.options.title" = "CONVERSATION OPTIONS"; "conversation.create.options.subtitle" = "Guests: %@, Services: %@, Read receipts: %@"; "conversation.create.guests.title" = "Allow guests"; "conversation.create.guests.subtitle" = "Open this conversation to people outside your team."; diff --git a/wire-ios/Wire-iOS/Sources/UserInterface/Components/Views/SectionFooter.swift b/wire-ios/Wire-iOS/Sources/UserInterface/Components/Views/SectionFooter.swift index 010a57760bc..15bc435f30d 100644 --- a/wire-ios/Wire-iOS/Sources/UserInterface/Components/Views/SectionFooter.swift +++ b/wire-ios/Wire-iOS/Sources/UserInterface/Components/Views/SectionFooter.swift @@ -17,44 +17,11 @@ // import UIKit - -final class SectionFooterView: UIView { - - let titleLabel = UILabel() - - override init(frame: CGRect) { - super.init(frame: frame) - setupViews() - createConstraints() - } - - @available(*, unavailable) - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - private func setupViews() { - titleLabel.font = .preferredFont(forTextStyle: .footnote) - titleLabel.translatesAutoresizingMaskIntoConstraints = false - titleLabel.numberOfLines = 0 - titleLabel.applyStyle(.footerLabel) - addSubview(titleLabel) - } - - private func createConstraints() { - NSLayoutConstraint.activate([ - titleLabel.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -16), - titleLabel.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 16), - titleLabel.topAnchor.constraint(equalTo: topAnchor, constant: 16), - titleLabel.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -8) - ]) - } - -} +import WireDesign final class SectionFooter: UICollectionReusableView { - let footerView = SectionFooterView() + private let footerView = SectionFooterView() var titleLabel: UILabel { return footerView.titleLabel @@ -76,25 +43,3 @@ final class SectionFooter: UICollectionReusableView { collectionView.register(SectionFooter.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionFooter, withReuseIdentifier: "SectionFooter") } } - -final class SectionTableFooter: UITableViewHeaderFooterView { - - let footerView = SectionFooterView() - - var titleLabel: UILabel { - return footerView.titleLabel - } - - override init(reuseIdentifier: String?) { - super.init(reuseIdentifier: reuseIdentifier) - addSubview(footerView) - footerView.translatesAutoresizingMaskIntoConstraints = false - footerView.fitIn(view: self) - } - - @available(*, unavailable) - required init?(coder aDecoder: NSCoder) { - fatalError("init?(coder aDecoder: NSCoder) is not implemented") - } - -} diff --git a/wire-ios/Wire-iOS/Sources/UserInterface/Components/Views/SectionFooterView.swift b/wire-ios/Wire-iOS/Sources/UserInterface/Components/Views/SectionFooterView.swift new file mode 100644 index 00000000000..0ead2f4aba6 --- /dev/null +++ b/wire-ios/Wire-iOS/Sources/UserInterface/Components/Views/SectionFooterView.swift @@ -0,0 +1,57 @@ +// +// Wire +// Copyright (C) 2024 Wire Swiss GmbH +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see http://www.gnu.org/licenses/. +// + +import UIKit +import WireDesign + +final class SectionFooterView: UIView { + + let titleLabel = DynamicFontLabel( + style: .subline1, + color: SemanticColors.Label.textSectionFooter + ) + + override init(frame: CGRect) { + super.init(frame: frame) + setupViews() + createConstraints() + } + + @available(*, unavailable) + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private func setupViews() { + titleLabel.translatesAutoresizingMaskIntoConstraints = false + titleLabel.numberOfLines = 0 + titleLabel.lineBreakMode = .byWordWrapping + titleLabel.textColor = SemanticColors.Label.textSectionFooter + addSubview(titleLabel) + } + + private func createConstraints() { + NSLayoutConstraint.activate([ + titleLabel.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -16), + titleLabel.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 16), + titleLabel.topAnchor.constraint(equalTo: topAnchor, constant: 8), + titleLabel.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -16) + ]) + } + +} diff --git a/wire-ios/Wire-iOS/Sources/UserInterface/Components/Views/SectionHeader.swift b/wire-ios/Wire-iOS/Sources/UserInterface/Components/Views/SectionHeader.swift index 36e220ce084..b1962242cbf 100644 --- a/wire-ios/Wire-iOS/Sources/UserInterface/Components/Views/SectionHeader.swift +++ b/wire-ios/Wire-iOS/Sources/UserInterface/Components/Views/SectionHeader.swift @@ -22,14 +22,15 @@ import WireDesign final class SectionHeaderView: UIView { - let titleLabel = DynamicFontLabel(style: .h5, - color: SemanticColors.Label.textSectionHeader) + let titleLabel = DynamicFontLabel( + style: .h5, + color: SemanticColors.Label.textSectionHeader + ) override init(frame: CGRect) { super.init(frame: frame) setupViews() createConstraints() - } @available(*, unavailable) @@ -53,7 +54,6 @@ final class SectionHeaderView: UIView { titleLabel.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -8) ]) } - } final class SectionHeader: UICollectionReusableView { @@ -68,7 +68,7 @@ final class SectionHeader: UICollectionReusableView { super.init(frame: frame) addSubview(headerView) headerView.translatesAutoresizingMaskIntoConstraints = false - headerView.fitIn(view: self) + createConstraints() } @available(*, unavailable) @@ -76,6 +76,14 @@ final class SectionHeader: UICollectionReusableView { fatalError("init?(coder aDecoder: NSCoder) is not implemented") } + private func createConstraints() { + NSLayoutConstraint.activate([ + headerView.leadingAnchor.constraint(equalTo: leadingAnchor), + headerView.topAnchor.constraint(equalTo: topAnchor), + headerView.trailingAnchor.constraint(equalTo: trailingAnchor), + headerView.bottomAnchor.constraint(equalTo: bottomAnchor) + ]) + } } final class SectionTableHeader: UITableViewHeaderFooterView { @@ -107,5 +115,4 @@ final class SectionTableHeader: UITableViewHeaderFooterView { headerView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) ]) } - } diff --git a/wire-ios/Wire-iOS/Sources/UserInterface/Components/Views/SectionTableFooter.swift b/wire-ios/Wire-iOS/Sources/UserInterface/Components/Views/SectionTableFooter.swift new file mode 100644 index 00000000000..a847b3ec6bf --- /dev/null +++ b/wire-ios/Wire-iOS/Sources/UserInterface/Components/Views/SectionTableFooter.swift @@ -0,0 +1,42 @@ +// +// Wire +// Copyright (C) 2024 Wire Swiss GmbH +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see http://www.gnu.org/licenses/. +// + +import UIKit +import WireDesign + +final class SectionTableFooter: UITableViewHeaderFooterView { + + private let footerView = SectionFooterView() + + var titleLabel: UILabel { + return footerView.titleLabel + } + + override init(reuseIdentifier: String?) { + super.init(reuseIdentifier: reuseIdentifier) + addSubview(footerView) + footerView.translatesAutoresizingMaskIntoConstraints = false + footerView.fitIn(view: self) + } + + @available(*, unavailable) + required init?(coder aDecoder: NSCoder) { + fatalError("init?(coder aDecoder: NSCoder) is not implemented") + } + +} diff --git a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Cells/ConversationCreateNameCell.swift b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Cells/ConversationCreateNameCell.swift index 9fe17494fd1..96705d8ecbe 100644 --- a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Cells/ConversationCreateNameCell.swift +++ b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Cells/ConversationCreateNameCell.swift @@ -16,11 +16,23 @@ // along with this program. If not, see http://www.gnu.org/licenses/. // +import Combine import UIKit +import WireCommonComponents +import WireDesign final class ConversationCreateNameCell: UICollectionViewCell { - let textField = SimpleTextField() + private let stackView = UIStackView() + private let groupNameLabel = DynamicFontLabel( + text: L10n.Localizable.Conversation.Create.GroupName.label, + style: .h4, + color: SemanticColors.Label.textUserPropertyCellName + ) + + let textField = WireTextField() + + private var cancellables = Set() override init(frame: CGRect) { super.init(frame: frame) @@ -32,15 +44,56 @@ final class ConversationCreateNameCell: UICollectionViewCell { fatalError("init?(coder aDecoder: NSCoder) is not implemented") } - fileprivate func setup() { - textField.translatesAutoresizingMaskIntoConstraints = false - textField.isAccessibilityElement = true - textField.accessibilityIdentifier = "textfield.newgroup.name" - textField.placeholder = L10n.Localizable.Conversation.Create.GroupName.placeholder.localizedUppercase - textField.accessibilityValue = L10n.Accessibility.CreateConversation.SearchView.description + private func setup() { + setupStackView() + setupGroupNameLabel() + setupTextField() + setupConstraints() + setupNotifications() + } + + private func setupStackView() { + stackView.axis = .vertical + stackView.spacing = 8 + stackView.alignment = .fill + stackView.distribution = .fill + stackView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(stackView) + } + + private func setupGroupNameLabel() { + stackView.addArrangedSubview(groupNameLabel) + } + + private func setupTextField() { + textField.borderStyle = .roundedRect + textField.layer.borderColor = SemanticColors.SearchBar.borderInputView.cgColor + textField.font = .font(for: .body1) + stackView.addArrangedSubview(textField) + } + + private func setupConstraints() { + NSLayoutConstraint.activate([ + stackView.topAnchor.constraint(equalTo: contentView.topAnchor), + stackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 16), + stackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -16), + stackView.bottomAnchor.constraint(lessThanOrEqualTo: contentView.bottomAnchor), + + textField.heightAnchor.constraint(equalToConstant: 46) + ]) + } - contentView.addSubview(textField) - textField.fitIn(view: contentView) + private func setupNotifications() { + NotificationCenter.default.publisher(for: UITextField.textDidBeginEditingNotification, object: textField) + .sink { [weak self] _ in + self?.groupNameLabel.textColor = UIColor.accent() + } + .store(in: &cancellables) + NotificationCenter.default.publisher(for: UITextField.textDidEndEditingNotification, object: textField) + .sink { [weak self] _ in + self?.groupNameLabel.textColor = SemanticColors.Label.textUserPropertyCellName + } + .store(in: &cancellables) } } diff --git a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Cells/ConversationCreateOptionsCell.swift b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Cells/ConversationCreateOptionsCell.swift deleted file mode 100644 index 8683a3d6adc..00000000000 --- a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Cells/ConversationCreateOptionsCell.swift +++ /dev/null @@ -1,112 +0,0 @@ -// -// Wire -// Copyright (C) 2024 Wire Swiss GmbH -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see http://www.gnu.org/licenses/. -// - -import UIKit -import WireCommonComponents -import WireDesign - -final class ConversationCreateOptionsCell: RightIconDetailsCell { - - // MARK: - Properties - var expanded = false - - // MARK: - Override Properties for Accessibility - override var accessibilityLabel: String? { - get { - return title - } - - set { - super.accessibilityLabel = newValue - } - } - - override var accessibilityValue: String? { - get { - return status - } - - set { - super.accessibilityValue = newValue - } - } - - override var accessibilityHint: String? { - get { - typealias CreateConversation = L10n.Accessibility.CreateConversation - return expanded ? CreateConversation.HideSettings.hint : CreateConversation.OpenSettings.hint - } - - set { - super.accessibilityHint = newValue - } - } - - // MARK: - Overrides - override func setUp() { - super.setUp() - title = L10n.Localizable.Conversation.Create.Options.title - icon = nil - showSeparator = false - contentLeadingOffset = 16 - setupIcon() - setupAccessibility() - } - - // MARK: Methods - /// Sets up the icon and its color. - private func setupIcon() { - let color = SemanticColors.Icon.foregroundPlainDownArrow - let image = StyleKitIcon.downArrow.makeImage( - size: .tiny, - color: color).withRenderingMode(.alwaysTemplate) - - // flip upside down if necessary - if let cgImage = image.cgImage, expanded { - accessory = UIImage( - cgImage: cgImage, - scale: image.scale, - orientation: .downMirrored).withRenderingMode(.alwaysTemplate) - } else { - accessory = image - } - accessoryColor = color - } - - private func setupAccessibility() { - accessibilityIdentifier = "cell.groupdetails.options" - isAccessibilityElement = true - accessibilityTraits = .button - } -} - -// MARK: - ConversationCreateOptionsCell Extension -extension ConversationCreateOptionsCell: ConversationCreationValuesConfigurable { - func configure(with values: ConversationCreationValues) { - let guests = values.allowGuests.localized.capitalized - let services = values.allowServices.localized.capitalized - let receipts = values.enableReceipts.localized.capitalized - status = L10n.Localizable.Conversation.Create.Options.subtitle(guests, services, receipts) - } -} - -private extension Bool { - var localized: String { - return self ? L10n.Localizable.General.on : L10n.Localizable.General.off - } -} diff --git a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/ConversationCreationController.swift b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/ConversationCreationController.swift index b2faa2b6958..ea8ab0d8096 100644 --- a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/ConversationCreationController.swift +++ b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/ConversationCreationController.swift @@ -52,18 +52,20 @@ final class ConversationCreationController: UIViewController { private lazy var nameSection = ConversationCreateNameSectionController(selfUser: userSession.selfUser, delegate: self) private lazy var errorSection = ConversationCreateErrorSectionController() - private lazy var optionsToggle: ConversationCreateOptionsSectionController = { - let section = ConversationCreateOptionsSectionController(values: values) - section.tapHandler = optionsTapped - return section - }() + private lazy var optionsSections: [ConversationCreateSectionController] = { + let sections = [ + guestsSection, + servicesSection, + receiptsSection, + shouldIncludeEncryptionProtocolSection ? encryptionProtocolSection : nil + ].compactMap { $0 } + + if let firstSection = sections.first { + firstSection.headerTitle = L10n.Localizable.Conversation.Create.Options.title + } - private lazy var optionsSections = [ - guestsSection, - servicesSection, - receiptsSection, - shouldIncludeEncryptionProtocolSection ? encryptionProtocolSection : nil - ].compactMap { $0 } + return sections + }() private var shouldIncludeEncryptionProtocolSection: Bool { if DeveloperFlag.showCreateMLSGroupToggle.isOn { @@ -79,7 +81,6 @@ final class ConversationCreationController: UIViewController { private lazy var guestsSection: ConversationCreateGuestsSectionController = { let section = ConversationCreateGuestsSectionController(values: values) - section.isHidden = true section.toggleAction = { [unowned self] allowGuests in self.values.allowGuests = allowGuests @@ -91,7 +92,6 @@ final class ConversationCreationController: UIViewController { private lazy var servicesSection: ConversationCreateServicesSectionController = { let section = ConversationCreateServicesSectionController(values: values) - section.isHidden = true section.toggleAction = { [unowned self] allowServices in self.values.allowServices = allowServices @@ -102,7 +102,6 @@ final class ConversationCreationController: UIViewController { private lazy var receiptsSection: ConversationCreateReceiptsSectionController = { let section = ConversationCreateReceiptsSectionController(values: values) - section.isHidden = true section.toggleAction = { [unowned self] enableReceipts in self.values.enableReceipts = enableReceipts @@ -154,10 +153,6 @@ final class ConversationCreationController: UIViewController { setupViews() - // try to overtake the first responder from the other view - if UIResponder.currentFirst != nil { - nameSection.becomeFirstResponder() - } } override func viewWillAppear(_ animated: Bool) { @@ -165,11 +160,6 @@ final class ConversationCreationController: UIViewController { setupNavigationBar() } - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - nameSection.becomeFirstResponder() - } - // MARK: - Methods override var prefersStatusBarHidden: Bool { @@ -202,7 +192,7 @@ final class ConversationCreationController: UIViewController { collectionViewController.sections = [nameSection, errorSection] if userSession.selfUser.isTeamMember { - collectionViewController.sections.append(contentsOf: [optionsToggle] + optionsSections) + collectionViewController.sections.append(contentsOf: optionsSections) } } @@ -228,7 +218,7 @@ final class ConversationCreationController: UIViewController { navigationItem.rightBarButtonItem = nextButtonItem } - func proceedWith(value: SimpleTextField.Value) { + func proceedWith(value: WireTextField.Value) { switch value { case let .error(error): errorSection.displayError(error) @@ -258,7 +248,6 @@ final class ConversationCreationController: UIViewController { } private func updateOptions() { - self.optionsToggle.configure(with: values) self.guestsSection.configure(with: values) self.servicesSection.configure(with: values) self.encryptionProtocolSection.configure(with: values) @@ -400,66 +389,28 @@ extension ConversationCreationController: AddParticipantsConversationCreationDel } -// MARK: - SimpleTextFieldDelegate +// MARK: - WireTextFieldDelegate -extension ConversationCreationController: SimpleTextFieldDelegate { - - func textField(_ textField: SimpleTextField, valueChanged value: SimpleTextField.Value) { - errorSection.clearError() - switch value { - case .error: navigationItem.rightBarButtonItem?.isEnabled = false - case .valid(let text): navigationItem.rightBarButtonItem?.isEnabled = !text.isEmpty - } +extension ConversationCreationController: WireTextFieldDelegate { + func textFieldDidEndEditing(_ textField: WireTextField) { } - func textFieldReturnPressed(_ textField: SimpleTextField) { - tryToProceed() - } - - func textFieldDidBeginEditing(_ textField: SimpleTextField) { + func textFieldDidBeginEditing(_ textField: WireTextField) { } - func textFieldDidEndEditing(_ textField: SimpleTextField) { - - } -} - -// MARK: - Handlers - -extension ConversationCreationController { - - private func optionsTapped(expanded: Bool) { - guard let collectionView = collectionViewController.collectionView else { - return - } - - let changes: () -> Void - let indexSet = IndexSet(integersIn: 3..<(3 + optionsSections.count)) - - if expanded { - nameSection.resignFirstResponder() - expandOptions() - changes = { collectionView.insertSections(indexSet) } - } else { - collapseOptions() - changes = { collectionView.deleteSections(indexSet) } - } - - collectionView.performBatchUpdates(changes) + func textFieldReturnPressed(_ textField: WireTextField) { + tryToProceed() } - func expandOptions() { - optionsSections.forEach { - $0.isHidden = false + func textField(_ textField: WireTextField, valueChanged value: WireTextField.Value) { + errorSection.clearError() + switch value { + case .error: navigationItem.rightBarButtonItem?.isEnabled = false + case .valid(let text): navigationItem.rightBarButtonItem?.isEnabled = !text.isEmpty } - } - func collapseOptions() { - optionsSections.forEach { - $0.isHidden = true - } } } diff --git a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateGuestsSectionController.swift b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateGuestsSectionController.swift index 490ac452373..b1981f09c35 100644 --- a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateGuestsSectionController.swift +++ b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateGuestsSectionController.swift @@ -27,12 +27,12 @@ final class ConversationCreateGuestsSectionController: ConversationCreateSection override func prepareForUse(in collectionView: UICollectionView?) { super.prepareForUse(in: collectionView) collectionView.flatMap(Cell.register) - headerHeight = 40 footerText = L10n.Localizable.Conversation.Create.Guests.subtitle } } extension ConversationCreateGuestsSectionController { + override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(ofType: Cell.self, for: indexPath) self.cell = cell @@ -41,4 +41,5 @@ extension ConversationCreateGuestsSectionController { cell.action = toggleAction return cell } + } diff --git a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateNameSectionController.swift b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateNameSectionController.swift index 7ed2c272f23..9fd31c42915 100644 --- a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateNameSectionController.swift +++ b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateNameSectionController.swift @@ -27,12 +27,12 @@ final class ConversationCreateNameSectionController: NSObject, CollectionViewSec return false } - var value: SimpleTextField.Value? { + var value: WireTextField.Value? { return nameCell?.textField.value } private weak var nameCell: Cell? - private weak var textFieldDelegate: SimpleTextFieldDelegate? + private weak var textFieldDelegate: WireTextFieldDelegate? private var footer = SectionFooter(frame: .zero) private let selfUser: UserType @@ -41,7 +41,7 @@ final class ConversationCreateNameSectionController: NSObject, CollectionViewSec }() init(selfUser: UserType, - delegate: SimpleTextFieldDelegate? = nil) { + delegate: WireTextFieldDelegate? = nil) { textFieldDelegate = delegate self.selfUser = selfUser } @@ -67,7 +67,7 @@ final class ConversationCreateNameSectionController: NSObject, CollectionViewSec func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(ofType: Cell.self, for: indexPath) - cell.textField.textFieldDelegate = textFieldDelegate + cell.textField.wireTextFieldDelegate = textFieldDelegate nameCell = cell return cell } @@ -79,7 +79,7 @@ final class ConversationCreateNameSectionController: NSObject, CollectionViewSec } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { - return CGSize(width: collectionView.bounds.size.width, height: 56) + return CGSize(width: collectionView.bounds.size.width, height: 76) } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize { diff --git a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateOptionsSectionController.swift b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateOptionsSectionController.swift deleted file mode 100644 index bd8fc0c7ae8..00000000000 --- a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateOptionsSectionController.swift +++ /dev/null @@ -1,47 +0,0 @@ -// -// Wire -// Copyright (C) 2024 Wire Swiss GmbH -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see http://www.gnu.org/licenses/. -// - -import UIKit - -final class ConversationCreateOptionsSectionController: ConversationCreateSectionController { - - typealias Cell = ConversationCreateOptionsCell - - var tapHandler: ((Bool) -> Void)? - - override func prepareForUse(in collectionView: UICollectionView?) { - collectionView.flatMap(Cell.register) - } -} - -extension ConversationCreateOptionsSectionController { - - override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - let cell = collectionView.dequeueReusableCell(ofType: Cell.self, for: indexPath) - self.cell = cell - cell.setUp() - cell.configure(with: values) - return cell - } - - func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { - guard let cell = cell as? Cell else { return } - cell.expanded.toggle() - tapHandler?(cell.expanded) - } -} diff --git a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateReceiptsSectionController.swift b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateReceiptsSectionController.swift index 82b8265c890..d0ae5f9fafc 100644 --- a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateReceiptsSectionController.swift +++ b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateReceiptsSectionController.swift @@ -27,7 +27,6 @@ final class ConversationCreateReceiptsSectionController: ConversationCreateSecti override func prepareForUse(in collectionView: UICollectionView?) { super.prepareForUse(in: collectionView) collectionView.flatMap(Cell.register) - headerHeight = 24 footerText = L10n.Localizable.Conversation.Create.Receipts.subtitle } } diff --git a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateSectionController.swift b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateSectionController.swift index f0efd6c5b50..f56bfdaf52c 100644 --- a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateSectionController.swift +++ b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateSectionController.swift @@ -22,12 +22,16 @@ class ConversationCreateSectionController: NSObject, CollectionViewSectionContro typealias CreationCell = (DetailsCollectionViewCell & ConversationCreationValuesConfigurable) + var headerTitle: String? + var values: ConversationCreationValues var isHidden = false weak var cell: CreationCell? + var header = SectionHeader(frame: .zero) + var headerHeight: CGFloat = 0 var footer = SectionFooter(frame: .zero) @@ -44,7 +48,7 @@ class ConversationCreateSectionController: NSObject, CollectionViewSectionContro withReuseIdentifier: "SectionFooter") collectionView?.register( - UICollectionReusableView.self, + SectionHeader.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "SectionHeader") } @@ -74,6 +78,7 @@ extension ConversationCreateSectionController { switch kind { case UICollectionView.elementKindSectionHeader: let view = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "SectionHeader", for: indexPath) + (view as? SectionHeader)?.titleLabel.text = headerTitle return view default: let view = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "SectionFooter", for: indexPath) @@ -89,7 +94,10 @@ extension ConversationCreateSectionController { } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize { - return CGSize(width: collectionView.bounds.size.width, height: headerHeight) + guard headerTitle != nil else { return .zero } + header.titleLabel.text = headerTitle + header.size(fittingWidth: collectionView.bounds.width) + return header.bounds.size } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize { diff --git a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateServicesSectionController.swift b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateServicesSectionController.swift index ba20e68ce91..04b8731471f 100644 --- a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateServicesSectionController.swift +++ b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationCreateServicesSectionController.swift @@ -27,7 +27,6 @@ final class ConversationCreateServicesSectionController: ConversationCreateSecti override func prepareForUse(in collectionView: UICollectionView?) { super.prepareForUse(in: collectionView) collectionView.flatMap(Cell.register) - headerHeight = 40 footerText = L10n.Localizable.Conversation.Create.Services.subtitle } } diff --git a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationEncryptionProtocolSectionController.swift b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationEncryptionProtocolSectionController.swift index 36d5ee53db7..15dd0fac300 100644 --- a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationEncryptionProtocolSectionController.swift +++ b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/Sections/ConversationEncryptionProtocolSectionController.swift @@ -27,7 +27,6 @@ final class ConversationEncryptionProtocolSectionController: ConversationCreateS override func prepareForUse(in collectionView: UICollectionView?) { super.prepareForUse(in: collectionView) collectionView.flatMap(Cell.register) - headerHeight = 40 footerText = L10n.Localizable.Conversation.Create.Mls.subtitle } } diff --git a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/WireTextField.swift b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/WireTextField.swift new file mode 100644 index 00000000000..81364e9bf48 --- /dev/null +++ b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/WireTextField.swift @@ -0,0 +1,144 @@ +// +// Wire +// Copyright (C) 2024 Wire Swiss GmbH +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see http://www.gnu.org/licenses/. +// + +import UIKit +import WireCommonComponents +import WireDesign + +class WireTextField: UITextField { + + // MARK: - Properties + + enum Value { + case valid(String) + case error(SimpleTextFieldValidator.ValidationError) + } + + private let borderWidth: CGFloat = 1 + private let cornerRadius: CGFloat = 12 + + var defaultBorderColor: UIColor = SemanticColors.SearchBar.borderInputView + var selectedBorderColor: UIColor = UIColor.accent() + + weak var wireTextFieldDelegate: WireTextFieldDelegate? + private let textFieldValidator = SimpleTextFieldValidator() + + var value: Value? { + let validator = SimpleTextFieldValidator() + guard let text else { return nil } + return if let error = validator.validate(text: text) { + .error(error) + } else { + .valid(text) + } + } + + // MARK: - Initialization + + override init(frame: CGRect) { + super.init(frame: frame) + setup() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + setup() + } + + // MARK: - Setup + + private func setup() { + setupAppearance() + setupPadding() + setupTextFieldProperties() + setupTextFieldEvents() + } + + private func setupAppearance() { + layer.borderWidth = borderWidth + layer.cornerRadius = cornerRadius + layer.borderColor = defaultBorderColor.cgColor + layer.masksToBounds = true + self.backgroundColor = SemanticColors.View.backgroundDefaultWhite + } + + private func setupPadding() { + let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 10, height: frame.height)) + leftView = paddingView + leftViewMode = .always + } + + private func setupTextFieldProperties() { + returnKeyType = .next + autocapitalizationType = .words + accessibilityIdentifier = "NameField" + autocorrectionType = .no + contentVerticalAlignment = .center + font = .font(for: .body1) + + textFieldValidator.delegate = self + delegate = textFieldValidator + } + + private func setupTextFieldEvents() { + addTarget(self, action: #selector(textFieldDidStartEditing), for: .editingDidBegin) + addTarget(self, action: #selector(textFieldDidFinishEditing), for: .editingDidEnd) + } + + // MARK: - UI Updates + + @objc private func textFieldDidStartEditing() { + layer.borderColor = selectedBorderColor.cgColor + wireTextFieldDelegate?.textFieldDidBeginEditing(self) + } + + @objc private func textFieldDidFinishEditing() { + layer.borderColor = defaultBorderColor.cgColor + wireTextFieldDelegate?.textFieldDidEndEditing(self) + } +} + +// MARK: - SimpleTextFieldValidatorDelegate + +extension WireTextField: SimpleTextFieldValidatorDelegate { + + func textFieldValueChanged(_ text: String?) { + let validator = SimpleTextFieldValidator() + let newValue = { () -> WireTextField.Value in + guard let text else { return .error(.empty) } + if let error = validator.validate(text: text) { + return .error(error) + } else { + return .valid(text) + } + }() + wireTextFieldDelegate?.textField(self, valueChanged: newValue) + } + + func textFieldValueSubmitted(_ value: String) { + wireTextFieldDelegate?.textFieldReturnPressed(self) + } + + func textFieldDidEndEditing() { + wireTextFieldDelegate?.textFieldDidEndEditing(self) + } + + func textFieldDidBeginEditing() { + wireTextFieldDelegate?.textFieldDidBeginEditing(self) + } +} diff --git a/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/WireTextFieldDelegate.swift b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/WireTextFieldDelegate.swift new file mode 100644 index 00000000000..6cad324917f --- /dev/null +++ b/wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Create/WireTextFieldDelegate.swift @@ -0,0 +1,29 @@ +// +// Wire +// Copyright (C) 2024 Wire Swiss GmbH +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see http://www.gnu.org/licenses/. +// + +protocol WireTextFieldDelegate: AnyObject { + + func textField(_ textField: WireTextField, valueChanged value: WireTextField.Value) + + func textFieldReturnPressed(_ textField: WireTextField) + + func textFieldDidEndEditing(_ textField: WireTextField) + + func textFieldDidBeginEditing(_ textField: WireTextField) + +}