From 454bb8c541edcd22594ccef4cb90cdc45ce81b0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20B=C3=B6ttcher?= Date: Wed, 8 Dec 2021 14:25:36 +0100 Subject: [PATCH 1/2] adding members to new group: added animations and moved member count to the title --- .../NewGroupView/NewGroupMembersBar.swift | 10 ++++++++-- .../NewGroupMembersViewController.swift | 14 +++++++++----- Signal/translations/en.lproj/Localizable.strings | 14 ++++++++++---- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/Signal/src/ViewControllers/NewGroupView/NewGroupMembersBar.swift b/Signal/src/ViewControllers/NewGroupView/NewGroupMembersBar.swift index 413f88294e..893831983f 100644 --- a/Signal/src/ViewControllers/NewGroupView/NewGroupMembersBar.swift +++ b/Signal/src/ViewControllers/NewGroupView/NewGroupMembersBar.swift @@ -80,8 +80,14 @@ public class NewGroupMembersBar: UIView { owsFailDebug("Missing heightConstraint.") return } - let contentHeight = self.contentHeight - heightConstraint.constant = members.isEmpty ? 0 : contentHeight + let desiredHeight = members.isEmpty ? 0 : self.contentHeight + if heightConstraint.constant != desiredHeight { + superview?.layoutIfNeeded() + heightConstraint.constant = desiredHeight + UIView.animate(withDuration: 0.5) { [weak self] in + self?.superview?.layoutIfNeeded() + } + } } private var contentHeight: CGFloat { diff --git a/Signal/src/ViewControllers/NewGroupView/NewGroupMembersViewController.swift b/Signal/src/ViewControllers/NewGroupView/NewGroupMembersViewController.swift index f7d8b01190..810b3a0bbd 100644 --- a/Signal/src/ViewControllers/NewGroupView/NewGroupMembersViewController.swift +++ b/Signal/src/ViewControllers/NewGroupView/NewGroupMembersViewController.swift @@ -21,10 +21,6 @@ public class NewGroupMembersViewController: BaseGroupMemberViewController { @objc public override func viewDidLoad() { super.viewDidLoad() - - title = NSLocalizedString("NEW_GROUP_SELECT_MEMBERS_VIEW_TITLE", - comment: "The title for the 'select members for new group' view.") - updateBarButtons() } @@ -42,6 +38,14 @@ public class NewGroupMembersViewController: BaseGroupMemberViewController { rightBarButtonItem.accessibilityLabel = NSLocalizedString("FINISH_GROUP_CREATION_LABEL", comment: "Accessibility label for finishing new group") navigationItem.rightBarButtonItem = rightBarButtonItem + if newGroupState.recipientSet.count == 1 { + title = NSLocalizedString("NEW_GROUP_1_MEMBERS_VIEW_TITLE", comment: "The title for the 'select members for new group' view if already one member is selected.") + } else if hasMembers { + let format = NSLocalizedString("NEW_GROUP_MANY_MEMBERS_VIEW_TITLE", comment: "The title for the 'select members for new group' view if already some members are selected. Embeds {{number}} of members.") + title = String(format: format, OWSFormat.formatInt(newGroupState.recipientSet.count)) + } else { + title = NSLocalizedString("NEW_GROUP_SELECT_MEMBERS_VIEW_TITLE", comment: "The title for the 'select members for new group' view.") + } } // MARK: - Actions @@ -90,7 +94,7 @@ extension NewGroupMembersViewController: GroupMemberViewDelegate { } func groupMemberViewShouldShowMemberCount() -> Bool { - true + false } func groupMemberViewGroupMemberCountForDisplay() -> Int { diff --git a/Signal/translations/en.lproj/Localizable.strings b/Signal/translations/en.lproj/Localizable.strings index 5f9795445d..d10d84ad42 100644 --- a/Signal/translations/en.lproj/Localizable.strings +++ b/Signal/translations/en.lproj/Localizable.strings @@ -1024,12 +1024,12 @@ /* 1 hour */ "CONVERSATION_MUTE_CONFIRMATION_OPTION_1H" = "1 hour"; -/* 2 hours */ -"CONVERSATION_MUTE_CONFIRMATION_OPTION_8H" = "8 hours"; - -/* 7 days */ +/* 1 week */ "CONVERSATION_MUTE_CONFIRMATION_OPTION_1W" = "1 week"; +/* 8 hours */ +"CONVERSATION_MUTE_CONFIRMATION_OPTION_8H" = "8 hours"; + /* Always */ "CONVERSATION_MUTE_CONFIRMATION_OPTION_ALWAYS" = "Always"; @@ -3601,6 +3601,9 @@ /* A label the cell that lets you add a new member to a group. */ "NEW_CONVERSATION_FIND_BY_PHONE_NUMBER" = "Find by Phone Number"; +/* The title for the 'select members for new group' view if already one member is selected. */ +"NEW_GROUP_1_MEMBERS_VIEW_TITLE" = "1 Member"; + /* Label for the 'create new group' button. */ "NEW_GROUP_BUTTON" = "New Group"; @@ -3625,6 +3628,9 @@ /* Used in place of the group name when a group has not yet been named. */ "NEW_GROUP_DEFAULT_TITLE" = "New Group"; +/* The title for the 'select members for new group' view if already some members are selected. Embeds {{number}} of members. */ +"NEW_GROUP_MANY_MEMBERS_VIEW_TITLE" = "%@ Members"; + /* notification title. Embeds {{author name}} and {{group name}} */ "NEW_GROUP_MESSAGE_NOTIFICATION_TITLE" = "%@ to %@"; From 994b26cbe50f1a05a4bb0688cb703bcea3788519 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20B=C3=B6ttcher?= Date: Mon, 13 Dec 2021 09:33:43 +0100 Subject: [PATCH 2/2] improved group creating animations --- .../NewGroupView/NewGroupMembersBar.swift | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/Signal/src/ViewControllers/NewGroupView/NewGroupMembersBar.swift b/Signal/src/ViewControllers/NewGroupView/NewGroupMembersBar.swift index 893831983f..8443225e06 100644 --- a/Signal/src/ViewControllers/NewGroupView/NewGroupMembersBar.swift +++ b/Signal/src/ViewControllers/NewGroupView/NewGroupMembersBar.swift @@ -28,7 +28,27 @@ public class NewGroupMembersBar: UIView { private var members = [NewGroupMember]() func setMembers(_ members: [NewGroupMember]) { + var addedEntries: [IndexPath] = [] + var removedEntries: [IndexPath] = [] + let oldMemberHashes: [PickedRecipient] = self.members.map { $0.recipient } + let newMemberHashes: [PickedRecipient] = members.map { $0.recipient } + for row in 0..