From 1ef3423c67086601246053c2a3a5e639ac3596e8 Mon Sep 17 00:00:00 2001 From: Lin Junjie Date: Thu, 25 Jul 2013 20:14:55 +0800 Subject: Load last 10 emails in iOS example app --- .../iOS UI Test/iOS UI Test/MasterViewController.m | 46 +++++++++++++++------- 1 file changed, 32 insertions(+), 14 deletions(-) (limited to 'example') diff --git a/example/ios/iOS UI Test/iOS UI Test/MasterViewController.m b/example/ios/iOS UI Test/iOS UI Test/MasterViewController.m index 7540eee8..89173dbd 100644 --- a/example/ios/iOS UI Test/iOS UI Test/MasterViewController.m +++ b/example/ios/iOS UI Test/iOS UI Test/MasterViewController.m @@ -17,6 +17,8 @@ #define CLIENT_SECRET @"the-client-secret" #define KEYCHAIN_ITEM_NAME @"MailCore OAuth 2.0 Token" +#define NUMBER_OF_MESSAGES_TO_LOAD 10 + @interface MasterViewController () @property (nonatomic, strong) NSArray *messages; @@ -109,7 +111,7 @@ finishedRefreshWithFetcher:(GTMHTTPFetcher *)fetcher self.imapSession.connectionLogger = ^(void * connectionID, MCOConnectionLogType type, NSData * data) { @synchronized(weakSelf) { if (type != MCOConnectionLogTypeSentPrivate) { - NSLog(@"event logged:%p %i withData: %@", connectionID, type, [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); +// NSLog(@"event logged:%p %i withData: %@", connectionID, type, [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); } } }; @@ -134,21 +136,37 @@ finishedRefreshWithFetcher:(GTMHTTPFetcher *)fetcher (MCOIMAPMessagesRequestKindHeaders | MCOIMAPMessagesRequestKindStructure | MCOIMAPMessagesRequestKindInternalDate | MCOIMAPMessagesRequestKindHeaderSubject | MCOIMAPMessagesRequestKindFlags); - self.imapMessagesFetchOp = [self.imapSession fetchMessagesByUIDOperationWithFolder:@"INBOX" - requestKind:requestKind - uids:[MCOIndexSet indexSetWithRange:MCORangeMake(1, UINT64_MAX)]]; - [self.imapMessagesFetchOp setProgress:^(unsigned int progress) { - //NSLog(@"progress: %u", progress); - }]; - __weak MasterViewController *weakSelf = self; - [self.imapMessagesFetchOp start:^(NSError *error, NSArray *messages, MCOIndexSet *vanishedMessages) { - MasterViewController *strongSelf = weakSelf; - NSLog(@"fetched all messages."); + NSString *inboxFolder = @"INBOX"; + MCOIMAPFolderInfoOperation *inboxFolderInfo = [self.imapSession folderInfoOperation:inboxFolder]; + + [inboxFolderInfo start:^(NSError *error, MCOIMAPFolderInfo *info) + { + NSUInteger numberOfMessagesToLoad = + MIN([info messageCount], NUMBER_OF_MESSAGES_TO_LOAD); + + if (numberOfMessagesToLoad == 0) + return; + + self.imapMessagesFetchOp = + [self.imapSession fetchMessagesByNumberOperationWithFolder:inboxFolder + requestKind:requestKind + numbers: + [MCOIndexSet indexSetWithRange:MCORangeMake([info messageCount] - (numberOfMessagesToLoad - 1), (numberOfMessagesToLoad - 1))]]; + + [self.imapMessagesFetchOp setProgress:^(unsigned int progress) { + NSLog(@"Progress: %u of %u", progress, numberOfMessagesToLoad); + }]; - NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"header.date" ascending:NO]; - strongSelf.messages = [messages sortedArrayUsingDescriptors:@[sort]]; - [strongSelf.tableView reloadData]; + __weak MasterViewController *weakSelf = self; + [self.imapMessagesFetchOp start:^(NSError *error, NSArray *messages, MCOIndexSet *vanishedMessages) { + MasterViewController *strongSelf = weakSelf; + NSLog(@"fetched all messages."); + + NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"header.date" ascending:NO]; + strongSelf.messages = [messages sortedArrayUsingDescriptors:@[sort]]; + [strongSelf.tableView reloadData]; + }]; }]; } -- cgit v1.2.3