Skip to content

Commit 851531a

Browse files
author
Alfredo Uribe
committed
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
1 parent f6380bc commit 851531a

29 files changed

Lines changed: 22681 additions & 22586 deletions

EasyReader - Unit Tests/Application/Services/EZRFeedItemUpdateServiceTests.m

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414

1515
@interface EZRFeedItemUpdateService (Test)
1616

17-
- (void)requestFiveMinutesOfFeedItems:(id)sender;
18-
- (void)requestOneWeekOfFeedItems;
19-
- (void)requestFeedItemsSince:(NSDate *)since;
17+
+ (void)requestFiveMinutesOfFeedItems:(id)sender;
18+
+ (void)requestOneWeekOfFeedItems;
19+
+ (void)requestFeedItemsSince:(NSDate *)since;
2020
- (void)loadDefaultFeeds;
2121
- (BOOL)hasSetDefaultFeeds;
2222

@@ -49,31 +49,34 @@ - (void)tearDown
4949

5050
- (void)testRequestFiveMinutesOfFeedItems
5151
{
52-
[[partialMockService expect] requestFeedItemsSince:[OCMArg any]];
52+
[[[mockService expect] classMethod] requestFeedItemsSince:[OCMArg any]];
5353

54-
[partialMockService requestFiveMinutesOfFeedItems:[OCMArg any]];
55-
[partialMockService verify];
54+
[[mockService class] requestFiveMinutesOfFeedItems:[OCMArg any]];
55+
56+
[mockService verify];
5657
}
5758

5859
- (void)testRequestOneWeekOfFeedItems
5960
{
60-
[[partialMockService expect] requestFeedItemsSince:[OCMArg any]];
61+
[[[mockService expect] classMethod] requestFeedItemsSince:[OCMArg any]];
6162

62-
[partialMockService requestOneWeekOfFeedItems];
63-
[partialMockService verify];
63+
[[mockService class] requestOneWeekOfFeedItems];
64+
65+
[mockService verify];
6466
}
6567

6668
- (void)testRequestFeedItemsSince
6769
{
6870
id date = [OCMockObject mockForClass:[NSDate class]];
6971

70-
[[mockFeedItem expect] requestFeedItemsFromFeeds:[OCMArg any]
71-
since:date
72-
success:[OCMArg any]
73-
failure:[OCMArg any]];
72+
[[[mockFeedItem expect] classMethod] requestFeedItemsFromFeeds:[OCMArg any]
73+
since:date
74+
success:[OCMArg any]
75+
failure:[OCMArg any]];
7476

75-
[partialMockService requestFeedItemsSince:date];
76-
[partialMockService verify];
77+
[[mockService class] requestFeedItemsSince:date];
78+
79+
[mockService verify];
7780
}
7881

7982
- (void)testLoadDefaultFeeds

EasyReader/Application/Controllers/Home/CollectionView/EZRHomeCollectionViewDelegate.m

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#import "CSCollectionPageControl.h"
1414

1515
#import "EZRGoogleAnalyticsService.h"
16+
#import "EZRFeedItemUpdateService.h"
1617

1718
@interface EZRHomeViewController (Additions)
1819

@@ -35,6 +36,7 @@ @interface EZRHomeCollectionViewDelegate ()
3536
@implementation EZRHomeCollectionViewDelegate
3637
{
3738
FeedItem *previousFeedItem;
39+
BOOL _scrollingAtStart;
3840
}
3941

4042

@@ -49,6 +51,10 @@ - (void)scrollViewDidScroll:(UIScrollView *)scrollView
4951
FeedItem *currentFeedItem = self.collectionView.currentFeedItem;
5052
NSInteger pageIndex = self.collectionView.currentPageIndex;
5153

54+
if (scrollView.contentOffset.x < -50) {
55+
_scrollingAtStart = YES;
56+
}
57+
5258
if (previousFeedItem != self.collectionView.currentFeedItem) {
5359
[self.controller resetWebView];
5460

@@ -65,6 +71,14 @@ - (void)scrollViewDidScroll:(UIScrollView *)scrollView
6571
}
6672
}
6773

