Show blocked users in “add to block list” view.

// FREEBIE
pull/1/head
Matthew Chen 8 years ago
parent 4349f00cdc
commit b3d6a82c4f

@ -341,11 +341,11 @@ NSString *const kContactsTable_CellReuseIdentifier = @"kContactsTable_CellReuseI
[self.contactsTableView reloadData];
}
- (BOOL)isContactBlockedOrHidden:(Contact *)contact
- (BOOL)isContactBlocked:(Contact *)contact
{
if (contact.parsedPhoneNumbers.count < 1) {
// Hide contacts without any valid phone numbers.
return YES;
return NO;
}
for (PhoneNumber *phoneNumber in contact.parsedPhoneNumbers) {
@ -357,6 +357,20 @@ NSString *const kContactsTable_CellReuseIdentifier = @"kContactsTable_CellReuseI
return NO;
}
- (BOOL)isContactHidden:(Contact *)contact
{
if (contact.parsedPhoneNumbers.count < 1) {
// Hide contacts without any valid phone numbers.
return YES;
}
if ([self isCurrentUserContact:contact]) {
return YES;
}
return NO;
}
- (BOOL)isCurrentUserContact:(Contact *)contact
{
for (PhoneNumber *phoneNumber in contact.parsedPhoneNumbers) {
@ -372,7 +386,7 @@ NSString *const kContactsTable_CellReuseIdentifier = @"kContactsTable_CellReuseI
{
NSMutableArray<Contact *> *result = [NSMutableArray new];
for (Contact *contact in self.contactsManager.signalContacts) {
if (![self isContactBlockedOrHidden:contact] && ![self isCurrentUserContact:contact]) {
if (![self isContactHidden:contact]) {
[result addObject:contact];
}
}
@ -436,6 +450,7 @@ NSString *const kContactsTable_CellReuseIdentifier = @"kContactsTable_CellReuseI
if (!cell) {
cell = [ContactTableViewCell new];
}
cell.isBlocked = [self isContactBlocked:contact];
[cell configureWithContact:contact contactsManager:self.contactsManager];
return cell;
}
@ -459,6 +474,25 @@ NSString *const kContactsTable_CellReuseIdentifier = @"kContactsTable_CellReuseI
__weak AddToBlockListViewController *weakSelf = self;
Contact *contact = self.contacts[(NSUInteger)indexPath.item];
if ([self isContactBlocked:contact]) {
NSString *displayName = [_contactsManager displayNameForContact:contact];
UIAlertController *controller = [UIAlertController
alertControllerWithTitle:NSLocalizedString(@"BLOCK_LIST_VIEW_ALREADY_BLOCKED_ALERT_TITLE",
@"A title of the alert if user tries to block a user who is already blocked.")
message:[NSString
stringWithFormat:NSLocalizedString(
@"BLOCK_LIST_VIEW_ALREADY_BLOCKED_ALERT_MESSAGE_FORMAT",
@"A format for the message of the alert if user tries to "
@"block a user who is already blocked. Embeds {{the "
@"blocked user's name or phone number}}."),
displayName]
preferredStyle:UIAlertControllerStyleAlert];
[controller addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"OK", nil)
style:UIAlertActionStyleDefault
handler:nil]];
[self presentViewController:controller animated:YES completion:nil];
return;
}
[BlockListUIUtils showBlockContactActionSheet:contact
fromViewController:self
blockingManager:_blockingManager

@ -17,6 +17,8 @@ NS_ASSUME_NONNULL_BEGIN
@interface ContactTableViewCell : UITableViewCell
@property (nonatomic) BOOL isBlocked;
+ (CGFloat)rowHeight;
- (void)configureWithContact:(Contact *)contact contactsManager:(OWSContactsManager *)contactsManager;

@ -68,7 +68,21 @@ NS_ASSUME_NONNULL_BEGIN
- (void)configureWithContact:(Contact *)contact contactsManager:(OWSContactsManager *)contactsManager
{
self.nameLabel.attributedText = [contactsManager formattedFullNameForContact:contact font:self.nameLabel.font];
NSMutableAttributedString *attributedText =
[[contactsManager formattedFullNameForContact:contact font:self.nameLabel.font] mutableCopy];
if (self.isBlocked) {
// Add whitespace between the contact name and the blocked indicator.
[attributedText appendAttributedString:[[NSAttributedString alloc] initWithString:@" " attributes:nil]];
[attributedText appendAttributedString:[[NSAttributedString alloc]
initWithString:NSLocalizedString(@"CONTACT_BLOCKED_INDICATOR",
@"An indicator that a contact has been blocked.")
attributes:@{
NSFontAttributeName : [UIFont
ows_mediumFontWithSize:self.nameLabel.font.pointSize],
NSForegroundColorAttributeName : [UIColor blackColor],
}]];
}
self.nameLabel.attributedText = attributedText;
self.avatarView.image =
[[[OWSContactAvatarBuilder alloc] initWithContactId:contact.textSecureIdentifiers.firstObject
name:contact.fullName

@ -109,6 +109,12 @@
/* A format for the 'unblock user' action sheet title. Embeds {{the blocked user's name or phone number}}. */
"BLOCK_LIST_UNBLOCK_TITLE_FORMAT" = "Unblock %@?";
/* A format for the message of the alert if user tries to block a user who is already blocked. Embeds {{the blocked user's name or phone number}}. */
"BLOCK_LIST_VIEW_ALREADY_BLOCKED_ALERT_MESSAGE_FORMAT" = "%@ is already blocked.";
/* A title of the alert if user tries to block a user who is already blocked. */
"BLOCK_LIST_VIEW_ALREADY_BLOCKED_ALERT_TITLE" = "Already Blocked";
/* A label for the block button in the block list view */
"BLOCK_LIST_VIEW_BLOCK_BUTTON" = "Block";
@ -187,6 +193,9 @@
/* No comment provided by engineer. */
"CONFIRMATION_TITLE" = "Confirm";
/* An indicator that a contact has been blocked. */
"CONTACT_BLOCKED_INDICATOR" = "(Blocked)";
/* No comment provided by engineer. */
"CONTACT_DETAIL_COMM_TYPE_INSECURE" = "Unregistered Number";
@ -346,9 +355,6 @@
/* No comment provided by engineer. */
"ERROR_MESSAGE_WRONG_TRUSTED_IDENTITY_KEY" = "Safety number changed. Tap to verify.";
/* No comment provided by engineer. */
"ERROR_WAS_DETECTED_TITLE" = "Bummer!";
/* during registration */
"EXISTING_USER_REGISTRATION_ALERT_BODY" = "At this time Signal can only be active on one mobile device per phone number.";
@ -535,7 +541,7 @@
/* Indicates that a single member of this group has been blocked. */
"MESSAGES_VIEW_GROUP_1_MEMBER_BLOCKED" = "You Blocked 1 Member of this Group";
/* Indicates that some members of this group has been blocked. Embeds {{the number of blocked user in this group}}. */
/* Indicates that some members of this group has been blocked. Embeds {{the number of blocked users in this group}}. */
"MESSAGES_VIEW_GROUP_N_MEMBERS_BLOCKED_FORMAT" = "You Blocked %d Members of this Group";
/* The subtitle for the messages view title indicates that the title can be tapped to access settings for this conversation. */
@ -979,9 +985,6 @@
/* No comment provided by engineer. */
"SUCCESSFUL_VERIFICATION_TITLE" = "Safety Number Verified!";
/* No comment provided by engineer. */
"TIMEOUT_CONTACTS_DETAIL" = "We couldn't fetch an updated contact list from the server. Please try again later.";
/* No comment provided by engineer. */
"TXT_CANCEL_TITLE" = "Cancel";

Loading…
Cancel
Save