Home view cell v. group blocking

pull/1/head
Michael Kirk 7 years ago
parent 2c9d905a16
commit 809b3766c1

@ -46,19 +46,17 @@ class ConversationSearchViewController: UITableViewController {
case messages case messages
} }
var blockedPhoneNumberSet = Set<String>()
private var hasThemeChanged = false private var hasThemeChanged = false
var blockingManager: OWSBlockingManager {
return OWSBlockingManager.shared()
}
// MARK: View Lifecycle // MARK: View Lifecycle
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
// MJK TODO
let blockingManager = OWSBlockingManager.shared()
blockedPhoneNumberSet = Set(blockingManager.blockedPhoneNumbers())
tableView.rowHeight = UITableViewAutomaticDimension tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 60 tableView.estimatedRowHeight = 60
tableView.separatorColor = Theme.hairlineColor tableView.separatorColor = Theme.hairlineColor
@ -216,7 +214,7 @@ class ConversationSearchViewController: UITableViewController {
owsFail("searchResult was unexpectedly nil") owsFail("searchResult was unexpectedly nil")
return UITableViewCell() return UITableViewCell()
} }
cell.configure(withThread: searchResult.thread, contactsManager: contactsManager, blockedPhoneNumber: self.blockedPhoneNumberSet) cell.configure(withThread: searchResult.thread, contactsManager: contactsManager, isBlocked: isBlocked(thread: searchResult.thread))
return cell return cell
case .contacts: case .contacts:
guard let cell = tableView.dequeueReusableCell(withIdentifier: ContactTableViewCell.reuseIdentifier()) as? ContactTableViewCell else { guard let cell = tableView.dequeueReusableCell(withIdentifier: ContactTableViewCell.reuseIdentifier()) as? ContactTableViewCell else {
@ -266,7 +264,7 @@ class ConversationSearchViewController: UITableViewController {
cell.configure(withThread: searchResult.thread, cell.configure(withThread: searchResult.thread,
contactsManager: contactsManager, contactsManager: contactsManager,
blockedPhoneNumber: self.blockedPhoneNumberSet, isBlocked: isBlocked(thread: searchResult.thread),
overrideSnippet: overrideSnippet, overrideSnippet: overrideSnippet,
overrideDate: overrideDate) overrideDate: overrideDate)
@ -392,6 +390,12 @@ class ConversationSearchViewController: UITableViewController {
override func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { override func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
delegate?.conversationSearchViewWillBeginDragging() delegate?.conversationSearchViewWillBeginDragging()
} }
// MARK: -
private func isBlocked(thread: ThreadViewModel) -> Bool {
return self.blockingManager.isThreadBlocked(thread.threadRecord)
}
} }
class EmptySearchResultCell: UITableViewCell { class EmptySearchResultCell: UITableViewCell {

@ -14,11 +14,11 @@ NS_ASSUME_NONNULL_BEGIN
- (void)configureWithThread:(ThreadViewModel *)thread - (void)configureWithThread:(ThreadViewModel *)thread
contactsManager:(OWSContactsManager *)contactsManager contactsManager:(OWSContactsManager *)contactsManager
blockedPhoneNumberSet:(NSSet<NSString *> *)blockedPhoneNumberSet; isBlocked:(BOOL)isBlocked;
- (void)configureWithThread:(ThreadViewModel *)thread - (void)configureWithThread:(ThreadViewModel *)thread
contactsManager:(OWSContactsManager *)contactsManager contactsManager:(OWSContactsManager *)contactsManager
blockedPhoneNumberSet:(NSSet<NSString *> *)blockedPhoneNumberSet isBlocked:(BOOL)isBlocked
overrideSnippet:(nullable NSAttributedString *)overrideSnippet overrideSnippet:(nullable NSAttributedString *)overrideSnippet
overrideDate:(nullable NSDate *)overrideDate; overrideDate:(nullable NSDate *)overrideDate;

@ -174,25 +174,24 @@ NS_ASSUME_NONNULL_BEGIN
- (void)configureWithThread:(ThreadViewModel *)thread - (void)configureWithThread:(ThreadViewModel *)thread
contactsManager:(OWSContactsManager *)contactsManager contactsManager:(OWSContactsManager *)contactsManager
blockedPhoneNumberSet:(NSSet<NSString *> *)blockedPhoneNumberSet isBlocked:(BOOL)isBlocked
{ {
[self configureWithThread:thread [self configureWithThread:thread
contactsManager:contactsManager contactsManager:contactsManager
blockedPhoneNumberSet:blockedPhoneNumberSet isBlocked:isBlocked
overrideSnippet:nil overrideSnippet:nil
overrideDate:nil]; overrideDate:nil];
} }
- (void)configureWithThread:(ThreadViewModel *)thread - (void)configureWithThread:(ThreadViewModel *)thread
contactsManager:(OWSContactsManager *)contactsManager contactsManager:(OWSContactsManager *)contactsManager
blockedPhoneNumberSet:(NSSet<NSString *> *)blockedPhoneNumberSet isBlocked:(BOOL)isBlocked
overrideSnippet:(nullable NSAttributedString *)overrideSnippet overrideSnippet:(nullable NSAttributedString *)overrideSnippet
overrideDate:(nullable NSDate *)overrideDate overrideDate:(nullable NSDate *)overrideDate
{ {
OWSAssertIsOnMainThread(); OWSAssertIsOnMainThread();
OWSAssert(thread); OWSAssert(thread);
OWSAssert(contactsManager); OWSAssert(contactsManager);
OWSAssert(blockedPhoneNumberSet);
[OWSTableItem configureCell:self]; [OWSTableItem configureCell:self];
@ -215,8 +214,7 @@ NS_ASSUME_NONNULL_BEGIN
if (overrideSnippet) { if (overrideSnippet) {
self.snippetLabel.attributedText = overrideSnippet; self.snippetLabel.attributedText = overrideSnippet;
} else { } else {
self.snippetLabel.attributedText = self.snippetLabel.attributedText = [self attributedSnippetForThread:thread isBlocked:isBlocked];
[self attributedSnippetForThread:thread blockedPhoneNumberSet:blockedPhoneNumberSet];
} }
self.dateTimeLabel.text self.dateTimeLabel.text
@ -341,30 +339,23 @@ NS_ASSUME_NONNULL_BEGIN
contactsManager:contactsManager]; contactsManager:contactsManager];
} }
- (NSAttributedString *)attributedSnippetForThread:(ThreadViewModel *)thread - (NSAttributedString *)attributedSnippetForThread:(ThreadViewModel *)thread isBlocked:(BOOL)isBlocked
blockedPhoneNumberSet:(NSSet<NSString *> *)blockedPhoneNumberSet
{ {
OWSAssert(thread); OWSAssert(thread);
BOOL isBlocked = NO;
// FIXME
if (!thread.isGroupThread) {
NSString *contactIdentifier = thread.contactIdentifier;
isBlocked = [blockedPhoneNumberSet containsObject:contactIdentifier];
}
BOOL hasUnreadMessages = thread.hasUnreadMessages; BOOL hasUnreadMessages = thread.hasUnreadMessages;
NSMutableAttributedString *snippetText = [NSMutableAttributedString new]; NSMutableAttributedString *snippetText = [NSMutableAttributedString new];
if (isBlocked) { if (isBlocked) {
// If thread is blocked, don't show a snippet or mute status. // If thread is blocked, don't show a snippet or mute status.
[snippetText [snippetText appendAttributedString:
appendAttributedString:[[NSAttributedString alloc] [[NSAttributedString alloc]
initWithString:NSLocalizedString(@"HOME_VIEW_BLOCKED_CONTACT_CONVERSATION", initWithString:NSLocalizedString(@"HOME_VIEW_BLOCKED_CONVERSATION",
@"A label for conversations with blocked users.") @"Table cell subtitle label for a conversation the user has blocked.")
attributes:@{ attributes:@{
NSFontAttributeName : self.snippetFont.ows_mediumWeight, NSFontAttributeName : self.snippetFont.ows_mediumWeight,
NSForegroundColorAttributeName : [Theme primaryColor], NSForegroundColorAttributeName : [Theme primaryColor],
}]]; }]];
} else { } else {
if ([thread isMuted]) { if ([thread isMuted]) {
[snippetText appendAttributedString:[[NSAttributedString alloc] [snippetText appendAttributedString:[[NSAttributedString alloc]

@ -840,9 +840,9 @@ NSString *const kArchivedConversationsReuseIdentifier = @"kArchivedConversations
OWSAssert(cell); OWSAssert(cell);
ThreadViewModel *thread = [self threadViewModelForIndexPath:indexPath]; ThreadViewModel *thread = [self threadViewModelForIndexPath:indexPath];
[cell configureWithThread:thread
contactsManager:self.contactsManager BOOL isBlocked = [self.blockingManager isThreadBlocked:thread.threadRecord];
blockedPhoneNumberSet:self.blockedPhoneNumberSet]; [cell configureWithThread:thread contactsManager:self.contactsManager isBlocked:isBlocked];
return cell; return cell;
} }

@ -1020,8 +1020,8 @@
/* Label for 'archived conversations' button. */ /* Label for 'archived conversations' button. */
"HOME_VIEW_ARCHIVED_CONVERSATIONS" = "Archived Conversations"; "HOME_VIEW_ARCHIVED_CONVERSATIONS" = "Archived Conversations";
/* A label for conversations with blocked users. */ /* Table cell subtitle label for a conversation the user has blocked. */
"HOME_VIEW_BLOCKED_CONTACT_CONVERSATION" = "Blocked"; "HOME_VIEW_BLOCKED_CONVERSATION" = "Blocked";
/* Placeholder text for search bar which filters conversations. */ /* Placeholder text for search bar which filters conversations. */
"HOME_VIEW_CONVERSATION_SEARCHBAR_PLACEHOLDER" = "Search"; "HOME_VIEW_CONVERSATION_SEARCHBAR_PLACEHOLDER" = "Search";

Loading…
Cancel
Save