From 47ae6ccf76fdd9acc4a61fa93a6ffc322fafedd7 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Thu, 16 Feb 2017 22:47:12 -0500 Subject: [PATCH] Don't show the "no contacts" mode of new conversation view again after it has been dismissed. // FREEBIE --- .../src/environment/PropertyListPreferences.h | 3 ++ .../src/environment/PropertyListPreferences.m | 13 +++++ .../MessageComposeTableViewController.m | 47 ++++++++++--------- 3 files changed, 41 insertions(+), 22 deletions(-) diff --git a/Signal/src/environment/PropertyListPreferences.h b/Signal/src/environment/PropertyListPreferences.h index b5590634d..d43d84977 100644 --- a/Signal/src/environment/PropertyListPreferences.h +++ b/Signal/src/environment/PropertyListPreferences.h @@ -55,6 +55,9 @@ extern NSString *const PropertyListPreferencesKeyEnableDebugLog; + (nullable NSString *)lastRanVersion; + (NSString *)setAndGetCurrentVersion; +- (BOOL)hasDeclinedNoContactsView; +- (void)setHasDeclinedNoContactsView:(BOOL)value; + #pragma mark - Calling #pragma mark Callkit diff --git a/Signal/src/environment/PropertyListPreferences.m b/Signal/src/environment/PropertyListPreferences.m index fe5689286..e2f628bc7 100644 --- a/Signal/src/environment/PropertyListPreferences.m +++ b/Signal/src/environment/PropertyListPreferences.m @@ -25,6 +25,7 @@ NSString *const PropertyListPreferencesKeyLastRecordedVoipToken = @"LastRecorded NSString *const PropertyListPreferencesKeyCallKitEnabled = @"CallKitEnabled"; NSString *const PropertyListPreferencesKeyCallKitPrivacyEnabled = @"CallKitPrivacyEnabled"; NSString *const PropertyListPreferencesKeyCallsHideIPAddress = @"CallsHideIPAddress"; +NSString *const PropertyListPreferencesKeyHasDeclinedNoContactsView = @"hasDeclinedNoContactsView"; @implementation PropertyListPreferences @@ -166,6 +167,18 @@ NSString *const PropertyListPreferencesKeyCallsHideIPAddress = @"CallsHideIPAddr return currentVersion; } +- (BOOL)hasDeclinedNoContactsView +{ + NSNumber *preference = [self tryGetValueForKey:PropertyListPreferencesKeyHasDeclinedNoContactsView]; + // Default to NO. + return preference ? [preference boolValue] : NO; +} + +- (void)setHasDeclinedNoContactsView:(BOOL)value +{ + [self setValueForKey:PropertyListPreferencesKeyHasDeclinedNoContactsView toValue:@(value)]; +} + #pragma mark - Calling #pragma mark CallKit diff --git a/Signal/src/view controllers/MessageComposeTableViewController.m b/Signal/src/view controllers/MessageComposeTableViewController.m index 3d47f9707..65d7bddd3 100644 --- a/Signal/src/view controllers/MessageComposeTableViewController.m +++ b/Signal/src/view controllers/MessageComposeTableViewController.m @@ -41,7 +41,7 @@ NS_ASSUME_NONNULL_BEGIN // which are known to correspond to Signal accounts. @property (nonatomic, nonnull, readonly) NSMutableSet *phoneNumberAccountSet; -@property (nonatomic) BOOL isBackgroundViewHidden; +@property (nonatomic) BOOL isNoContactsViewVisible; @end @@ -138,9 +138,7 @@ NSString *const MessageComposeTableViewControllerCellContact = @"ContactTableVie - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - if ([self.contacts count] == 0) { - [self showEmptyBackgroundView:YES]; - } + [self showEmptyBackgroundViewIfNecessary]; } - (UILabel *)createLabelWithFirstLine:(NSString *)firstLine andSecondLine:(NSString *)secondLine { @@ -225,9 +223,10 @@ NSString *const MessageComposeTableViewControllerCellContact = @"ContactTableVie } - (void)hideBackgroundView { - self.isBackgroundViewHidden = YES; + [[Environment preferences] setHasDeclinedNoContactsView:YES]; - [self showEmptyBackgroundView:NO]; +// [self showEmptyBackgroundView:NO]; + [self showEmptyBackgroundViewIfNecessary]; } - (void)presentInviteFlow @@ -238,7 +237,7 @@ NSString *const MessageComposeTableViewControllerCellContact = @"ContactTableVie } - (void)showLoadingBackgroundView:(BOOL)show { - if (show && !self.isBackgroundViewHidden) { + if (show) { self.searchController.searchBar.hidden = YES; self.tableView.backgroundView = _loadingBackgroundView; self.refreshControl = nil; @@ -250,10 +249,20 @@ NSString *const MessageComposeTableViewControllerCellContact = @"ContactTableVie } } -- (void)showEmptyBackgroundView:(BOOL)show { - if (show) { +- (void)showEmptyBackgroundViewIfNecessary { + self.isNoContactsViewVisible = ([self.contacts count] == 0 && + ![[Environment preferences] hasDeclinedNoContactsView]); +} + +- (void)setIsNoContactsViewVisible:(BOOL)isNoContactsViewVisible { + if (isNoContactsViewVisible == _isNoContactsViewVisible) { + return; + } + + _isNoContactsViewVisible = isNoContactsViewVisible; + + if (isNoContactsViewVisible) { self.refreshControl = nil; - self.inviteCell.hidden = YES; self.searchController.searchBar.hidden = YES; self.tableView.backgroundView = self.noSignalContactsView; self.tableView.backgroundView.opaque = YES; @@ -262,12 +271,9 @@ NSString *const MessageComposeTableViewControllerCellContact = @"ContactTableVie self.refreshControl.enabled = YES; self.searchController.searchBar.hidden = NO; self.tableView.backgroundView = nil; - self.inviteCell.hidden = NO; } - for (UITableViewCell *cell in self.tableView.visibleCells) { - cell.hidden = show; - } + [self.tableView reloadData]; } #pragma mark - Initializers @@ -514,7 +520,9 @@ NSString *const MessageComposeTableViewControllerCellContact = @"ContactTableVie #pragma mark - Table View Data Source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return MessageComposeTableViewControllerSection_Count; + return (self.isNoContactsViewVisible + ? 0 + : MessageComposeTableViewControllerSection_Count); } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { @@ -577,14 +585,12 @@ NSString *const MessageComposeTableViewControllerCellContact = @"ContactTableVie phoneNumber]; return inviteViaSMSCell; } else if (indexPath.section == MessageComposeTableViewControllerSectionInviteFlow) { - self.inviteCell.hidden = NO; return self.inviteCell; } else { OWSAssert(indexPath.section == MessageComposeTableViewControllerSectionContacts) ContactTableViewCell *cell = (ContactTableViewCell *)[tableView dequeueReusableCellWithIdentifier:MessageComposeTableViewControllerCellContact]; - cell.hidden = NO; [cell configureWithContact:[self contactForIndexPath:indexPath] contactsManager:self.contactsManager]; @@ -664,11 +670,8 @@ NSString *const MessageComposeTableViewControllerCellContact = @"ContactTableVie [self.refreshControl endRefreshing]; [self showLoadingBackgroundView:NO]; - if ([self.contacts count] == 0) { - [self showEmptyBackgroundView:YES]; - } else { - [self showEmptyBackgroundView:NO]; - } + + [self showEmptyBackgroundViewIfNecessary]; } - (void)refreshContacts {