mirror of https://github.com/oxen-io/session-ios
Fixes #708
parent
a1d0b6b1ad
commit
ea37894846
@ -1,15 +0,0 @@
|
|||||||
//
|
|
||||||
// ContactsViewController.h
|
|
||||||
// Signal
|
|
||||||
//
|
|
||||||
// Created by Dylan Bourgeois on 29/10/14.
|
|
||||||
// Copyright (c) 2014 Open Whisper Systems. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
#import <UIKit/UIKit.h>
|
|
||||||
|
|
||||||
@interface ContactsViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
|
|
||||||
@property(nonatomic,strong) IBOutlet UISearchBar* searchBar;
|
|
||||||
@property(nonatomic,strong) IBOutlet UITableView* tableView;
|
|
||||||
@property(nonatomic,strong) IBOutlet UILabel* phoneNumberLabel;
|
|
||||||
@end
|
|
@ -1,165 +0,0 @@
|
|||||||
//
|
|
||||||
// ContactsViewController.m
|
|
||||||
// Signal
|
|
||||||
//
|
|
||||||
// Created by Dylan Bourgeois on 29/10/14.
|
|
||||||
// Copyright (c) 2014 Open Whisper Systems. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
#import "Environment.h"
|
|
||||||
#import "Contact.h"
|
|
||||||
#import "ContactsManager.h"
|
|
||||||
#import "PhoneNumberDirectoryFilterManager.h"
|
|
||||||
|
|
||||||
#import "DemoDataFactory.h"
|
|
||||||
|
|
||||||
#import <AddressBook/AddressBook.h>
|
|
||||||
#import "ContactsViewController.h"
|
|
||||||
|
|
||||||
static NSString *const CONTACT_BROWSE_TABLE_CELL_IDENTIFIER = @"ContactTableViewCell";
|
|
||||||
|
|
||||||
|
|
||||||
@interface ContactsViewController () {
|
|
||||||
NSMutableDictionary *_latestAlphabeticalContacts;
|
|
||||||
NSArray *_latestSortedAlphabeticalContactKeys;
|
|
||||||
NSArray *_latestContacts;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation ContactsViewController
|
|
||||||
|
|
||||||
- (void)viewDidLoad {
|
|
||||||
[super viewDidLoad];
|
|
||||||
|
|
||||||
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
|
|
||||||
|
|
||||||
[self.tableView setContentOffset:CGPointMake(0, self.searchBar.frame.size.height)];
|
|
||||||
|
|
||||||
[self setupContacts];
|
|
||||||
[self.tableView reloadData];
|
|
||||||
|
|
||||||
|
|
||||||
// Uncomment the following line to preserve selection between presentations.
|
|
||||||
// self.clearsSelectionOnViewWillAppear = NO;
|
|
||||||
|
|
||||||
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
|
|
||||||
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)didReceiveMemoryWarning {
|
|
||||||
[super didReceiveMemoryWarning];
|
|
||||||
// Dispose of any resources that can be recreated.
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - Contact functions
|
|
||||||
|
|
||||||
- (void)setupContacts {
|
|
||||||
// ObservableValue *observableContacts = Environment.getCurrent.contactsManager.getObservableWhisperUsers;
|
|
||||||
//
|
|
||||||
// [observableContacts watchLatestValue:^(NSArray *latestContacts) {
|
|
||||||
// _latestContacts = latestContacts;
|
|
||||||
// } onThread:NSThread.mainThread untilCancelled:nil];
|
|
||||||
_latestContacts = [DemoDataFactory makeFakeContacts];
|
|
||||||
|
|
||||||
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES];
|
|
||||||
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
|
|
||||||
_latestSortedAlphabeticalContactKeys = [_latestContacts sortedArrayUsingDescriptors:sortDescriptors];
|
|
||||||
|
|
||||||
_latestAlphabeticalContacts = [self alphabetDictionaryInit];
|
|
||||||
|
|
||||||
for (Contact*contact in _latestContacts)
|
|
||||||
{
|
|
||||||
NSString * firstLetter = [contact.firstName substringToIndex:1];
|
|
||||||
|
|
||||||
NSMutableArray * mutArray = [[_latestAlphabeticalContacts objectForKey:firstLetter] mutableCopy];
|
|
||||||
if (![mutArray containsObject:contact])
|
|
||||||
[mutArray addObject:contact];
|
|
||||||
[_latestAlphabeticalContacts setObject:mutArray forKey:firstLetter];
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
_latestSortedAlphabeticalContactKeys = [[_latestAlphabeticalContacts allKeys]sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
- (NSArray *)contactsForSectionIndex:(NSUInteger)index {
|
|
||||||
return [_latestAlphabeticalContacts valueForKey:_latestSortedAlphabeticalContactKeys[index]];
|
|
||||||
}
|
|
||||||
|
|
||||||
-(NSMutableDictionary*)alphabetDictionaryInit
|
|
||||||
{
|
|
||||||
NSDictionary * dic;
|
|
||||||
|
|
||||||
dic = @{
|
|
||||||
@"A": @[],
|
|
||||||
@"B": @[],
|
|
||||||
@"C": @[],
|
|
||||||
@"D": @[],
|
|
||||||
@"E": @[],
|
|
||||||
@"F": @[],
|
|
||||||
@"G": @[],
|
|
||||||
@"H": @[],
|
|
||||||
@"I": @[],
|
|
||||||
@"J": @[],
|
|
||||||
@"K": @[],
|
|
||||||
@"L": @[],
|
|
||||||
@"M": @[],
|
|
||||||
@"N": @[],
|
|
||||||
@"O": @[],
|
|
||||||
@"P": @[],
|
|
||||||
@"Q": @[],
|
|
||||||
@"R": @[],
|
|
||||||
@"S": @[],
|
|
||||||
@"T": @[],
|
|
||||||
@"U": @[],
|
|
||||||
@"V": @[],
|
|
||||||
@"W": @[],
|
|
||||||
@"X": @[],
|
|
||||||
@"Y": @[],
|
|
||||||
@"Z": @[],
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
return [dic mutableCopy];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - Table view data source
|
|
||||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
|
||||||
return (NSInteger)[[self contactsForSectionIndex:(NSUInteger)section] count];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
|
|
||||||
if ([[self contactsForSectionIndex:(NSUInteger)section] count])
|
|
||||||
return _latestSortedAlphabeticalContactKeys[(NSUInteger)section];
|
|
||||||
else return nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
|
|
||||||
return (NSInteger)[[_latestAlphabeticalContacts allKeys] count];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
|
|
||||||
{
|
|
||||||
return _latestSortedAlphabeticalContactKeys;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
|
||||||
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CONTACT_BROWSE_TABLE_CELL_IDENTIFIER];
|
|
||||||
|
|
||||||
if (!cell) {
|
|
||||||
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
|
|
||||||
reuseIdentifier:CONTACT_BROWSE_TABLE_CELL_IDENTIFIER];
|
|
||||||
}
|
|
||||||
|
|
||||||
NSArray *contactSection = [self contactsForSectionIndex:(NSUInteger)indexPath.section];
|
|
||||||
Contact *contact = contactSection[(NSUInteger)indexPath.row];
|
|
||||||
|
|
||||||
//TODO: real setup of custom cell
|
|
||||||
cell.textLabel.text = contact.firstName;
|
|
||||||
|
|
||||||
return cell;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
Loading…
Reference in New Issue