Skip to content

Commit 3a84ed0

Browse files
author
Michael Beattie
committed
[#67767620] added ability to delete feeds and associated feed items
1 parent 805c323 commit 3a84ed0

4 files changed

Lines changed: 35 additions & 17 deletions

File tree

EasyReader.xcodeproj/project.pbxproj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
0DE51FF418CF911000454E51 /* FeedItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DE51FF018CF911000454E51 /* FeedItem.m */; };
2929
0DE51FF518CF911000454E51 /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DE51FF218CF911000454E51 /* User.m */; };
3030
0DE51FF818CF919900454E51 /* Feed.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DE51FF718CF919900454E51 /* Feed.m */; };
31+
0DEBD8CB18E202F200284B33 /* APIRouter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D16D34518DBA9E9001E9C38 /* APIRouter.m */; };
3132
1884EDB920EE4720B254D07C /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A7ACF08D0CD54248B25E110A /* libPods.a */; };
3233
274D540618D0E8D80096831A /* CSFeedItemUpdater.m in Sources */ = {isa = PBXBuildFile; fileRef = 274D540518D0E8D80096831A /* CSFeedItemUpdater.m */; };
3334
2751F4D618DA02C100339C96 /* NSObject+CSNilAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 2751F4D318DA02C100339C96 /* NSObject+CSNilAdditions.m */; };
@@ -337,6 +338,7 @@
337338
0DE51FF218CF911000454E51 /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = User.m; sourceTree = "<group>"; };
338339
0DE51FF618CF919900454E51 /* Feed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Feed.h; sourceTree = "<group>"; };
339340
0DE51FF718CF919900454E51 /* Feed.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Feed.m; sourceTree = "<group>"; };
341+
0DEBD8CA18E201FB00284B33 /* APIRouter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = APIRouter.m; path = EasyReader/Library/apikit/APIRouter.m; sourceTree = "<group>"; };
340342
274D540418D0E8D80096831A /* CSFeedItemUpdater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CSFeedItemUpdater.h; path = Api/CSFeedItemUpdater.h; sourceTree = "<group>"; };
341343
274D540518D0E8D80096831A /* CSFeedItemUpdater.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CSFeedItemUpdater.m; path = Api/CSFeedItemUpdater.m; sourceTree = "<group>"; };
342344
2751F4D218DA02C100339C96 /* NSObject+CSNilAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+CSNilAdditions.h"; sourceTree = "<group>"; };
@@ -783,6 +785,7 @@
783785
9DAC16BB1709D48E00383722 = {
784786
isa = PBXGroup;
785787
children = (
788+
0DEBD8CA18E201FB00284B33 /* APIRouter.m */,
786789
9D4FA6E917971E8D001E2A65 /* Default-Landscape@2x~ipad.png */,
787790
9D4FA6E717971E88001E2A65 /* Default-Landscape~ipad.png */,
788791
9DA7CB35171CAD020045CC88 /* iOS Resources */,
@@ -1356,6 +1359,7 @@
13561359
9D639E7818E0A52300350B5F /* APIMockRequest.m in Sources */,
13571360
0D9A836018E0CE4F00D8376E /* EZRCustomFeedCell.m in Sources */,
13581361
9D79270A18DA1D0300E1D3E1 /* Feed.m in Sources */,
1362+
0DEBD8CB18E202F200284B33 /* APIRouter.m in Sources */,
13591363
9D79270B18DA1D0300E1D3E1 /* CSAppDelegate.m in Sources */,
13601364
9D79270C18DA1D0300E1D3E1 /* main.m in Sources */,
13611365
9D79270D18DA1D0300E1D3E1 /* CSHomeViewController.m in Sources */,
@@ -1488,6 +1492,7 @@
14881492
isa = PBXSourcesBuildPhase;
14891493
buildActionMask = 2147483647;
14901494
files = (
1495+
9D16D34E18DBA9E9001E9C38 /* APIRouter.m in Sources */,
14911496
9D16D33D18DB7767001E9C38 /* CSFeedUpdateService.m in Sources */,
14921497
9D9CBABF18DC826700532F8C /* CSApplicationStyleService.m in Sources */,
14931498
9D639E7618E0A52300350B5F /* APIMockRequest.m in Sources */,
@@ -1504,7 +1509,6 @@
15041509
9D8C6C5D170CA12500B18012 /* CSRootViewController.m in Sources */,
15051510
0DE51FF418CF911000454E51 /* FeedItem.m in Sources */,
15061511
0DE51FF518CF911000454E51 /* User.m in Sources */,
1507-
9D16D34E18DBA9E9001E9C38 /* APIRouter.m in Sources */,
15081512
9D639E7018E0A4E000350B5F /* APIClient.m in Sources */,
15091513
274D540618D0E8D80096831A /* CSFeedItemUpdater.m in Sources */,
15101514
0D7987A218DB6AE4004440C3 /* CSUserFeedCell.m in Sources */,

EasyReader/Application/Controllers/Home/CSHomeViewController.m

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,15 @@ - (void) setupFeedItemObserver
6363

6464
for ( Feed *feed in removedFeeds ){
6565
[feed removeAllObservations];
66+
67+
// Remove feed items associated to the feed
68+
for( FeedItem *item in feed.feedItems ){
69+
[_feedItems removeObject:item];
70+
}
71+
72+
// Delete feed which will cascade delete feed items
73+
[feed deleteEntity];
74+
[[NSManagedObjectContext defaultContext] saveToPersistentStoreAndWait];
6675
}
6776

6877
for ( Feed *feed in addedFeeds ){
@@ -90,24 +99,23 @@ - (void) setupFeedItemObserver
9099

91100
[_pageControl_itemIndicator.button_newItem setHidden:NO];
92101
}
93-
94-
//redraw the collection with the changes to the feed items
95-
[_feedCollectionViewDataSource sortFeedItems];
96-
[_collectionView_feedItems reloadData];
97-
_pageControl_itemIndicator.numberOfPages = [_feedItems count] < 6 ? [_feedItems count] : 5;
98-
99-
if(_currentFeedItem){
100-
[self scrollToCurrentFeedItem];
101-
[_pageControl_itemIndicator setPageControllerPageAtIndex:[_feedCollectionViewDataSource.sortedFeedItems indexOfObject:_currentFeedItem]
102-
forCollection:_feedItems];
103-
} else {
104-
[_pageControl_itemIndicator setPageControllerPageAtIndex:0 forCollection:_feedItems];
105-
}
106102
}
107103
insertionBlock:nil
108104
removalBlock:nil
109105
replacementBlock:nil];
110106
}
107+
//redraw the collection with the changes to the feed items
108+
[_feedCollectionViewDataSource sortFeedItems];
109+
[_collectionView_feedItems reloadData];
110+
_pageControl_itemIndicator.numberOfPages = [_feedItems count] < 6 ? [_feedItems count] : 5;
111+
112+
if(_currentFeedItem){
113+
[self scrollToCurrentFeedItem];
114+
[_pageControl_itemIndicator setPageControllerPageAtIndex:[_feedCollectionViewDataSource.sortedFeedItems indexOfObject:_currentFeedItem]
115+
forCollection:_feedItems];
116+
} else {
117+
[_pageControl_itemIndicator setPageControllerPageAtIndex:0 forCollection:_feedItems];
118+
}
111119
}
112120
insertionBlock:nil
113121
removalBlock:nil

