1919@interface CSHomeViewController (){
2020 CSFeedItemCollectionViewDataSource *feedCollectionViewDataSource;
2121 FeedItem *currentFeedItem;
22+ NSString *currentURL;
2223}
2324
2425// / The collection view which holds the individual feed items
@@ -80,8 +81,11 @@ - (void) setupFeedItemObserver
8081 }
8182
8283 // redraw the collection with the changes to the feed items
84+ [feedCollectionViewDataSource sortFeedItems ];
8385 [_collectionView_feedItems reloadData ];
84-
86+ if (currentFeedItem){
87+ [self scrollToCurrentFeedItem ];
88+ }
8589 }
8690 insertionBlock: nil
8791 removalBlock: nil
@@ -98,8 +102,9 @@ - (void) setupFeedItemObserver
98102
99103- (void )setUpCollectionView
100104{
101- NSArray *feedItems = [FeedItem MR_findAll ];
102-
105+ User *current = [User current ];
106+ NSSet *feedItems = current.feedItems ;
107+
103108 feedCollectionViewDataSource =
104109 [[CSFeedItemCollectionViewDataSource alloc ] initWithFeedItems: feedItems
105110 reusableCellIdentifier: @" feedItemCell"
@@ -160,23 +165,31 @@ - (void)scrollViewWillBeginDragging:(UIScrollView *)sender {
160165- (void )scrollViewDidEndDecelerating : (UIScrollView *)sender {
161166 // If we are scrolling in the collectionView only
162167 if ([sender isMemberOfClass: [CSFeedItemCollectionView class ]]) {
163-
164168 // unload the webView if we have moved to a new feedItem
165169 if (currentFeedItem != self.collectionView_feedItems .currentFeedItem ){
170+ currentFeedItem = self.collectionView_feedItems .currentFeedItem ;
166171 [self .feedItemWebView loadHTMLString: @" <html><head></head><body></body></html>" baseURL: nil ];
167172 }
168173 }
169174}
170175
176+ // Scroll to the currentFeedItem when the feedItems update
177+ - (void )scrollToCurrentFeedItem
178+ {
179+ NSUInteger index = [feedCollectionViewDataSource.sortedFeedItems indexOfObject: currentFeedItem];
180+ NSIndexPath *indexPath = [NSIndexPath indexPathForRow: index inSection: 0 ];
181+ [_collectionView_feedItems scrollToItemAtIndexPath: indexPath atScrollPosition: UICollectionViewScrollPositionCenteredHorizontally animated: NO ];
182+ }
183+
171184-(void )loadFeedItemWebView
172185{
173186 // Check if this is a new url
174- if (currentFeedItem != self.collectionView_feedItems .currentFeedItem ){
187+ if (currentURL != self.collectionView_feedItems .currentFeedItem . url ){
175188 // update the current url
176- currentFeedItem = self.collectionView_feedItems .currentFeedItem ;
189+ currentURL = self.collectionView_feedItems .currentFeedItem . url ;
177190
178191 // load the url in the webView
179- NSURL *url = [NSURL URLWithString: self .collectionView_feedItems.currentFeedItem.url ];
192+ NSURL *url = [NSURL URLWithString: currentURL ];
180193 NSURLRequest *requestObj = [NSURLRequest requestWithURL: url];
181194 [self .feedItemWebView loadRequest: requestObj];
182195 }
0 commit comments