From 851531a497f8b10c7794a89bd03b279cc768905b Mon Sep 17 00:00:00 2001 From: Alfredo Uribe Date: Wed, 10 Dec 2014 16:13:28 -0500 Subject: [PATCH 1/7] added features if share view open when going to feed menu, share view is hidden when scrolling past left limit, fire item refresh remove items from all feeds when feeds are deleted relocated cancelSearch call so that adding feed registers in datasource (previously stored feeds, would not show on list if re-added) updated failing tests --- .../Services/EZRFeedItemUpdateServiceTests.m | 33 +- .../EZRHomeCollectionViewDelegate.m | 14 + .../Controllers/Home/EZRHomeViewController.m | 1 + .../ScrollView/EZRHomeScrollViewDelegate.m | 1 - .../Controllers/Menu/EZRMenuViewController.m | 1 + .../Menu/TableView/EZRMenuTableViewDelegate.m | 25 +- .../Services/EZRCurrentFeedsProvider.h | 5 + .../Services/EZRCurrentFeedsProvider.m | 1 + .../Services/EZRFeedItemUpdateService.h | 5 + .../Services/EZRFeedItemUpdateService.m | 22 +- .../Storyboards/Main_iPhone.storyboard | 28 +- .../Supporting Files/Development-Info.plist | 2 +- .../Supporting Files/Production-Info.plist | 2 +- .../Supporting Files/Staging-Info.plist | 2 +- Podfile.lock | 4 +- Pods/Manifest.lock | 4 +- Pods/Pods.xcodeproj/project.pbxproj | 44092 ++++++++-------- Pods/SVProgressHUD/LICENSE.txt | 6 +- Pods/SVProgressHUD/README.md | 92 +- .../SVProgressHUD.bundle/error-black.png | Bin 1544 -> 0 bytes .../SVProgressHUD.bundle/error-black@2x.png | Bin 2001 -> 0 bytes .../SVProgressHUD.bundle/error.png | Bin 371 -> 455 bytes .../SVProgressHUD.bundle/error@2x.png | Bin 739 -> 1137 bytes .../SVProgressHUD.bundle/success-black.png | Bin 1718 -> 0 bytes .../SVProgressHUD.bundle/success-black@2x.png | Bin 2193 -> 0 bytes .../SVProgressHUD.bundle/success.png | Bin 508 -> 349 bytes .../SVProgressHUD.bundle/success@2x.png | Bin 872 -> 811 bytes .../SVProgressHUD/SVProgressHUD.h | 55 +- .../SVProgressHUD/SVProgressHUD.m | 872 +- 29 files changed, 22681 insertions(+), 22586 deletions(-) delete mode 100644 Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error-black.png delete mode 100644 Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error-black@2x.png delete mode 100644 Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success-black.png delete mode 100644 Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success-black@2x.png diff --git a/EasyReader - Unit Tests/Application/Services/EZRFeedItemUpdateServiceTests.m b/EasyReader - Unit Tests/Application/Services/EZRFeedItemUpdateServiceTests.m index 862b9bf..c288c19 100644 --- a/EasyReader - Unit Tests/Application/Services/EZRFeedItemUpdateServiceTests.m +++ b/EasyReader - Unit Tests/Application/Services/EZRFeedItemUpdateServiceTests.m @@ -14,9 +14,9 @@ @interface EZRFeedItemUpdateService (Test) -- (void)requestFiveMinutesOfFeedItems:(id)sender; -- (void)requestOneWeekOfFeedItems; -- (void)requestFeedItemsSince:(NSDate *)since; ++ (void)requestFiveMinutesOfFeedItems:(id)sender; ++ (void)requestOneWeekOfFeedItems; ++ (void)requestFeedItemsSince:(NSDate *)since; - (void)loadDefaultFeeds; - (BOOL)hasSetDefaultFeeds; @@ -49,31 +49,34 @@ - (void)tearDown - (void)testRequestFiveMinutesOfFeedItems { - [[partialMockService expect] requestFeedItemsSince:[OCMArg any]]; + [[[mockService expect] classMethod] requestFeedItemsSince:[OCMArg any]]; - [partialMockService requestFiveMinutesOfFeedItems:[OCMArg any]]; - [partialMockService verify]; + [[mockService class] requestFiveMinutesOfFeedItems:[OCMArg any]]; + + [mockService verify]; } - (void)testRequestOneWeekOfFeedItems { - [[partialMockService expect] requestFeedItemsSince:[OCMArg any]]; + [[[mockService expect] classMethod] requestFeedItemsSince:[OCMArg any]]; - [partialMockService requestOneWeekOfFeedItems]; - [partialMockService verify]; + [[mockService class] requestOneWeekOfFeedItems]; + + [mockService verify]; } - (void)testRequestFeedItemsSince { id date = [OCMockObject mockForClass:[NSDate class]]; - [[mockFeedItem expect] requestFeedItemsFromFeeds:[OCMArg any] - since:date - success:[OCMArg any] - failure:[OCMArg any]]; + [[[mockFeedItem expect] classMethod] requestFeedItemsFromFeeds:[OCMArg any] + since:date + success:[OCMArg any] + failure:[OCMArg any]]; - [partialMockService requestFeedItemsSince:date]; - [partialMockService verify]; + [[mockService class] requestFeedItemsSince:date]; + + [mockService verify]; } - (void)testLoadDefaultFeeds diff --git a/EasyReader/Application/Controllers/Home/CollectionView/EZRHomeCollectionViewDelegate.m b/EasyReader/Application/Controllers/Home/CollectionView/EZRHomeCollectionViewDelegate.m index 61443ac..3572579 100644 --- a/EasyReader/Application/Controllers/Home/CollectionView/EZRHomeCollectionViewDelegate.m +++ b/EasyReader/Application/Controllers/Home/CollectionView/EZRHomeCollectionViewDelegate.m @@ -13,6 +13,7 @@ #import "CSCollectionPageControl.h" #import "EZRGoogleAnalyticsService.h" +#import "EZRFeedItemUpdateService.h" @interface EZRHomeViewController (Additions) @@ -35,6 +36,7 @@ @interface EZRHomeCollectionViewDelegate () @implementation EZRHomeCollectionViewDelegate { FeedItem *previousFeedItem; + BOOL _scrollingAtStart; } @@ -49,6 +51,10 @@ - (void)scrollViewDidScroll:(UIScrollView *)scrollView FeedItem *currentFeedItem = self.collectionView.currentFeedItem; NSInteger pageIndex = self.collectionView.currentPageIndex; + if (scrollView.contentOffset.x < -50) { + _scrollingAtStart = YES; + } + if (previousFeedItem != self.collectionView.currentFeedItem) { [self.controller resetWebView]; @@ -65,6 +71,14 @@ - (void)scrollViewDidScroll:(UIScrollView *)scrollView } } +-(void) scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate +{ + if (_scrollingAtStart) { + [EZRFeedItemUpdateService requestFiveMinutesOfFeedItems:self]; + } + +} + /** * Scrolls the window down when a title is tapped */ diff --git a/EasyReader/Application/Controllers/Home/EZRHomeViewController.m b/EasyReader/Application/Controllers/Home/EZRHomeViewController.m index c342d1d..98ab6c9 100644 --- a/EasyReader/Application/Controllers/Home/EZRHomeViewController.m +++ b/EasyReader/Application/Controllers/Home/EZRHomeViewController.m @@ -344,6 +344,7 @@ - (void) visibleFeedItemsDidChange:(EZRCurrentFeedsProvider *)currentFeedService // Receives left menu link click - (IBAction)buttonLeftMenu_touchUpInside_goToMenu:(id)sender { + [self.scrollView_vertical setContentOffset:CGPointMake(0,0) animated:NO]; [[self rootViewController] toggleLeftSideMenuCompletion:^{}]; } diff --git a/EasyReader/Application/Controllers/Home/ScrollView/EZRHomeScrollViewDelegate.m b/EasyReader/Application/Controllers/Home/ScrollView/EZRHomeScrollViewDelegate.m index ab387e2..8feac9d 100644 --- a/EasyReader/Application/Controllers/Home/ScrollView/EZRHomeScrollViewDelegate.m +++ b/EasyReader/Application/Controllers/Home/ScrollView/EZRHomeScrollViewDelegate.m @@ -66,7 +66,6 @@ - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL } /** - * * * @param scrollVsiew the */ diff --git a/EasyReader/Application/Controllers/Menu/EZRMenuViewController.m b/EasyReader/Application/Controllers/Menu/EZRMenuViewController.m index cfad358..7f65695 100644 --- a/EasyReader/Application/Controllers/Menu/EZRMenuViewController.m +++ b/EasyReader/Application/Controllers/Menu/EZRMenuViewController.m @@ -106,6 +106,7 @@ - (void)applyMenuStyles - (void)feedsDidChange:(EZRCurrentFeedsProvider *)currentFeedProvider feeds:(NSArray *)feeds { ((CLDArrayTableViewDataSource *)self.tableView_menu.dataSource).source = self.currentFeedsProvider.feeds; + [self.tableView_menu reloadData]; } diff --git a/EasyReader/Application/Controllers/Menu/TableView/EZRMenuTableViewDelegate.m b/EasyReader/Application/Controllers/Menu/TableView/EZRMenuTableViewDelegate.m index 6b41ee4..bbe9b2b 100644 --- a/EasyReader/Application/Controllers/Menu/TableView/EZRMenuTableViewDelegate.m +++ b/EasyReader/Application/Controllers/Menu/TableView/EZRMenuTableViewDelegate.m @@ -14,6 +14,7 @@ #import "EZRMenuSearchController.h" #import "EZRRootViewController.h" +#import "EZRCurrentFeedsProvider.h" #import "Feed.h" #import "User.h" @@ -59,32 +60,38 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath NSDictionary *feedData = ((EZRSearchFeedCell *)cell).feedData; Feed *existingFeed = [Feed MR_findFirstByAttribute:@"id" withValue:feedData[@"id"]]; + [self.searchController cancelSearch]; if (!existingFeed) { UIViewController *rootVC = [[[UIApplication sharedApplication].delegate window] rootViewController]; - [Feed createFeedWithUrl:feedData[@"url"] success:^(id responseObject, NSInteger httpStatus) { - [[EZRGoogleAnalyticsService shared] sendView:@"Feed Added"]; - [TSMessage showNotificationInViewController:rootVC title:@"Easy Reader" subtitle:@"The selected feed has been added to the menu. Please allow a few minutes for new items to populate." type:TSMessageNotificationTypeSuccess]; - } failure:^(id responseObject, NSInteger httpStatus, NSError *error) { - [TSMessage showNotificationInViewController:rootVC title:@"Easy Reader" subtitle:@"There was an error adding that feed. Please try again later." type:TSMessageNotificationTypeError]; + [Feed createFeedWithUrl:feedData[@"url"] + success:^(id responseObject, NSInteger httpStatus) { + [[EZRGoogleAnalyticsService shared] sendView:@"Feed Added"]; + [TSMessage showNotificationInViewController:rootVC + title:@"Easy Reader" + subtitle:@"The selected feed has been added to the menu. Please allow a few minutes for new items to populate." + type:TSMessageNotificationTypeSuccess]; + } + failure:^(id responseObject, NSInteger httpStatus, NSError *error) { + [TSMessage showNotificationInViewController:rootVC + title:@"Easy Reader" + subtitle:@"There was an error adding that feed. Please try again later." + type:TSMessageNotificationTypeError]; }]; } else if (![[User current].feeds containsObject:existingFeed]) { [[User current] addFeedsObject:existingFeed]; - [self postSelectedNotificationForFeed:existingFeed]; } - [self.searchController cancelSearch]; [tableView reloadData]; } else { Feed *feed = ((EZRMenuFeedCell *)cell).feed; [self postSelectedNotificationForFeed:feed]; + [((MFSideMenuContainerViewController *)tableView.window.rootViewController) setMenuState:MFSideMenuStateClosed]; } - - [((MFSideMenuContainerViewController *)tableView.window.rootViewController) setMenuState:MFSideMenuStateClosed]; } /** diff --git a/EasyReader/Application/Services/EZRCurrentFeedsProvider.h b/EasyReader/Application/Services/EZRCurrentFeedsProvider.h index 86269d6..f6227e9 100644 --- a/EasyReader/Application/Services/EZRCurrentFeedsProvider.h +++ b/EasyReader/Application/Services/EZRCurrentFeedsProvider.h @@ -36,4 +36,9 @@ */ + (EZRCurrentFeedsProvider *) shared; +/** + * Sets shared instance of the current feeds service + */ ++ (void) setShared:(EZRCurrentFeedsProvider *)shared; + @end diff --git a/EasyReader/Application/Services/EZRCurrentFeedsProvider.m b/EasyReader/Application/Services/EZRCurrentFeedsProvider.m index b1cf053..768180a 100644 --- a/EasyReader/Application/Services/EZRCurrentFeedsProvider.m +++ b/EasyReader/Application/Services/EZRCurrentFeedsProvider.m @@ -136,6 +136,7 @@ - (void) userFeedsDidChange:(User *)currentUser oldFeeds:(NSSet *)oldFeeds newFe NSMutableSet *feedItems = [NSMutableSet setWithArray:self.feedItems]; + oldFeeds = [NSSet setWithArray:self.feeds]; NSMutableArray *addedFeeds = [[newFeeds allObjects] mutableCopy]; NSMutableArray *removedFeeds = [[oldFeeds allObjects] mutableCopy]; diff --git a/EasyReader/Application/Services/EZRFeedItemUpdateService.h b/EasyReader/Application/Services/EZRFeedItemUpdateService.h index ecd7141..eb74ae9 100644 --- a/EasyReader/Application/Services/EZRFeedItemUpdateService.h +++ b/EasyReader/Application/Services/EZRFeedItemUpdateService.h @@ -18,4 +18,9 @@ */ - (void) start; +/** + * Requests five minutes of feed items + */ ++ (void)requestFiveMinutesOfFeedItems:(id)sender; + @end diff --git a/EasyReader/Application/Services/EZRFeedItemUpdateService.m b/EasyReader/Application/Services/EZRFeedItemUpdateService.m index 5e63e41..198767c 100644 --- a/EasyReader/Application/Services/EZRFeedItemUpdateService.m +++ b/EasyReader/Application/Services/EZRFeedItemUpdateService.m @@ -21,26 +21,30 @@ - (void) start } else { - [self requestOneWeekOfFeedItems]; + [[self class] requestOneWeekOfFeedItems]; } + [[self class] feedInvocations]; +} + ++ (void) feedInvocations +{ NSMethodSignature *mySignature = [EZRFeedItemUpdateService - instanceMethodSignatureForSelector:@selector(requestFiveMinutesOfFeedItems:)]; + methodSignatureForSelector:@selector(requestFiveMinutesOfFeedItems:)]; - NSInvocation *myInvocation = [NSInvocation - invocationWithMethodSignature:mySignature]; + NSInvocation *myInvocation = [NSInvocation invocationWithMethodSignature:mySignature]; [myInvocation setTarget:self]; [myInvocation setSelector:@selector(requestFiveMinutesOfFeedItems:)]; - int interval = 10 * 1; + int interval = 1 * 10; [NSTimer scheduledTimerWithTimeInterval:interval invocation:myInvocation repeats:YES]; } #pragma mark - Private Methods -- (void)requestFiveMinutesOfFeedItems:(id)sender ++ (void)requestFiveMinutesOfFeedItems:(id)sender { NSCalendar *calendar = [NSCalendar currentCalendar]; NSDate *today = [NSDate date]; @@ -54,13 +58,13 @@ - (void)requestFiveMinutesOfFeedItems:(id)sender NSLog(@"Invocation ran!"); } -- (void)requestOneWeekOfFeedItems ++ (void)requestOneWeekOfFeedItems { NSCalendar *calendar = [NSCalendar currentCalendar]; NSDate *today = [NSDate date]; NSDateComponents *oneWeekAgoComponents = [[NSDateComponents alloc] init]; - [oneWeekAgoComponents setWeek:-1]; + [oneWeekAgoComponents setWeekOfMonth:-1]; NSDate *oneWeekAgo = [calendar dateByAddingComponents:oneWeekAgoComponents toDate:today options:0]; [self requestFeedItemsSince:oneWeekAgo]; @@ -68,7 +72,7 @@ - (void)requestOneWeekOfFeedItems NSLog(@"Setup Invocation"); } -- (void)requestFeedItemsSince:(NSDate *)since ++ (void)requestFeedItemsSince:(NSDate *)since { [FeedItem requestFeedItemsFromFeeds:[[User current] feeds] since:since diff --git a/EasyReader/Application/Storyboards/Main_iPhone.storyboard b/EasyReader/Application/Storyboards/Main_iPhone.storyboard index faa7fad..0a5066a 100644 --- a/EasyReader/Application/Storyboards/Main_iPhone.storyboard +++ b/EasyReader/Application/Storyboards/Main_iPhone.storyboard @@ -1,8 +1,8 @@ - + - - + + @@ -19,15 +19,12 @@ - - - @@ -45,7 +42,6 @@ - @@ -53,18 +49,15 @@ - - - @@ -150,7 +141,6 @@ - @@ -158,7 +148,6 @@