EasyReader/Application/Controllers/Menu/MenuDataSources/CSMenuUserFeedDataSource.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
#import <Foundation/Foundation.h>
1010

11+
@class User;
12+
1113
@interface CSMenuUserFeedDataSource : NSObject<UITableViewDataSource>
1214

1315
#pragma mark - Properties
@@ -18,6 +20,8 @@
1820
@property (nonatomic, strong) NSArray *sortedFeeds;
1921

2022

23+
@property (nonatomic, retain) User *currentUser;
24+
2125
#pragma mark - Methods
2226
/**
2327
* Updates the list of feeds used to populate the menu table

EasyReader/Application/Controllers/Menu/MenuDataSources/CSMenuUserFeedDataSource.m

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#import "Feed.h"
1818
#import "FeedItem.h"
19+
#import "User.h"
1920

2021
@implementation CSMenuUserFeedDataSource
2122

@@ -29,6 +30,7 @@ - (id)init
2930
if (self) {
3031
_feeds = [[NSMutableSet alloc] init];
3132
_sortedFeeds = [[NSArray alloc] init];
33+
_currentUser = [User current];
3234
}
3335

3436
return self;
@@ -113,10 +115,10 @@ - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEd
113115
{
114116
if (editingStyle == UITableViewCellEditingStyleDelete) {
115117
Feed *toDelete = [self.sortedFeeds objectAtIndex:indexPath.row];
116-
[toDelete deleteEntity];
117-
[self.feeds removeObject:toDelete];
118118

119-
[[NSManagedObjectContext defaultContext] saveToPersistentStoreAndWait];
119+
NSMutableSet *mutableSet = [NSMutableSet setWithSet:self.currentUser.feeds];
120+
[mutableSet removeObject:toDelete];
121+
self.currentUser.feeds = mutableSet;
120122
}
121123
}
122124

0 commit comments

Comments
 (0)