mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
Update views that show contacts to reflect updates.
// FREEBIE
This commit is contained in:
parent
c087c56b0c
commit
adfbcc3e27
|
@ -15,8 +15,9 @@
|
|||
static const NSUInteger ddLogLevel = DDLogLevelInfo;
|
||||
#endif
|
||||
|
||||
#import "iOSVersions.h"
|
||||
#import <SignalServiceKit/Asserts.h>
|
||||
#import "iOSVersions.h"
|
||||
#import "OWSDispatch.h"
|
||||
|
||||
#define SignalAlertView(title,msg) [[[UIAlertView alloc] initWithTitle:title message:msg delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", @"") otherButtonTitles:nil, nil] show]
|
||||
#define SignalReportError [Pastelog reportErrorAndSubmitLogsWithAlertTitle:NSLocalizedString(@"ERROR_WAS_DETECTED_TITLE", @"") alertBody:NSLocalizedString(@"ERROR_WAS_DETECTED_SUBMIT", @"")];
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
extern NSString *const OWSContactsManagerContactsDidChangeNotification;
|
||||
|
||||
@class UIFont;
|
||||
|
||||
/**
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
|
||||
typedef BOOL (^ContactSearchBlock)(id, NSUInteger, BOOL *);
|
||||
|
||||
NSString *const OWSContactsManagerContactsDidChangeNotification = @"OWSContactsManagerContactsDidChangeNotification";
|
||||
|
||||
@interface OWSContactsManager ()
|
||||
|
||||
@property id addressBookReference;
|
||||
|
@ -99,18 +101,26 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
|
|||
|
||||
- (void)intersectContacts {
|
||||
[[ContactsUpdater sharedUpdater] updateSignalContactIntersectionWithABContacts:self.allContacts
|
||||
success:^{
|
||||
DDLogInfo(@"%@ Successfully intersected contacts.", self.tag);
|
||||
}
|
||||
failure:^(NSError *error) {
|
||||
DDLogWarn(@"%@ Failed to intersect contacts with error: %@. Rescheduling", self.tag, error);
|
||||
success:^{
|
||||
DDLogInfo(@"%@ Successfully intersected contacts.", self.tag);
|
||||
[self fireContactsDidChange];
|
||||
}
|
||||
failure:^(NSError *error) {
|
||||
DDLogWarn(@"%@ Failed to intersect contacts with error: %@. Rescheduling", self.tag, error);
|
||||
|
||||
[NSTimer scheduledTimerWithTimeInterval:60
|
||||
target:self
|
||||
selector:@selector(intersectContacts)
|
||||
userInfo:nil
|
||||
repeats:NO];
|
||||
}];
|
||||
}
|
||||
|
||||
[NSTimer scheduledTimerWithTimeInterval:60
|
||||
target:self
|
||||
selector:@selector(intersectContacts)
|
||||
userInfo:nil
|
||||
repeats:NO];
|
||||
}];
|
||||
- (void)fireContactsDidChange {
|
||||
AssertIsOnMainThread();
|
||||
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:OWSContactsManagerContactsDidChangeNotification
|
||||
object:nil];
|
||||
}
|
||||
|
||||
- (void)pullLatestAddressBook {
|
||||
|
|
|
@ -77,6 +77,8 @@ NSString *const MessageComposeTableViewControllerCellContact = @"ContactTableVie
|
|||
_contactsManager = [Environment getCurrent].contactsManager;
|
||||
_phoneNumberAccountSet = [NSMutableSet set];
|
||||
|
||||
[self observeNotifications];
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
|
@ -89,9 +91,28 @@ NSString *const MessageComposeTableViewControllerCellContact = @"ContactTableVie
|
|||
|
||||
_contactsManager = [Environment getCurrent].contactsManager;
|
||||
|
||||
[self observeNotifications];
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)observeNotifications
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(contactsDidChange:)
|
||||
name:OWSContactsManagerContactsDidChangeNotification
|
||||
object:nil];
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
}
|
||||
|
||||
- (void)contactsDidChange:(NSNotification *)notification {
|
||||
[self updateContacts];
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
[self.navigationController.navigationBar setTranslucent:NO];
|
||||
|
@ -612,32 +633,36 @@ NSString *const MessageComposeTableViewControllerCellContact = @"ContactTableVie
|
|||
|
||||
- (void)refreshContacts {
|
||||
[[ContactsUpdater sharedUpdater] updateSignalContactIntersectionWithABContacts:self.contactsManager.allContacts
|
||||
success:^{
|
||||
self.contacts = self.contactsManager.signalContacts;
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self updateSearchResultsForSearchController:self.searchController];
|
||||
[self.tableView reloadData];
|
||||
[self updateAfterRefreshTry];
|
||||
});
|
||||
}
|
||||
failure:^(NSError *error) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
UIAlertView *alert =
|
||||
[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ERROR_WAS_DETECTED_TITLE", @"")
|
||||
message:NSLocalizedString(@"TIMEOUT_CONTACTS_DETAIL", @"")
|
||||
delegate:nil
|
||||
cancelButtonTitle:NSLocalizedString(@"OK", @"")
|
||||
otherButtonTitles:nil];
|
||||
[alert show];
|
||||
[self updateAfterRefreshTry];
|
||||
});
|
||||
}];
|
||||
|
||||
success:^{
|
||||
[self updateContacts];
|
||||
}
|
||||
failure:^(NSError *error) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
UIAlertView *alert =
|
||||
[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ERROR_WAS_DETECTED_TITLE", @"")
|
||||
message:NSLocalizedString(@"TIMEOUT_CONTACTS_DETAIL", @"")
|
||||
delegate:nil
|
||||
cancelButtonTitle:NSLocalizedString(@"OK", @"")
|
||||
otherButtonTitles:nil];
|
||||
[alert show];
|
||||
[self updateAfterRefreshTry];
|
||||
});
|
||||
}];
|
||||
|
||||
if ([self.contacts count] == 0) {
|
||||
[self showLoadingBackgroundView:YES];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)updateContacts {
|
||||
self.contacts = self.contactsManager.signalContacts;
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self updateSearchResultsForSearchController:self.searchController];
|
||||
[self.tableView reloadData];
|
||||
[self updateAfterRefreshTry];
|
||||
});
|
||||
}
|
||||
|
||||
#pragma mark - Navigation
|
||||
|
||||
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(nullable id)sender
|
||||
|
|
|
@ -68,6 +68,33 @@ static NSString *const kUnwindToMessagesViewSegue = @"UnwindToMessagesViewSegue"
|
|||
contactsUpdater:[Environment getCurrent].contactsUpdater];
|
||||
|
||||
_contactsManager = [Environment getCurrent].contactsManager;
|
||||
|
||||
[self observeNotifications];
|
||||
}
|
||||
|
||||
- (void)observeNotifications
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(contactsDidChange:)
|
||||
name:OWSContactsManagerContactsDidChangeNotification
|
||||
object:nil];
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
}
|
||||
|
||||
- (void)contactsDidChange:(NSNotification *)notification {
|
||||
[self updateContacts];
|
||||
}
|
||||
|
||||
- (void)updateContacts {
|
||||
AssertIsOnMainThread();
|
||||
|
||||
contacts = self.contactsManager.signalContacts;
|
||||
|
||||
[self.tableView reloadData];
|
||||
}
|
||||
|
||||
- (void)configWithThread:(TSGroupThread *)gThread {
|
||||
|
@ -78,7 +105,7 @@ static NSString *const kUnwindToMessagesViewSegue = @"UnwindToMessagesViewSegue"
|
|||
[super viewDidLoad];
|
||||
[self.navigationController.navigationBar setTranslucent:NO];
|
||||
|
||||
contacts = [Environment getCurrent].contactsManager.signalContacts;
|
||||
contacts = self.contactsManager.signalContacts;
|
||||
|
||||
|
||||
self.tableView.tableHeaderView.frame = CGRectMake(0, 0, 400, 44);
|
||||
|
|
Loading…
Reference in a new issue