diff --git a/LifeLog/LifeLog/ServerAPI.m b/LifeLog/LifeLog/ServerAPI.m index 32144e2..d6ade05 100644 --- a/LifeLog/LifeLog/ServerAPI.m +++ b/LifeLog/LifeLog/ServerAPI.m @@ -350,8 +350,14 @@ NSURLSessionDataTask * searchTask; } if ([message isEqualToString:@"Token is invalid"]) { - [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; - [self requestTopWithMode:mode andDate:date CompletionHandler:completion]; + [self checkTokenCompletionHandler:^(NSString *token, NSError *error) { + if (error == nil) { + [self requestTopWithMode:mode andDate:date CompletionHandler:completion]; + } + else { + completion(nil, error); + } + }]; } else { NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; @@ -407,8 +413,14 @@ NSURLSessionDataTask * searchTask; } if ([message isEqualToString:@"Token is invalid"]) { - [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; - [self requestHomeWithMode:mode andDate:date CompletionHandler:completion]; + [self checkTokenCompletionHandler:^(NSString *token, NSError *error) { + if (error == nil) { + [self requestHomeWithMode:mode andDate:date CompletionHandler:completion]; + } + else { + completion(nil, error); + } + }]; } else { NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; @@ -447,8 +459,14 @@ NSURLSessionDataTask * searchTask; } if ([message isEqualToString:@"Token is invalid"]) { - [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; - [self requestCreateLog:mode withStep:numStep startDate:startDate endDate:endDate CompletionHandler:completion]; + [self checkTokenCompletionHandler:^(NSString *token, NSError *error) { + if (error == nil) { + [self requestCreateLog:mode withStep:numStep startDate:startDate endDate:endDate CompletionHandler:completion]; + } + else { + completion(error); + } + }]; } else { NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; @@ -506,9 +524,15 @@ NSURLSessionDataTask * searchTask; } if ([message isEqualToString:@"Token is invalid"]) { - [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; - NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; - [self requestHistory:tokenNew startDate:startDate endDate:endDate CompletionHandler:completion]; + [self checkTokenCompletionHandler:^(NSString *token, NSError *error) { + if (error == nil) { + NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; + [self requestHistory:tokenNew startDate:startDate endDate:endDate CompletionHandler:completion]; + } + else { + completion(nil, error); + } + }]; } else { NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; @@ -576,9 +600,15 @@ NSURLSessionDataTask * searchTask; } if ([message isEqualToString:@"Token is invalid"]) { - [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; - NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; - [self requestHistoryList:tokenNew startDate:startDate endDate:endDate CompletionHandler:completion]; + [self checkTokenCompletionHandler:^(NSString *token, NSError *error) { + if (error == nil) { + NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; + [self requestHistoryList:tokenNew startDate:startDate endDate:endDate CompletionHandler:completion]; + } + else { + completion(nil, error); + } + }]; } else { NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; @@ -633,9 +663,15 @@ NSURLSessionDataTask * searchTask; } if ([message isEqualToString:@"Token is invalid"]) { - [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; - NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; - [self requestTweetsList:tokenNew groupID:groupID withPage:page CompletionHandler:completion]; + [self checkTokenCompletionHandler:^(NSString *token, NSError *error) { + if (error == nil) { + NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; + [self requestTweetsList:tokenNew groupID:groupID withPage:page CompletionHandler:completion]; + } + else { + completion(nil, error); + } + }]; } else { NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; @@ -741,9 +777,15 @@ NSURLSessionDataTask * searchTask; } if ([message isEqualToString:@"Token is invalid"]) { - [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; - NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; - [self requestCreateGroup:tokenNew withGroup:group CompletionHandler:completion]; + [self checkTokenCompletionHandler:^(NSString *token, NSError *error) { + if (error == nil) { + NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; + [self requestCreateGroup:tokenNew withGroup:group CompletionHandler:completion]; + } + else { + completion(nil, error); + } + }]; } else { NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; @@ -790,9 +832,15 @@ NSURLSessionDataTask * searchTask; } if ([message isEqualToString:@"Token is invalid"]) { - [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; - NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; - [self getGroupDetail:tokenNew withGroupID:groupID CompletionHandler:completion]; + [self checkTokenCompletionHandler:^(NSString *token, NSError *error) { + if (error == nil) { + NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; + [self getGroupDetail:tokenNew withGroupID:groupID CompletionHandler:completion]; + } + else { + completion(nil, error); + } + }]; } else { NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; @@ -843,9 +891,15 @@ NSURLSessionDataTask * searchTask; } if ([message isEqualToString:@"Token is invalid"]) { - [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; - NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; - [self requestMemberList:tokenNew groupID:groupID withPage:page CompletionHandler:completion]; + [self checkTokenCompletionHandler:^(NSString *token, NSError *error) { + if (error == nil) { + NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; + [self requestMemberList:tokenNew groupID:groupID withPage:page CompletionHandler:completion]; + } + else { + completion(nil, error); + } + }]; } else { NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; @@ -886,9 +940,15 @@ NSURLSessionDataTask * searchTask; else { NSString *message = dataResult[@"message"]; if ([message isEqualToString:@"Token is invalid"]) { - [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; - NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; - [self requestJoinGroup:tokenNew groupID:groupID CompletionHandler:completion]; + [self checkTokenCompletionHandler:^(NSString *token, NSError *error) { + if (error == nil) { + NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; + [self requestJoinGroup:tokenNew groupID:groupID CompletionHandler:completion]; + } + else { + completion(error); + } + }]; } else { NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; @@ -939,9 +999,15 @@ NSURLSessionDataTask * searchTask; } if ([message isEqualToString:@"Token is invalid"]) { - [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; - NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; - [self requestGroupList:tokenNew CompletionHandler:completion]; + [self checkTokenCompletionHandler:^(NSString *token, NSError *error) { + if (error == nil) { + NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; + [self requestGroupList:tokenNew CompletionHandler:completion]; + } + else { + completion(nil, error); + } + }]; } else { NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; @@ -987,9 +1053,15 @@ NSURLSessionDataTask * searchTask; } if ([message isEqualToString:@"Token is invalid"]) { - [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; - NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; - [self requestRankingList:tokenNew startDate:startDate endDate:endDate mode:mode page:page CompletionHandler:completion]; + [self checkTokenCompletionHandler:^(NSString *token, NSError *error) { + if (error == nil) { + NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; + [self requestRankingList:tokenNew startDate:startDate endDate:endDate mode:mode page:page CompletionHandler:completion]; + } + else { + completion(nil, error); + } + }]; } else { NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; @@ -1024,7 +1096,7 @@ NSURLSessionDataTask * searchTask; completion(token, nil); } else { - NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; + NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"refreshToken Error"}]; completion(nil, errorObject); } @@ -1032,7 +1104,7 @@ NSURLSessionDataTask * searchTask; else { // status = 0 error NSString *message = dataResult[@"message"]; if (message == nil) { - message = @"Unknown error"; + message = @"refreshToken Error"; } NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; completion(nil, loginFaild); @@ -1091,8 +1163,8 @@ NSURLSessionDataTask * searchTask; } #pragma mark - Private Function -- (void) checkToken { - // [[NSNotificationCenter defaultCenter] postNotificationName:kNotificationToken object:nil]; +- (void) checkTokenCompletionHandler:(void (^)(NSString *, NSError *)) completion +{ NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUser]; User *user = (User *)[NSKeyedUnarchiver unarchiveObjectWithData:data]; if (user != nil) { @@ -1100,10 +1172,19 @@ NSURLSessionDataTask * searchTask; if (error == nil) { [[NSUserDefaults standardUserDefaults] setObject:token forKey:kToken]; [[NSUserDefaults standardUserDefaults] synchronize]; + completion(token, nil); + } + else { + completion(nil, error); } }]; } + else { + NSError *error = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"User not found"}]; + completion(nil, error); + } } + - (NSData *) _encodeDictionary: (NSDictionary *) dictionary { NSMutableArray *parts = [[NSMutableArray alloc] init];