From a039aac36de7ee2cdd1576e02cc3b1741ba41d62 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 20 Jun 2017 10:24:29 -0400 Subject: [PATCH 1/5] =?UTF-8?q?Improve=20UX=20for=20multiple=20=E2=80=9Cno?= =?UTF-8?q?=20longer=20verified=E2=80=9D=20members=20of=20a=20group.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit // FREEBIE --- .../ConversationView/MessagesViewController.m | 30 ++++++++-- .../ShowGroupMembersViewController.m | 58 +++++++++++++++++-- .../translations/en.lproj/Localizable.strings | 12 ++++ 3 files changed, 89 insertions(+), 11 deletions(-) diff --git a/Signal/src/ViewControllers/ConversationView/MessagesViewController.m b/Signal/src/ViewControllers/ConversationView/MessagesViewController.m index fe89dd006a..bb460e72b7 100644 --- a/Signal/src/ViewControllers/ConversationView/MessagesViewController.m +++ b/Signal/src/ViewControllers/ConversationView/MessagesViewController.m @@ -844,6 +844,12 @@ typedef enum : NSUInteger { - (void)noLongerVerifiedBannerViewWasTapped:(UIGestureRecognizer *)sender { if (sender.state == UIGestureRecognizerStateRecognized) { + NSArray *noLongerVerifiedRecipientIds = [self noLongerVerifiedRecipientIds]; + if (noLongerVerifiedRecipientIds.count < 1) { + return; + } + BOOL hasMultiple = noLongerVerifiedRecipientIds.count > 1; + UIAlertController *actionSheetController = [UIAlertController alertControllerWithTitle:nil message:nil @@ -851,12 +857,14 @@ typedef enum : NSUInteger { __weak MessagesViewController *weakSelf = self; UIAlertAction *verifyAction = [UIAlertAction - actionWithTitle: - NSLocalizedString(@"VERIFY_PRIVACY", - @"Label for button or row which allows users to verify the safety number of another user.") - style:UIAlertActionStyleDefault + actionWithTitle:(hasMultiple ? NSLocalizedString(@"VERIFY_PRIVACY_MULTIPLE", + @"Label for button or row which allows users to verify the safety " + @"numbers of multiple users.") + : NSLocalizedString(@"VERIFY_PRIVACY", + @"Label for button or row which allows users to verify the safety " + @"number of another user."))style:UIAlertActionStyleDefault handler:^(UIAlertAction *_Nonnull action) { - [weakSelf showConversationSettingsAndShowVerification:YES]; + [weakSelf showNoLongerVerifiedUI]; }]; [actionSheetController addAction:verifyAction]; @@ -1952,6 +1960,18 @@ typedef enum : NSUInteger { #pragma mark - Actions +- (void)showNoLongerVerifiedUI +{ + NSArray *noLongerVerifiedRecipientIds = [self noLongerVerifiedRecipientIds]; + if (noLongerVerifiedRecipientIds.count > 1) { + [self showConversationSettingsAndShowVerification:YES]; + } else if (noLongerVerifiedRecipientIds.count == 1) { + // Pick one in an arbitrary but deterministic manner. + NSString *recipientId = noLongerVerifiedRecipientIds.lastObject; + [self showFingerprintWithRecipientId:recipientId]; + } +} + - (void)showConversationSettings { [self showConversationSettingsAndShowVerification:NO]; diff --git a/Signal/src/ViewControllers/ShowGroupMembersViewController.m b/Signal/src/ViewControllers/ShowGroupMembersViewController.m index 76a0bf93fc..150af575d4 100644 --- a/Signal/src/ViewControllers/ShowGroupMembersViewController.m +++ b/Signal/src/ViewControllers/ShowGroupMembersViewController.m @@ -121,24 +121,60 @@ NS_ASSUME_NONNULL_BEGIN OWSTableContents *contents = [OWSTableContents new]; - __weak ShowGroupMembersViewController *weakSelf = self; ContactsViewHelper *helper = self.contactsViewHelper; + OWSTableSection *membersSection = [OWSTableSection new]; + // Group Members - OWSTableSection *section = [OWSTableSection new]; + // If there are "no longer verified" members of the group, + // highlight them in a special section. + NSSet *noLongerVerifiedRecipientIds = [NSSet setWithArray:[self noLongerVerifiedRecipientIds]]; + if (noLongerVerifiedRecipientIds.count > 0) { + OWSTableSection *noLongerVerifiedSection = [OWSTableSection new]; + noLongerVerifiedSection.headerTitle = NSLocalizedString(@"GROUP_MEMBERS_SECTION_TITLE_NO_LONGER_VERIFIED", + @"Title for the 'no longer verified' section of the 'group members' view."); + membersSection.headerTitle = NSLocalizedString( + @"GROUP_MEMBERS_SECTION_TITLE_MEMBERS", @"Title for the 'members' section of the 'group members' view."); + [self addMembers:noLongerVerifiedRecipientIds.allObjects + toSection:noLongerVerifiedSection + noLongerVerifiedRecipientIds:noLongerVerifiedRecipientIds]; + [contents addSection:noLongerVerifiedSection]; + } NSMutableSet *memberRecipientIds = [self.memberRecipientIds mutableCopy]; [memberRecipientIds removeObject:[helper localNumber]]; - for (NSString *recipientId in [memberRecipientIds.allObjects sortedArrayUsingSelector:@selector(compare:)]) { + [self addMembers:memberRecipientIds.allObjects + toSection:membersSection + noLongerVerifiedRecipientIds:noLongerVerifiedRecipientIds]; + [contents addSection:membersSection]; + + self.contents = contents; +} + +- (void)addMembers:(NSArray *)recipientIds + toSection:(OWSTableSection *)section + noLongerVerifiedRecipientIds:(NSSet *)noLongerVerifiedRecipientIds +{ + OWSAssert(recipientIds); + OWSAssert(section); + OWSAssert(noLongerVerifiedRecipientIds); + + __weak ShowGroupMembersViewController *weakSelf = self; + ContactsViewHelper *helper = self.contactsViewHelper; + for (NSString *recipientId in [recipientIds sortedArrayUsingSelector:@selector(compare:)]) { [section addItem:[OWSTableItem itemWithCustomCellBlock:^{ ShowGroupMembersViewController *strongSelf = weakSelf; OWSAssert(strongSelf); ContactTableViewCell *cell = [ContactTableViewCell new]; SignalAccount *signalAccount = [helper signalAccountForRecipientId:recipientId]; + BOOL isNoLongerVerified = [noLongerVerifiedRecipientIds containsObject:recipientId]; BOOL isBlocked = [helper isRecipientIdBlocked:recipientId]; - if (isBlocked) { + if (isNoLongerVerified) { + cell.accessoryMessage = NSLocalizedString( + @"CONTACT_CELL_IS_NO_LONGER_VERIFIED", @"An indicator that a contact is no longer verified."); + } else if (isBlocked) { cell.accessoryMessage = NSLocalizedString(@"CONTACT_CELL_IS_BLOCKED", @"An indicator that a contact has been blocked."); } @@ -162,9 +198,19 @@ NS_ASSUME_NONNULL_BEGIN [weakSelf didSelectRecipientId:recipientId]; }]]; } - [contents addSection:section]; +} - self.contents = contents; +// Returns a collection of the group members who are "no longer verified". +- (NSArray *)noLongerVerifiedRecipientIds +{ + NSMutableArray *result = [NSMutableArray new]; + for (NSString *recipientId in self.thread.recipientIdentifiers) { + if ([[OWSIdentityManager sharedManager] verificationStateForRecipientId:recipientId] + == OWSVerificationStateNoLongerVerified) { + [result addObject:recipientId]; + } + } + return [result copy]; } - (void)didSelectRecipientId:(NSString *)recipientId diff --git a/Signal/translations/en.lproj/Localizable.strings b/Signal/translations/en.lproj/Localizable.strings index f45ea1fb0a..1b32fac937 100644 --- a/Signal/translations/en.lproj/Localizable.strings +++ b/Signal/translations/en.lproj/Localizable.strings @@ -268,6 +268,9 @@ /* An indicator that a contact has been blocked. */ "CONTACT_CELL_IS_BLOCKED" = "Blocked"; +/* An indicator that a contact is no longer verified. */ +"CONTACT_CELL_IS_NO_LONGER_VERIFIED" = "Not Verified"; + /* No comment provided by engineer. */ "CONTACT_DETAIL_COMM_TYPE_INSECURE" = "Unregistered Number"; @@ -577,6 +580,12 @@ /* Button label for the 'call group member' button */ "GROUP_MEMBERS_CALL" = "Call"; +/* Title for the 'members' section of the 'group members' view. */ +"GROUP_MEMBERS_SECTION_TITLE_MEMBERS" = "Members"; + +/* Title for the 'no longer verified' section of the 'group members' view. */ +"GROUP_MEMBERS_SECTION_TITLE_NO_LONGER_VERIFIED" = "No Longer Marked as Verified"; + /* Button label for the 'send message to group member' button */ "GROUP_MEMBERS_SEND_MESSAGE" = "Send Message"; @@ -1441,6 +1450,9 @@ /* Label for button or row which allows users to verify the safety number of another user. */ "VERIFY_PRIVACY" = "Show Safety Number"; +/* Label for button or row which allows users to verify the safety numbers of multiple users. */ +"VERIFY_PRIVACY_MULTIPLE" = "Review Safety Numbers"; + /* Indicates how to cancel a voice message. */ "VOICE_MESSAGE_CANCEL_INSTRUCTIONS" = "Slide to Cancel"; From f1e5be4c176397e7361102c5521aab422180ad78 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 20 Jun 2017 10:27:27 -0400 Subject: [PATCH 2/5] =?UTF-8?q?Improve=20UX=20for=20multiple=20=E2=80=9Cno?= =?UTF-8?q?=20longer=20verified=E2=80=9D=20members=20of=20a=20group.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit // FREEBIE --- .../ShowGroupMembersViewController.m | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/Signal/src/ViewControllers/ShowGroupMembersViewController.m b/Signal/src/ViewControllers/ShowGroupMembersViewController.m index 150af575d4..05cb723807 100644 --- a/Signal/src/ViewControllers/ShowGroupMembersViewController.m +++ b/Signal/src/ViewControllers/ShowGroupMembersViewController.m @@ -129,24 +129,20 @@ NS_ASSUME_NONNULL_BEGIN // If there are "no longer verified" members of the group, // highlight them in a special section. - NSSet *noLongerVerifiedRecipientIds = [NSSet setWithArray:[self noLongerVerifiedRecipientIds]]; + NSArray *noLongerVerifiedRecipientIds = [self noLongerVerifiedRecipientIds]; if (noLongerVerifiedRecipientIds.count > 0) { OWSTableSection *noLongerVerifiedSection = [OWSTableSection new]; noLongerVerifiedSection.headerTitle = NSLocalizedString(@"GROUP_MEMBERS_SECTION_TITLE_NO_LONGER_VERIFIED", @"Title for the 'no longer verified' section of the 'group members' view."); membersSection.headerTitle = NSLocalizedString( @"GROUP_MEMBERS_SECTION_TITLE_MEMBERS", @"Title for the 'members' section of the 'group members' view."); - [self addMembers:noLongerVerifiedRecipientIds.allObjects - toSection:noLongerVerifiedSection - noLongerVerifiedRecipientIds:noLongerVerifiedRecipientIds]; + [self addMembers:noLongerVerifiedRecipientIds toSection:noLongerVerifiedSection]; [contents addSection:noLongerVerifiedSection]; } NSMutableSet *memberRecipientIds = [self.memberRecipientIds mutableCopy]; [memberRecipientIds removeObject:[helper localNumber]]; - [self addMembers:memberRecipientIds.allObjects - toSection:membersSection - noLongerVerifiedRecipientIds:noLongerVerifiedRecipientIds]; + [self addMembers:memberRecipientIds.allObjects toSection:membersSection]; [contents addSection:membersSection]; self.contents = contents; @@ -154,11 +150,9 @@ NS_ASSUME_NONNULL_BEGIN - (void)addMembers:(NSArray *)recipientIds toSection:(OWSTableSection *)section - noLongerVerifiedRecipientIds:(NSSet *)noLongerVerifiedRecipientIds { OWSAssert(recipientIds); OWSAssert(section); - OWSAssert(noLongerVerifiedRecipientIds); __weak ShowGroupMembersViewController *weakSelf = self; ContactsViewHelper *helper = self.contactsViewHelper; @@ -169,7 +163,10 @@ NS_ASSUME_NONNULL_BEGIN ContactTableViewCell *cell = [ContactTableViewCell new]; SignalAccount *signalAccount = [helper signalAccountForRecipientId:recipientId]; - BOOL isNoLongerVerified = [noLongerVerifiedRecipientIds containsObject:recipientId]; + OWSVerificationState verificationState = + [[OWSIdentityManager sharedManager] verificationStateForRecipientId:recipientId]; + BOOL isVerified = verificationState == OWSVerificationStateVerified; + BOOL isNoLongerVerified = verificationState == OWSVerificationStateNoLongerVerified; BOOL isBlocked = [helper isRecipientIdBlocked:recipientId]; if (isNoLongerVerified) { cell.accessoryMessage = NSLocalizedString( @@ -185,8 +182,6 @@ NS_ASSUME_NONNULL_BEGIN [cell configureWithRecipientId:recipientId contactsManager:helper.contactsManager]; } - BOOL isVerified = [[OWSIdentityManager sharedManager] verificationStateForRecipientId:recipientId] - == OWSVerificationStateVerified; if (isVerified) { [cell addVerifiedSubtitle]; } From afb83cfaaa3c94b9327369447f468df5535e44ea Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 20 Jun 2017 10:30:05 -0400 Subject: [PATCH 3/5] =?UTF-8?q?Improve=20UX=20for=20multiple=20=E2=80=9Cno?= =?UTF-8?q?=20longer=20verified=E2=80=9D=20members=20of=20a=20group.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit // FREEBIE --- .../ShowGroupMembersViewController.m | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Signal/src/ViewControllers/ShowGroupMembersViewController.m b/Signal/src/ViewControllers/ShowGroupMembersViewController.m index 05cb723807..48a400bf3d 100644 --- a/Signal/src/ViewControllers/ShowGroupMembersViewController.m +++ b/Signal/src/ViewControllers/ShowGroupMembersViewController.m @@ -136,20 +136,21 @@ NS_ASSUME_NONNULL_BEGIN @"Title for the 'no longer verified' section of the 'group members' view."); membersSection.headerTitle = NSLocalizedString( @"GROUP_MEMBERS_SECTION_TITLE_MEMBERS", @"Title for the 'members' section of the 'group members' view."); - [self addMembers:noLongerVerifiedRecipientIds toSection:noLongerVerifiedSection]; + [self addMembers:noLongerVerifiedRecipientIds toSection:noLongerVerifiedSection useVerifyAction:YES]; [contents addSection:noLongerVerifiedSection]; } NSMutableSet *memberRecipientIds = [self.memberRecipientIds mutableCopy]; [memberRecipientIds removeObject:[helper localNumber]]; - [self addMembers:memberRecipientIds.allObjects toSection:membersSection]; + [self addMembers:memberRecipientIds.allObjects toSection:membersSection useVerifyAction:NO]; [contents addSection:membersSection]; self.contents = contents; } - (void)addMembers:(NSArray *)recipientIds - toSection:(OWSTableSection *)section + toSection:(OWSTableSection *)section + useVerifyAction:(BOOL)useVerifyAction { OWSAssert(recipientIds); OWSAssert(section); @@ -190,7 +191,11 @@ NS_ASSUME_NONNULL_BEGIN } customRowHeight:[ContactTableViewCell rowHeight] actionBlock:^{ - [weakSelf didSelectRecipientId:recipientId]; + if (useVerifyAction) { + [weakSelf verifySafetyNumber:recipientId]; + } else { + [weakSelf didSelectRecipientId:recipientId]; + } }]]; } } From efbda70764d07dd0f8fc8958fcf4dc713c4bbd67 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 20 Jun 2017 10:53:30 -0400 Subject: [PATCH 4/5] =?UTF-8?q?Improve=20UX=20for=20multiple=20=E2=80=9Cno?= =?UTF-8?q?=20longer=20verified=E2=80=9D=20members=20of=20a=20group.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit // FREEBIE --- .../ViewControllers/OWSTableViewController.h | 4 ++ .../ViewControllers/OWSTableViewController.m | 9 +++ .../ShowGroupMembersViewController.m | 60 +++++++++++++++++++ .../translations/en.lproj/Localizable.strings | 6 ++ 4 files changed, 79 insertions(+) diff --git a/Signal/src/ViewControllers/OWSTableViewController.h b/Signal/src/ViewControllers/OWSTableViewController.h index db24763638..bb6218b52d 100644 --- a/Signal/src/ViewControllers/OWSTableViewController.h +++ b/Signal/src/ViewControllers/OWSTableViewController.h @@ -66,6 +66,10 @@ typedef UITableViewCell *_Nonnull (^OWSTableCustomCellBlock)(); + (OWSTableItem *)disclosureItemWithText:(NSString *)text actionBlock:(nullable OWSTableActionBlock)actionBlock; ++ (OWSTableItem *)disclosureItemWithText:(NSString *)text + customRowHeight:(CGFloat)customRowHeight + actionBlock:(nullable OWSTableActionBlock)actionBlock; + + (OWSTableItem *)actionItemWithText:(NSString *)text actionBlock:(nullable OWSTableActionBlock)actionBlock; + (OWSTableItem *)labelItemWithText:(NSString *)text; diff --git a/Signal/src/ViewControllers/OWSTableViewController.m b/Signal/src/ViewControllers/OWSTableViewController.m index 9980e2cb6a..5780711602 100644 --- a/Signal/src/ViewControllers/OWSTableViewController.m +++ b/Signal/src/ViewControllers/OWSTableViewController.m @@ -169,6 +169,15 @@ const CGFloat kOWSTable_DefaultCellHeight = 45.f; return item; } ++ (OWSTableItem *)disclosureItemWithText:(NSString *)text + customRowHeight:(CGFloat)customRowHeight + actionBlock:(nullable OWSTableActionBlock)actionBlock +{ + OWSTableItem *item = [self disclosureItemWithText:text actionBlock:actionBlock]; + item.customRowHeight = @(customRowHeight); + return item; +} + + (OWSTableItem *)actionItemWithText:(NSString *)text actionBlock:(nullable OWSTableActionBlock)actionBlock { OWSAssert(text.length > 0); diff --git a/Signal/src/ViewControllers/ShowGroupMembersViewController.m b/Signal/src/ViewControllers/ShowGroupMembersViewController.m index 48a400bf3d..44f284cf7c 100644 --- a/Signal/src/ViewControllers/ShowGroupMembersViewController.m +++ b/Signal/src/ViewControllers/ShowGroupMembersViewController.m @@ -121,6 +121,7 @@ NS_ASSUME_NONNULL_BEGIN OWSTableContents *contents = [OWSTableContents new]; + __weak ShowGroupMembersViewController *weakSelf = self; ContactsViewHelper *helper = self.contactsViewHelper; OWSTableSection *membersSection = [OWSTableSection new]; @@ -136,6 +137,14 @@ NS_ASSUME_NONNULL_BEGIN @"Title for the 'no longer verified' section of the 'group members' view."); membersSection.headerTitle = NSLocalizedString( @"GROUP_MEMBERS_SECTION_TITLE_MEMBERS", @"Title for the 'members' section of the 'group members' view."); + [noLongerVerifiedSection + addItem:[OWSTableItem disclosureItemWithText:NSLocalizedString(@"GROUP_MEMBERS_RESET_NO_LONGER_VERIFIED", + @"Label for the button that clears all verification " + @"errors in the 'group members' view.") + customRowHeight:ContactTableViewCell.rowHeight + actionBlock:^{ + [weakSelf offerResetAllNoLongerVerified]; + }]]; [self addMembers:noLongerVerifiedRecipientIds toSection:noLongerVerifiedSection useVerifyAction:YES]; [contents addSection:noLongerVerifiedSection]; } @@ -200,6 +209,57 @@ NS_ASSUME_NONNULL_BEGIN } } +- (void)offerResetAllNoLongerVerified +{ + OWSAssert([NSThread isMainThread]); + + UIAlertController *actionSheetController = [UIAlertController + alertControllerWithTitle:nil + message:NSLocalizedString(@"GROUP_MEMBERS_RESET_NO_LONGER_VERIFIED_ALERT_MESSAGE", + @"Label for the 'reset all no-longer-verified group members' confirmation alert.") + preferredStyle:UIAlertControllerStyleAlert]; + + __weak ShowGroupMembersViewController *weakSelf = self; + UIAlertAction *verifyAction = [UIAlertAction + actionWithTitle:NSLocalizedString(@"OK", nil) + style:UIAlertActionStyleDestructive + handler:^(UIAlertAction *_Nonnull action) { + [weakSelf resetAllNoLongerVerified]; + }]; + [actionSheetController addAction:verifyAction]; + + UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"TXT_CANCEL_TITLE", @"") + style:UIAlertActionStyleCancel + handler:nil]; + [actionSheetController addAction:cancelAction]; + + [self presentViewController:actionSheetController animated:YES completion:nil]; +} + +- (void)resetAllNoLongerVerified +{ + OWSAssert([NSThread isMainThread]); + + OWSIdentityManager *identityManger = [OWSIdentityManager sharedManager]; + NSArray *recipientIds = [self noLongerVerifiedRecipientIds]; + for (NSString *recipientId in recipientIds) { + OWSVerificationState verificationState = [identityManger verificationStateForRecipientId:recipientId]; + if (verificationState == OWSVerificationStateNoLongerVerified) { + NSData *identityKey = [identityManger identityKeyForRecipientId:recipientId]; + if (identityKey.length < 1) { + OWSFail(@"Missing identity key for: %@", recipientId); + continue; + } + [identityManger setVerificationState:OWSVerificationStateDefault + identityKey:identityKey + recipientId:recipientId + isUserInitiatedChange:YES]; + } + } + + [self updateTableContents]; +} + // Returns a collection of the group members who are "no longer verified". - (NSArray *)noLongerVerifiedRecipientIds { diff --git a/Signal/translations/en.lproj/Localizable.strings b/Signal/translations/en.lproj/Localizable.strings index 1b32fac937..7b5fb53d67 100644 --- a/Signal/translations/en.lproj/Localizable.strings +++ b/Signal/translations/en.lproj/Localizable.strings @@ -580,6 +580,12 @@ /* Button label for the 'call group member' button */ "GROUP_MEMBERS_CALL" = "Call"; +/* Label for the button that clears all verification errors in the 'group members' view. */ +"GROUP_MEMBERS_RESET_NO_LONGER_VERIFIED" = "Mark All As Not Verified"; + +/* Label for the 'reset all no-longer-verified group members' confirmation alert. */ +"GROUP_MEMBERS_RESET_NO_LONGER_VERIFIED_ALERT_MESSAGE" = "This will mark all of the group members whose safety numbers have changed since they were last verified as not verified."; + /* Title for the 'members' section of the 'group members' view. */ "GROUP_MEMBERS_SECTION_TITLE_MEMBERS" = "Members"; From 0855faabb4e43dcc1b4c7fd50f8138aeb4526cf7 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 21 Jun 2017 15:06:48 -0400 Subject: [PATCH 5/5] Respond to CR. // FREEBIE --- Signal/src/ViewControllers/ShowGroupMembersViewController.m | 6 +++--- Signal/translations/en.lproj/Localizable.strings | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Signal/src/ViewControllers/ShowGroupMembersViewController.m b/Signal/src/ViewControllers/ShowGroupMembersViewController.m index 44f284cf7c..2113f26a98 100644 --- a/Signal/src/ViewControllers/ShowGroupMembersViewController.m +++ b/Signal/src/ViewControllers/ShowGroupMembersViewController.m @@ -201,7 +201,7 @@ NS_ASSUME_NONNULL_BEGIN customRowHeight:[ContactTableViewCell rowHeight] actionBlock:^{ if (useVerifyAction) { - [weakSelf verifySafetyNumber:recipientId]; + [weakSelf showSafetyNumberView:recipientId]; } else { [weakSelf didSelectRecipientId:recipientId]; } @@ -386,7 +386,7 @@ NS_ASSUME_NONNULL_BEGIN @"safety number of another user.") style:UIAlertActionStyleDefault handler:^(UIAlertAction *_Nonnull action) { - [self verifySafetyNumber:recipientId]; + [self showSafetyNumberView:recipientId]; }]]; } @@ -419,7 +419,7 @@ NS_ASSUME_NONNULL_BEGIN [Environment callUserWithIdentifier:recipientId]; } -- (void)verifySafetyNumber:(NSString *)recipientId +- (void)showSafetyNumberView:(NSString *)recipientId { OWSAssert(recipientId.length > 0); diff --git a/Signal/translations/en.lproj/Localizable.strings b/Signal/translations/en.lproj/Localizable.strings index 7b5fb53d67..06db3f9975 100644 --- a/Signal/translations/en.lproj/Localizable.strings +++ b/Signal/translations/en.lproj/Localizable.strings @@ -581,10 +581,10 @@ "GROUP_MEMBERS_CALL" = "Call"; /* Label for the button that clears all verification errors in the 'group members' view. */ -"GROUP_MEMBERS_RESET_NO_LONGER_VERIFIED" = "Mark All As Not Verified"; +"GROUP_MEMBERS_RESET_NO_LONGER_VERIFIED" = "Clear Verification For All"; /* Label for the 'reset all no-longer-verified group members' confirmation alert. */ -"GROUP_MEMBERS_RESET_NO_LONGER_VERIFIED_ALERT_MESSAGE" = "This will mark all of the group members whose safety numbers have changed since they were last verified as not verified."; +"GROUP_MEMBERS_RESET_NO_LONGER_VERIFIED_ALERT_MESSAGE" = "This will clear the verification of all group members whose safety numbers have changed since they were last verified."; /* Title for the 'members' section of the 'group members' view. */ "GROUP_MEMBERS_SECTION_TITLE_MEMBERS" = "Members"; @@ -989,7 +989,7 @@ "PRIVACY_TAP_TO_SCAN" = "Tap to Scan"; /* Button that lets user mark another user's identity as unverified. */ -"PRIVACY_UNVERIFY_BUTTON" = "Mark as not Verified"; +"PRIVACY_UNVERIFY_BUTTON" = "Clear Verification"; /* Alert body when verifying with {{contact name}} */ "PRIVACY_VERIFICATION_FAILED_I_HAVE_WRONG_KEY_FOR_THEM" = "This doesn't look like your safety number with %@. Are you verifying the correct contact?";