diff --git a/Signal/src/ViewControllers/AddToGroupViewController.m b/Signal/src/ViewControllers/AddToGroupViewController.m index 3a7fa413e2..abd9b45edd 100644 --- a/Signal/src/ViewControllers/AddToGroupViewController.m +++ b/Signal/src/ViewControllers/AddToGroupViewController.m @@ -57,7 +57,7 @@ NS_ASSUME_NONNULL_BEGIN blockingManager:helper.blockingManager contactsManager:helper.contactsManager completionBlock:^(BOOL isBlocked) { - if (isBlocked) { + if (!isBlocked) { [weakSelf addToGroup:phoneNumber]; } }]; @@ -89,7 +89,7 @@ NS_ASSUME_NONNULL_BEGIN blockingManager:helper.blockingManager contactsManager:helper.contactsManager completionBlock:^(BOOL isBlocked) { - if (isBlocked) { + if (!isBlocked) { [weakSelf addToGroup:signalAccount.recipientId]; } }]; diff --git a/Signal/src/ViewControllers/NewGroupViewController.m b/Signal/src/ViewControllers/NewGroupViewController.m index 1aa11dacd8..8dea3d40cd 100644 --- a/Signal/src/ViewControllers/NewGroupViewController.m +++ b/Signal/src/ViewControllers/NewGroupViewController.m @@ -4,6 +4,7 @@ #import "NewGroupViewController.h" #import "AddToGroupViewController.h" +#import "BlockListUIUtils.h" #import "ContactTableViewCell.h" #import "ContactsViewHelper.h" #import "Environment.h" @@ -205,37 +206,56 @@ NS_ASSUME_NONNULL_BEGIN for (NSString *recipientId in [nonContactMemberRecipientIds.allObjects sortedArrayUsingSelector:@selector(compare:)]) { - [nonContactsSection addItem:[OWSTableItem itemWithCustomCellBlock:^{ - NewGroupViewController *strongSelf = weakSelf; - OWSAssert(strongSelf); + [nonContactsSection + addItem:[OWSTableItem itemWithCustomCellBlock:^{ + NewGroupViewController *strongSelf = weakSelf; + OWSAssert(strongSelf); - ContactTableViewCell *cell = [ContactTableViewCell new]; - SignalAccount *signalAccount = [contactsViewHelper signalAccountForRecipientId:recipientId]; - BOOL isCurrentMember = [strongSelf.memberRecipientIds containsObject:recipientId]; - BOOL isBlocked = [contactsViewHelper isRecipientIdBlocked:recipientId]; - if (isCurrentMember) { - // In the "contacts" section, we label members as such when editing an existing group. - cell.accessoryMessage = NSLocalizedString( - @"NEW_GROUP_MEMBER_LABEL", @"An indicator that a user is a member of the new group."); - } else if (isBlocked) { - cell.accessoryMessage = NSLocalizedString( - @"CONTACT_CELL_IS_BLOCKED", @"An indicator that a contact has been blocked."); - } else { - OWSAssert(cell.accessoryMessage == nil); + ContactTableViewCell *cell = [ContactTableViewCell new]; + SignalAccount *signalAccount = [contactsViewHelper signalAccountForRecipientId:recipientId]; + BOOL isCurrentMember = [strongSelf.memberRecipientIds containsObject:recipientId]; + BOOL isBlocked = [contactsViewHelper isRecipientIdBlocked:recipientId]; + if (isCurrentMember) { + // In the "contacts" section, we label members as such when editing an existing group. + cell.accessoryMessage = NSLocalizedString( + @"NEW_GROUP_MEMBER_LABEL", @"An indicator that a user is a member of the new group."); + } else if (isBlocked) { + cell.accessoryMessage = NSLocalizedString( + @"CONTACT_CELL_IS_BLOCKED", @"An indicator that a contact has been blocked."); + } else { + OWSAssert(cell.accessoryMessage == nil); + } + + if (signalAccount) { + [cell configureWithSignalAccount:signalAccount + contactsManager:contactsViewHelper.contactsManager]; + } else { + [cell configureWithRecipientId:recipientId contactsManager:contactsViewHelper.contactsManager]; + } + + return cell; } - - if (signalAccount) { - [cell configureWithSignalAccount:signalAccount contactsManager:contactsViewHelper.contactsManager]; - } else { - [cell configureWithRecipientId:recipientId contactsManager:contactsViewHelper.contactsManager]; - } - - return cell; - } - customRowHeight:[ContactTableViewCell rowHeight] - actionBlock:^{ - [weakSelf removeRecipientId:recipientId]; - }]]; + customRowHeight:[ContactTableViewCell rowHeight] + actionBlock:^{ + BOOL isCurrentMember = [weakSelf.memberRecipientIds containsObject:recipientId]; + BOOL isBlocked = [contactsViewHelper isRecipientIdBlocked:recipientId]; + if (isCurrentMember) { + [weakSelf removeRecipientId:recipientId]; + } else if (isBlocked) { + [BlockListUIUtils + showUnblockPhoneNumberActionSheet:recipientId + fromViewController:weakSelf + blockingManager:contactsViewHelper.blockingManager + contactsManager:contactsViewHelper.contactsManager + completionBlock:^(BOOL isStillBlocked) { + if (!isStillBlocked) { + [weakSelf addRecipientId:recipientId]; + } + }]; + } else { + [weakSelf addRecipientId:recipientId]; + } + }]]; } [contents addSection:nonContactsSection]; } @@ -287,8 +307,20 @@ NS_ASSUME_NONNULL_BEGIN actionBlock:^{ NSString *recipientId = signalAccount.recipientId; BOOL isCurrentMember = [weakSelf.memberRecipientIds containsObject:recipientId]; + BOOL isBlocked = [contactsViewHelper isRecipientIdBlocked:recipientId]; if (isCurrentMember) { [weakSelf removeRecipientId:recipientId]; + } else if (isBlocked) { + [BlockListUIUtils + showUnblockSignalAccountActionSheet:signalAccount + fromViewController:weakSelf + blockingManager:contactsViewHelper.blockingManager + contactsManager:contactsViewHelper.contactsManager + completionBlock:^(BOOL isStillBlocked) { + if (!isStillBlocked) { + [weakSelf addRecipientId:recipientId]; + } + }]; } else { [weakSelf addRecipientId:recipientId]; } diff --git a/Signal/src/ViewControllers/NewNonContactConversationViewController.m b/Signal/src/ViewControllers/NewNonContactConversationViewController.m index c33faff5f6..118f5fdcde 100644 --- a/Signal/src/ViewControllers/NewNonContactConversationViewController.m +++ b/Signal/src/ViewControllers/NewNonContactConversationViewController.m @@ -58,7 +58,7 @@ NS_ASSUME_NONNULL_BEGIN blockingManager:helper.blockingManager contactsManager:helper.contactsManager completionBlock:^(BOOL isBlocked) { - if (isBlocked) { + if (!isBlocked) { [weakSelf selectRecipient:phoneNumber]; } }]; @@ -79,7 +79,7 @@ NS_ASSUME_NONNULL_BEGIN blockingManager:helper.blockingManager contactsManager:helper.contactsManager completionBlock:^(BOOL isBlocked) { - if (isBlocked) { + if (!isBlocked) { [weakSelf selectRecipient:signalAccount.recipientId]; } }];