Making network request for River of News in iPhone app.

This commit is contained in:
Samuel Clay 2011-10-25 09:47:55 -07:00
parent 02c40ac2ab
commit fdc95477d9
5 changed files with 74 additions and 9 deletions

View file

@ -34,6 +34,7 @@
- (void)resetFeedDetail;
- (void)fetchNextPage:(void(^)())callback;
- (void)fetchFeedDetail:(int)page withCallback:(void(^)())callback;
- (void)fetchRiverPage:(int)page withCallback:(void(^)())callback;
- (void)finishedLoadingFeed:(ASIHTTPRequest *)request;
- (void)failLoadingFeed:(ASIHTTPRequest *)request;

View file

@ -199,6 +199,47 @@
[results release];
}
#pragma mark -
#pragma mark River of News
- (void)fetchRiverPage:(int)page withCallback:(void(^)())callback {
if ([appDelegate.activeFeed objectForKey:@"id"] != nil && !self.pageFetching && !self.pageFinished) {
self.feedPage = page;
self.pageFetching = YES;
int storyCount = appDelegate.storyCount;
if (storyCount == 0) {
[self.storyTitlesTable reloadData];
[storyTitlesTable scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];
}
NSString *theFeedDetailURL = [NSString stringWithFormat:@"http://%@/reader/feed/%@?page=%d",
NEWSBLUR_URL,
[appDelegate.activeFeed objectForKey:@"id"],
self.feedPage];
NSURL *urlFeedDetail = [NSURL URLWithString:theFeedDetailURL];
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:urlFeedDetail];
[request setDelegate:self];
[request setResponseEncoding:NSUTF8StringEncoding];
[request setDefaultResponseEncoding:NSUTF8StringEncoding];
[request setFailedBlock:^(void) {
[self failLoadingFeed:request];
}];
[request setCompletionBlock:^(void) {
[self finishedLoadingFeed:request];
if (callback) {
callback();
}
}];
[request setTimeOutSeconds:30];
[request setTag:[[[appDelegate activeFeed] objectForKey:@"id"] intValue]];
[request startAsynchronous];
}
}
#pragma mark -
#pragma mark Stories
- (void)renderStories:(NSArray *)newStories {
NSInteger existingStoriesCount = [[appDelegate activeFeedStoryLocations] count];
NSInteger newStoriesCount = [newStories count];

View file

@ -133,7 +133,21 @@
[feedDetailViewController fetchFeedDetail:1 withCallback:nil];
[self showNavigationBar:YES];
navController.navigationBar.tintColor = [UIColor colorWithRed:0.16f green:0.36f blue:0.46 alpha:0.9];
// navController.navigationBar.tintColor = UIColorFromRGB(0x59f6c1);
// navController.navigationBar.tintColor = UIColorFromRGB(0x59f6c1);
}
- (void)loadRiverFeedDetailView {
UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"All" style: UIBarButtonItemStyleBordered target: nil action: nil];
[feedsViewController.navigationItem setBackBarButtonItem: newBackButton];
[newBackButton release];
UINavigationController *navController = self.navigationController;
[self setStories:nil];
[navController pushViewController:feedDetailViewController animated:YES];
[feedDetailViewController resetFeedDetail];
[feedDetailViewController fetchRiverPage:1 withCallback:nil];
[self showNavigationBar:YES];
navController.navigationBar.tintColor = [UIColor colorWithRed:0.16f green:0.36f blue:0.46 alpha:0.9];
// navController.navigationBar.tintColor = UIColorFromRGB(0x59f6c1);
}
- (void)loadStoryDetailView {

View file

@ -42,7 +42,7 @@
- (void)finishLoadingFeedList:(ASIHTTPRequest *)request;
- (IBAction)doLogoutButton;
- (void)didSelectSectionHeader;
- (void)didSelectSectionHeader:(UIButton *)button;
- (IBAction)selectIntelligence;
- (void)updateFeedsWithIntelligence:(int)previousLevel newLevel:(int)newLevel;
- (void)calculateFeedLocations:(BOOL)markVisible;

View file

@ -489,7 +489,8 @@ viewForHeaderInSection:(NSInteger)section {
UIButton *invisibleHeaderButton = [UIButton buttonWithType:UIButtonTypeCustom];
invisibleHeaderButton.frame = CGRectMake(0, 0, customView.frame.size.width, customView.frame.size.height);
invisibleHeaderButton.alpha = .1;
[invisibleHeaderButton addTarget:self action:@selector(didSelectSectionHeader) forControlEvents:UIControlEventTouchUpInside];
invisibleHeaderButton.tag = section;
[invisibleHeaderButton addTarget:self action:@selector(didSelectSectionHeader:) forControlEvents:UIControlEventTouchUpInside];
[customView addSubview:invisibleHeaderButton];
return customView;
@ -503,8 +504,16 @@ viewForHeaderInSection:(NSInteger)section {
return 21;
}
- (void)didSelectSectionHeader {
NSLog(@"Touched");
- (void)didSelectSectionHeader:(UIButton *)button {
NSString *folderName = [appDelegate.dictFoldersArray objectAtIndex:button.tag];
// NSArray *feeds = [appDelegate.dictFolders objectForKey:folderName];
// NSArray *activeFolderFeeds = [self.activeFeedLocations objectForKey:folderName];
[appDelegate setActiveFolder:folderName];
appDelegate.readStories = [NSMutableArray array];
appDelegate.isRiverView = YES;
[appDelegate loadFeedDetailView];
}
- (IBAction)selectIntelligence {
@ -534,9 +543,9 @@ viewForHeaderInSection:(NSInteger)section {
NSArray *activeFolderFeeds = [self.activeFeedLocations objectForKey:folderName];
NSArray *originalFolder = [appDelegate.dictFolders objectForKey:folderName];
if (s == 9) {
// if (s == 9) {
// NSLog(@"Section %d: %@. %d to %d", s, folderName, previousLevel, newLevel);
}
// }
for (int f=0; f < [originalFolder count]; f++) {
NSNumber *feedId = [originalFolder objectAtIndex:f];
@ -544,12 +553,12 @@ viewForHeaderInSection:(NSInteger)section {
NSDictionary *feed = [appDelegate.dictFeeds objectForKey:feedIdStr];
int maxScore = [NewsBlurViewController computeMaxScoreForFeed:feed];
if (s == 9) {
// if (s == 9) {
// NSLog(@"MaxScore: %d for %@ (%@/%@/%@). Visible: %@", maxScore,
// [feed objectForKey:@"feed_title"],
// [feed objectForKey:@"ng"], [feed objectForKey:@"nt"], [feed objectForKey:@"ng"],
// [self.visibleFeeds objectForKey:feedIdStr]);
}
// }
if ([self.visibleFeeds objectForKey:feedIdStr]) {
if (maxScore < newLevel) {