74+
-(void) scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
75+
{
76+
if (_scrollingAtStart) {
77+
[EZRFeedItemUpdateService requestFiveMinutesOfFeedItems:self];
78+
}
79+
80+
}
81+
6882
/**
6983
* Scrolls the window down when a title is tapped
7084
*/

EasyReader/Application/Controllers/Home/EZRHomeViewController.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,7 @@ - (void) visibleFeedItemsDidChange:(EZRCurrentFeedsProvider *)currentFeedService
344344

345345
// Receives left menu link click
346346
- (IBAction)buttonLeftMenu_touchUpInside_goToMenu:(id)sender {
347+
[self.scrollView_vertical setContentOffset:CGPointMake(0,0) animated:NO];
347348
[[self rootViewController] toggleLeftSideMenuCompletion:^{}];
348349
}
349350

EasyReader/Application/Controllers/Home/ScrollView/EZRHomeScrollViewDelegate.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL
6666
}
6767

6868
/**
69-
*
7069
*
7170
* @param scrollVsiew the
7271
*/

EasyReader/Application/Controllers/Menu/EZRMenuViewController.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ - (void)applyMenuStyles
106106

107107
- (void)feedsDidChange:(EZRCurrentFeedsProvider *)currentFeedProvider feeds:(NSArray *)feeds {
108108
((CLDArrayTableViewDataSource *)self.tableView_menu.dataSource).source = self.currentFeedsProvider.feeds;
109+
109110
[self.tableView_menu reloadData];
110111
}
111112

EasyReader/Application/Controllers/Menu/TableView/EZRMenuTableViewDelegate.m

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
#import "EZRMenuSearchController.h"
1616
#import "EZRRootViewController.h"
17+
#import "EZRCurrentFeedsProvider.h"
1718

1819
#import "Feed.h"
1920
#import "User.h"
@@ -59,32 +60,38 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
5960
NSDictionary *feedData = ((EZRSearchFeedCell *)cell).feedData;
6061

6162
Feed *existingFeed = [Feed MR_findFirstByAttribute:@"id" withValue:feedData[@"id"]];
63+
[self.searchController cancelSearch];
6264

6365
if (!existingFeed) {
6466
UIViewController *rootVC = [[[UIApplication sharedApplication].delegate window] rootViewController];
6567

66-
[Feed createFeedWithUrl:feedData[@"url"] success:^(id responseObject, NSInteger httpStatus) {
67-
[[EZRGoogleAnalyticsService shared] sendView:@"Feed Added"];
68-
[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];
69-
} failure:^(id responseObject, NSInteger httpStatus, NSError *error) {
70-
[TSMessage showNotificationInViewController:rootVC title:@"Easy Reader" subtitle:@"There was an error adding that feed. Please try again later." type:TSMessageNotificationTypeError];
68+
[Feed createFeedWithUrl:feedData[@"url"]
69+
success:^(id responseObject, NSInteger httpStatus) {
70+
[[EZRGoogleAnalyticsService shared] sendView:@"Feed Added"];
71+
[TSMessage showNotificationInViewController:rootVC
72+
title:@"Easy Reader"
73+
subtitle:@"The selected feed has been added to the menu. Please allow a few minutes for new items to populate."
74+
type:TSMessageNotificationTypeSuccess];
75+
}
76+
failure:^(id responseObject, NSInteger httpStatus, NSError *error) {
77+
[TSMessage showNotificationInViewController:rootVC
78+
title:@"Easy Reader"
79+
subtitle:@"There was an error adding that feed. Please try again later."
80+
type:TSMessageNotificationTypeError];
7181
}];
7282
}
7383
else if (![[User current].feeds containsObject:existingFeed])
7484
{
7585
[[User current] addFeedsObject:existingFeed];
76-
[self postSelectedNotificationForFeed:existingFeed];
7786
}
7887

79-
[self.searchController cancelSearch];
8088
[tableView reloadData];
8189

8290
} else {
8391
Feed *feed = ((EZRMenuFeedCell *)cell).feed;
8492
[self postSelectedNotificationForFeed:feed];
93+
[((MFSideMenuContainerViewController *)tableView.window.rootViewController) setMenuState:MFSideMenuStateClosed];
8594
}
86-
87-
[((MFSideMenuContainerViewController *)tableView.window.rootViewController) setMenuState:MFSideMenuStateClosed];
8895
}
8996

