2020
2121#import " CSFeedItemCell.h"
2222
23+ typedef void (^ObserverBlock)(__weak CSHomeViewController *self, NSSet *old, NSSet *new);
2324
2425@interface CSHomeViewController ()
2526{
@@ -76,9 +77,7 @@ - (void) setupFeedsObserver
7677{
7778
7879 [self observeRelationship: @keypath (self .currentUser.feeds)
79- changeBlock: ^(__weak CSHomeViewController *self , NSSet *old, NSSet *new){
80- [self feedsDidChange: old new: new];
81- }
80+ changeBlock: [self feedsDidChange ]
8281 insertionBlock: nil
8382 removalBlock: nil
8483 replacementBlock: nil
@@ -88,8 +87,9 @@ - (void) setupFeedsObserver
8887/* *
8988 * Assigns observers for feedsItems when feeds array on current user changes
9089 */
91- -(void ) feedsDidChange : ( NSSet *) old new : ( NSSet *) new
90+ -(ObserverBlock ) feedsDidChange
9291{
92+ ObserverBlock block = ^void (__weak CSHomeViewController *self, NSSet *old, NSSet *new) {
9393 NSMutableArray *addedFeeds = [[new allObjects ] mutableCopy ];
9494 NSMutableArray *removedFeeds = [[old allObjects ] mutableCopy ];
9595
@@ -111,9 +111,7 @@ -(void) feedsDidChange:(NSSet*)old new:(NSSet*)new
111111
112112 for ( Feed *feed in addedFeeds ){
113113 [feed observeRelationship: @" feedItems"
114- changeBlock: ^(__weak Feed *feed, NSSet *old, NSSet *new) {
115- [self feedItemsDidChange: old new: new];
116- }
114+ changeBlock: [self feedItemsDidChange ]
117115 insertionBlock: nil
118116 removalBlock: nil
119117 replacementBlock: nil ];
@@ -130,34 +128,41 @@ -(void) feedsDidChange:(NSSet*)old new:(NSSet*)new
130128 } else {
131129 [_pageControl_itemIndicator setPageControllerPageAtIndex: 0 forCollection: _feedItems];
132130 }
131+ };
132+
133+ return block;
133134}
134135
135136/* *
136137 * Called when feedItems array on observed feeds change, shows new item button on page control
137138 */
138- -(void ) feedItemsDidChange : ( NSSet *) old new : ( NSSet *) new
139+ -(ObserverBlock ) feedItemsDidChange
139140{
140- _feedItems = [(CSFeedItemCollectionViewDataSource *)_collectionView_feedItems.dataSource feedItems ];
141+ ObserverBlock block = ^void (__weak CSHomeViewController *self, NSSet *old, NSSet *new) {
142+ _feedItems = [(CSFeedItemCollectionViewDataSource *)_collectionView_feedItems.dataSource feedItems ];
141143
142- if (!new) {
143- NSLog (@" There are no feeds here" );
144- } else {
145- NSMutableArray *addedFeedItems = [[new allObjects ] mutableCopy ];
146- NSMutableArray *removedFeedItems = [[old allObjects ] mutableCopy ];
147-
148- [addedFeedItems removeObjectsInArray: [old allObjects ]];
149- [removedFeedItems removeObjectsInArray: [new allObjects ]];
150-
151- for ( FeedItem *item in removedFeedItems ){
152- [_feedItems removeObject: item];
153- }
154-
155- for ( FeedItem *item in addedFeedItems ){
156- [_feedItems addObject: item];
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 ];
157162 }
158-
159- [_pageControl_itemIndicator.button_newItem setHidden: NO ];
160- }
163+ };
164+
165+ return block;
161166}
162167
163168#pragma mark - IBActions
0 commit comments