From a73536a91a2f0762213ad406c4c58d9c7ca5438f Mon Sep 17 00:00:00 2001 From: Samuel Clay Date: Thu, 5 Sep 2013 17:07:21 -0700 Subject: [PATCH] Adding messaging to training while offline in both trainer view controller and story detail view controller. --- clients/ios/Classes/BaseViewController.m | 2 +- clients/ios/Classes/NewsBlurAppDelegate.h | 1 + clients/ios/Classes/NewsBlurAppDelegate.m | 51 +++++++++++++++++++---- 3 files changed, 45 insertions(+), 9 deletions(-) diff --git a/clients/ios/Classes/BaseViewController.m b/clients/ios/Classes/BaseViewController.m index 07e256f07..1a1788595 100644 --- a/clients/ios/Classes/BaseViewController.m +++ b/clients/ios/Classes/BaseViewController.m @@ -53,7 +53,7 @@ #pragma mark View methods - (void)informError:(id)error { - NSLog(@"Error: %@", error); + NSLog(@"informError: %@", error); NSString *errorMessage; if ([error isKindOfClass:[NSString class]]) { errorMessage = error; diff --git a/clients/ios/Classes/NewsBlurAppDelegate.h b/clients/ios/Classes/NewsBlurAppDelegate.h index 30ad4882c..1bfdab833 100644 --- a/clients/ios/Classes/NewsBlurAppDelegate.h +++ b/clients/ios/Classes/NewsBlurAppDelegate.h @@ -346,6 +346,7 @@ - (void)toggleTagClassifier:(NSString *)tag feedId:(NSString *)feedId; - (void)toggleTitleClassifier:(NSString *)title feedId:(NSString *)feedId score:(int)score; - (void)toggleFeedClassifier:(NSString *)feedId; +- (void)requestClassifierResponse:(ASIHTTPRequest *)request withFeed:(NSString *)feedId; - (int)databaseSchemaVersion:(FMDatabase *)db; - (void)createDatabaseConnection; diff --git a/clients/ios/Classes/NewsBlurAppDelegate.m b/clients/ios/Classes/NewsBlurAppDelegate.m index 5ba5c57d4..213e7d7d2 100644 --- a/clients/ios/Classes/NewsBlurAppDelegate.m +++ b/clients/ios/Classes/NewsBlurAppDelegate.m @@ -2015,7 +2015,9 @@ } NSMutableDictionary *feedClassifiers = [[self.activeClassifiers objectForKey:feedId] mutableCopy]; + if (!feedClassifiers) feedClassifiers = [NSMutableDictionary dictionary]; NSMutableDictionary *authors = [[feedClassifiers objectForKey:@"authors"] mutableCopy]; + if (!authors) authors = [NSMutableDictionary dictionary]; [authors setObject:[NSNumber numberWithInt:authorScore] forKey:author]; [feedClassifiers setObject:authors forKey:@"authors"]; [self.activeClassifiers setObject:feedClassifiers forKey:feedId]; @@ -2026,15 +2028,18 @@ NEWSBLUR_URL]; NSURL *url = [NSURL URLWithString:urlString]; __block ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; + __weak ASIFormDataRequest *_request = request; [request setPostValue:author forKey:authorScore >= 1 ? @"like_author" : authorScore <= -1 ? @"dislike_author" : @"remove_like_author"]; [request setPostValue:feedId forKey:@"feed_id"]; [request setCompletionBlock:^{ - [self.feedsViewController refreshFeedList:feedId]; + [self requestClassifierResponse:_request withFeed:feedId]; + }]; + [request setFailedBlock:^{ + [self requestClassifierResponse:_request withFeed:feedId]; }]; - [request setDidFailSelector:@selector(requestFailed:)]; [request setDelegate:self]; [request startAsynchronous]; @@ -2058,7 +2063,9 @@ NSMutableDictionary *feedClassifiers = [[self.activeClassifiers objectForKey:feedId] mutableCopy]; + if (!feedClassifiers) feedClassifiers = [NSMutableDictionary dictionary]; NSMutableDictionary *tags = [[feedClassifiers objectForKey:@"tags"] mutableCopy]; + if (!tags) tags = [NSMutableDictionary dictionary]; [tags setObject:[NSNumber numberWithInt:tagScore] forKey:tag]; [feedClassifiers setObject:tags forKey:@"tags"]; [self.activeClassifiers setObject:feedClassifiers forKey:feedId]; @@ -2069,15 +2076,18 @@ NEWSBLUR_URL]; NSURL *url = [NSURL URLWithString:urlString]; __block ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; + __weak ASIFormDataRequest *_request = request; [request setPostValue:tag forKey:tagScore >= 1 ? @"like_tag" : tagScore <= -1 ? @"dislike_tag" : @"remove_like_tag"]; [request setPostValue:feedId forKey:@"feed_id"]; [request setCompletionBlock:^{ - [self.feedsViewController refreshFeedList:feedId]; + [self requestClassifierResponse:_request withFeed:feedId]; + }]; + [request setFailedBlock:^{ + [self requestClassifierResponse:_request withFeed:feedId]; }]; - [request setDidFailSelector:@selector(requestFailed:)]; [request setDelegate:self]; [request startAsynchronous]; @@ -2105,7 +2115,9 @@ NSMutableDictionary *feedClassifiers = [[self.activeClassifiers objectForKey:feedId] mutableCopy]; + if (!feedClassifiers) feedClassifiers = [NSMutableDictionary dictionary]; NSMutableDictionary *titles = [[feedClassifiers objectForKey:@"titles"] mutableCopy]; + if (!titles) titles = [NSMutableDictionary dictionary]; [titles setObject:[NSNumber numberWithInt:titleScore] forKey:title]; [feedClassifiers setObject:titles forKey:@"titles"]; [self.activeClassifiers setObject:feedClassifiers forKey:feedId]; @@ -2116,15 +2128,18 @@ NEWSBLUR_URL]; NSURL *url = [NSURL URLWithString:urlString]; __block ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; + __weak ASIFormDataRequest *_request = request; [request setPostValue:title forKey:titleScore >= 1 ? @"like_title" : titleScore <= -1 ? @"dislike_title" : @"remove_like_title"]; [request setPostValue:feedId forKey:@"feed_id"]; [request setCompletionBlock:^{ - [self.feedsViewController refreshFeedList:feedId]; + [self requestClassifierResponse:_request withFeed:feedId]; + }]; + [request setFailedBlock:^{ + [self requestClassifierResponse:_request withFeed:feedId]; }]; - [request setDidFailSelector:@selector(requestFailed:)]; [request setDelegate:self]; [request startAsynchronous]; @@ -2147,6 +2162,7 @@ NSMutableDictionary *feedClassifiers = [[self.activeClassifiers objectForKey:feedId] mutableCopy]; + if (!feedClassifiers) feedClassifiers = [NSMutableDictionary dictionary]; NSMutableDictionary *feeds = [[feedClassifiers objectForKey:@"feeds"] mutableCopy]; [feeds setObject:[NSNumber numberWithInt:feedScore] forKey:feedId]; [feedClassifiers setObject:feeds forKey:@"feeds"]; @@ -2158,15 +2174,18 @@ NEWSBLUR_URL]; NSURL *url = [NSURL URLWithString:urlString]; __block ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; + __weak ASIFormDataRequest *_request = request; [request setPostValue:feedId forKey:feedScore >= 1 ? @"like_feed" : feedScore <= -1 ? @"dislike_feed" : @"remove_like_feed"]; [request setPostValue:feedId forKey:@"feed_id"]; [request setCompletionBlock:^{ - [self.feedsViewController refreshFeedList:feedId]; + [self requestClassifierResponse:_request withFeed:feedId]; + }]; + [request setFailedBlock:^{ + [self requestClassifierResponse:_request withFeed:feedId]; }]; - [request setDidFailSelector:@selector(requestFailed:)]; [request setDelegate:self]; [request startAsynchronous]; @@ -2174,6 +2193,22 @@ [self.feedDetailViewController.storyTitlesTable reloadData]; } +- (void)requestClassifierResponse:(ASIHTTPRequest *)request withFeed:(NSString *)feedId { + BaseViewController *view; + if (self.trainerViewController.isViewLoaded && self.trainerViewController.view.window) { + view = self.trainerViewController; + } else { + view = self.storyPageControl.currentPage; + } + if ([request responseStatusCode] == 503) { + return [view informError:@"In maintenance mode"]; + } else if ([request responseStatusCode] != 200) { + return [view informError:@"The server barfed!"]; + } + + [self.feedsViewController refreshFeedList:feedId]; +} + - (void)requestFailed:(ASIHTTPRequest *)request { NSError *error = [request error]; NSLog(@"Error: %@", error);