@@ -70,6 +70,10 @@ -(BOOL)shouldAutorotate {
7070// - (void) blockForSelector
7171// {
7272// }
73+
74+
75+ #pragma mark Observations
76+
7377/* *
7478 * Assigns observers for feeds
7579 */
@@ -89,80 +93,80 @@ - (void) setupFeedsObserver
8993 */
9094-(ObserverBlock) feedsDidChange
9195{
92- ObserverBlock block = ^void (__weak CSHomeViewController *self, NSSet *old, NSSet *new) {
93- NSMutableArray *addedFeeds = [[new allObjects ] mutableCopy ];
94- NSMutableArray *removedFeeds = [[old allObjects ] mutableCopy ];
95-
96- [addedFeeds removeObjectsInArray: [old allObjects ]];
97- [removedFeeds removeObjectsInArray: [new allObjects ]];
98-
99- for ( Feed *feed in removedFeeds ){
100- [feed removeAllObservations ];
101-
102- // Remove feed items associated to the feed
103- for ( FeedItem *item in feed.feedItems ){
104- [_feedItems removeObject: item];
105- }
106-
107- // Delete feed which will cascade delete feed items
108- [feed deleteEntity ];
109- [[NSManagedObjectContext defaultContext ] saveToPersistentStoreAndWait ];
110- }
96+ ObserverBlock block = ^void (__weak CSHomeViewController *self, NSSet *old, NSSet *new) {
97+ NSMutableArray *addedFeeds = [[new allObjects ] mutableCopy ];
98+ NSMutableArray *removedFeeds = [[old allObjects ] mutableCopy ];
99+
100+ [addedFeeds removeObjectsInArray: [old allObjects ]];
101+ [removedFeeds removeObjectsInArray: [new allObjects ]];
102+
103+ for ( Feed *feed in removedFeeds ){
104+ [feed removeAllObservations ];
105+
106+ // Remove feed items associated to the feed
107+ for ( FeedItem *item in feed.feedItems ){
108+ [_feedItems removeObject: item];
109+ }
110+
111+ // Delete feed which will cascade delete feed items
112+ [feed deleteEntity ];
113+ [[NSManagedObjectContext defaultContext ] saveToPersistentStoreAndWait ];
114+ }
115+
116+ for ( Feed *feed in addedFeeds ){
117+ [feed observeRelationship: @" feedItems"
118+ changeBlock: [self feedItemsDidChange ]
119+ insertionBlock: nil
120+ removalBlock: nil
121+ replacementBlock: nil ];
122+ }
123+ // redraw the collection with the changes to the feed items
124+ [_feedCollectionViewDataSource sortFeedItems ];
125+ [_collectionView_feedItems reloadData ];
126+ _pageControl_itemIndicator.numberOfPages = [_feedItems count ] < 6 ? [_feedItems count ] : 5 ;
127+
128+ if (_currentFeedItem){
129+ [self scrollToCurrentFeedItem ];
130+ [_pageControl_itemIndicator setPageControllerPageAtIndex: [_feedCollectionViewDataSource.sortedFeedItems indexOfObject: _currentFeedItem]
131+ forCollection: _feedItems];
132+ } else {
133+ [_pageControl_itemIndicator setPageControllerPageAtIndex: 0 forCollection: _feedItems];
134+ }
135+ };
111136
112- for ( Feed *feed in addedFeeds ){
113- [feed observeRelationship: @" feedItems"
114- changeBlock: [self feedItemsDidChange ]
115- insertionBlock: nil
116- removalBlock: nil
117- replacementBlock: nil ];
118- }
119- // redraw the collection with the changes to the feed items
120- [_feedCollectionViewDataSource sortFeedItems ];
121- [_collectionView_feedItems reloadData ];
122- _pageControl_itemIndicator.numberOfPages = [_feedItems count ] < 6 ? [_feedItems count ] : 5 ;
123-
124- if (_currentFeedItem){
125- [self scrollToCurrentFeedItem ];
126- [_pageControl_itemIndicator setPageControllerPageAtIndex: [_feedCollectionViewDataSource.sortedFeedItems indexOfObject: _currentFeedItem]
127- forCollection: _feedItems];
128- } else {
129- [_pageControl_itemIndicator setPageControllerPageAtIndex: 0 forCollection: _feedItems];
130- }
131- };
132-
133- return block;
137+ return block;
134138}
135139
136140/* *
137141 * Called when feedItems array on observed feeds change, shows new item button on page control
138142 */
139143-(ObserverBlock) feedItemsDidChange
140144{
141- ObserverBlock block = ^void (__weak CSHomeViewController *self, NSSet *old, NSSet *new) {
142- _feedItems = [(CSFeedItemCollectionViewDataSource *)_collectionView_feedItems.dataSource feedItems ];
143-
144- if (!new) {
145- NSLog (@" There are no feeds here" );
146- } else {
147- NSMutableArray *addedFeedItems = [[new allObjects ] mutableCopy ];
148- NSMutableArray *removedFeedItems = [[old allObjects ] mutableCopy ];
149-
150- [addedFeedItems removeObjectsInArray: [old allObjects ]];
151- [removedFeedItems removeObjectsInArray: [new allObjects ]];
152-
153- for ( FeedItem *item in removedFeedItems ){
154- [_feedItems removeObject: item];
155- }
156-
157- for ( FeedItem *item in addedFeedItems ){
158- [_feedItems addObject: item];
159- }
160-
161- [_pageControl_itemIndicator.button_newItem setHidden: NO ];
162- }
163- };
164-
165- return block;
145+ ObserverBlock block = ^void (__weak CSHomeViewController *self, NSSet *old, NSSet *new) {
146+ _feedItems = [(CSFeedItemCollectionViewDataSource *)_collectionView_feedItems.dataSource feedItems ];
147+
148+ if (!new) {
149+ NSLog (@" There are no feeds here" );
150+ } else {
151+ NSMutableArray *addedFeedItems = [[new allObjects ] mutableCopy ];
152+ NSMutableArray *removedFeedItems = [[old allObjects ] mutableCopy ];
153+
154+ [addedFeedItems removeObjectsInArray: [old allObjects ]];
155+ [removedFeedItems removeObjectsInArray: [new allObjects ]];
156+
157+ for ( FeedItem *item in removedFeedItems ){
158+ [_feedItems removeObject: item];
159+ }
160+
161+ for ( FeedItem *item in addedFeedItems ){
162+ [_feedItems addObject: item];
163+ }
164+
165+ [_pageControl_itemIndicator.button_newItem setHidden: NO ];
166+ }
167+ };
168+
169+ return block;
166170}
167171
168172#pragma mark - IBActions
@@ -181,7 +185,7 @@ -(void)setUpVerticalScrollView{
181185 NSInteger width = self.verticalScrollView .frame .size .width ;
182186 NSInteger height = self.verticalScrollView .frame .size .height ;
183187 self.verticalScrollView .contentSize = CGSizeMake (width, height*2 );
184-
188+
185189 self.verticalScrollView .pagingEnabled =YES ;
186190 self.verticalScrollView .delegate = self;
187191}
@@ -193,7 +197,7 @@ - (void)setUpCollectionView
193197{
194198 // NSArray *feedItems = [FeedItem MR_findAll];
195199 NSSet *feedItems = _currentUser.feedItems ;
196-
200+
197201 _feedCollectionViewDataSource =
198202 [[CSFeedItemCollectionViewDataSource alloc ] initWithFeedItems: feedItems
199203 reusableCellIdentifier: @" feedItemCell"
0 commit comments