9097
/**

EasyReader/Application/Services/EZRCurrentFeedsProvider.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,9 @@
3636
*/
3737
+ (EZRCurrentFeedsProvider *) shared;
3838

39+
/**
40+
* Sets shared instance of the current feeds service
41+
*/
42+
+ (void) setShared:(EZRCurrentFeedsProvider *)shared;
43+
3944
@end

EasyReader/Application/Services/EZRCurrentFeedsProvider.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ - (void) userFeedsDidChange:(User *)currentUser oldFeeds:(NSSet *)oldFeeds newFe
136136

137137

138138
NSMutableSet *feedItems = [NSMutableSet setWithArray:self.feedItems];
139+
oldFeeds = [NSSet setWithArray:self.feeds];
139140

140141
NSMutableArray *addedFeeds = [[newFeeds allObjects] mutableCopy];
141142
NSMutableArray *removedFeeds = [[oldFeeds allObjects] mutableCopy];

EasyReader/Application/Services/EZRFeedItemUpdateService.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,9 @@
1818
*/
1919
- (void) start;
2020

21+
/**
22+
* Requests five minutes of feed items
23+
*/
24+
+ (void)requestFiveMinutesOfFeedItems:(id)sender;
25+
2126
@end

EasyReader/Application/Services/EZRFeedItemUpdateService.m

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,26 +21,30 @@ - (void) start
2121
}
2222
else
2323
{
24-
[self requestOneWeekOfFeedItems];
24+
[[self class] requestOneWeekOfFeedItems];
2525
}
2626

27+
[[self class] feedInvocations];
28+
}
29+
30+
+ (void) feedInvocations
31+
{
2732
NSMethodSignature *mySignature = [EZRFeedItemUpdateService
28-
instanceMethodSignatureForSelector:@selector(requestFiveMinutesOfFeedItems:)];
33+
methodSignatureForSelector:@selector(requestFiveMinutesOfFeedItems:)];
2934

30-
NSInvocation *myInvocation = [NSInvocation
31-
invocationWithMethodSignature:mySignature];
35+
NSInvocation *myInvocation = [NSInvocation invocationWithMethodSignature:mySignature];
3236

3337
[myInvocation setTarget:self];
3438
[myInvocation setSelector:@selector(requestFiveMinutesOfFeedItems:)];
3539

36-
int interval = 10 * 1;
40+
int interval = 1 * 10;
3741
[NSTimer scheduledTimerWithTimeInterval:interval invocation:myInvocation repeats:YES];
3842
}
3943

4044

4145
#pragma mark - Private Methods
4246

43-
- (void)requestFiveMinutesOfFeedItems:(id)sender
47+
+ (void)requestFiveMinutesOfFeedItems:(id)sender
4448
{
4549
NSCalendar *calendar = [NSCalendar currentCalendar];
4650
NSDate *today = [NSDate date];
@@ -54,21 +58,21 @@ - (void)requestFiveMinutesOfFeedItems:(id)sender
5458
NSLog(@"Invocation ran!");
5559
}
5660

57-
- (void)requestOneWeekOfFeedItems
61+
+ (void)requestOneWeekOfFeedItems
5862
{
5963
NSCalendar *calendar = [NSCalendar currentCalendar];
6064
NSDate *today = [NSDate date];
6165

6266
NSDateComponents *oneWeekAgoComponents = [[NSDateComponents alloc] init];
63-
[oneWeekAgoComponents setWeek:-1];
67+
[oneWeekAgoComponents setWeekOfMonth:-1];
6468
NSDate *oneWeekAgo = [calendar dateByAddingComponents:oneWeekAgoComponents toDate:today options:0];
6569

6670
[self requestFeedItemsSince:oneWeekAgo];
6771

6872
NSLog(@"Setup Invocation");
6973
}
7074

71-
- (void)requestFeedItemsSince:(NSDate *)since
75+
+ (void)requestFeedItemsSince:(NSDate *)since
7276
{
7377
[FeedItem requestFeedItemsFromFeeds:[[User current] feeds]
7478
since:since

0 commit comments

Comments
 (0)