diff --git a/Signal/src/Storyboard/Storyboard.storyboard b/Signal/src/Storyboard/Storyboard.storyboard index dcb45b04d..82f17a410 100755 --- a/Signal/src/Storyboard/Storyboard.storyboard +++ b/Signal/src/Storyboard/Storyboard.storyboard @@ -5318,8 +5318,7 @@ A0 09 9A FF A8 8A 09 99 - - + @@ -5373,9 +5372,6 @@ A0 09 9A FF A8 8A 09 99 - - - @@ -5494,7 +5490,7 @@ A0 09 9A FF A8 8A 09 99 - + diff --git a/Signal/src/network/PushManager.h b/Signal/src/network/PushManager.h index 25175e6f6..121f2fcbd 100644 --- a/Signal/src/network/PushManager.h +++ b/Signal/src/network/PushManager.h @@ -55,6 +55,8 @@ * The pushNotification and userNotificationFutureSource are accessed by the App Delegate after requested permissions. */ +-(TOCFuture*)registerPushNotificationFuture; +- (void)registrationForPushWithSuccess:(void (^)(NSData* pushToken))success failure:(void (^)())failure; @property TOCFutureSource *pushNotificationFutureSource; @property TOCFutureSource *userNotificationFutureSource; diff --git a/Signal/src/network/http/RPAPICall.h b/Signal/src/network/http/RPAPICall.h index 3e4d77334..dc8720f41 100644 --- a/Signal/src/network/http/RPAPICall.h +++ b/Signal/src/network/http/RPAPICall.h @@ -36,8 +36,7 @@ typedef NS_ENUM(NSInteger, HTTPMethod) { + (RPAPICall*)verifyVerificationCode:(NSString*)verificationCode; + (RPAPICall*)registerPushNotificationWithPushToken:(NSData*)pushToken; + (RPAPICall*)requestTextSecureVerificationCode; -+ (RPAPICall*)unregister; - ++ (RPAPICall*)unregisterWithPushToken:(NSData*)pushToken; + (RPAPICall*)fetchBloomFilter; //+ (RPAPICall*)requestToOpenPortWithSessionId:(int64_t)sessionId; diff --git a/Signal/src/network/http/RPAPICall.m b/Signal/src/network/http/RPAPICall.m index e44f5c588..0219d54ce 100644 --- a/Signal/src/network/http/RPAPICall.m +++ b/Signal/src/network/http/RPAPICall.m @@ -86,10 +86,12 @@ return apiCall; } -+ (RPAPICall*)unregister { ++ (RPAPICall*)unregisterWithPushToken:(NSData*)pushToken { RPAPICall *apiCall = [self defaultAPICall]; apiCall.method = HTTP_DELETE; - apiCall.endPoint = @"/apn"; + apiCall.endPoint = [NSString stringWithFormat:@"/apn/%@", pushToken.encodedAsHexString]; + apiCall.parameters = nil; + apiCall.requestSerializer = [self basicAuthenticationSerializer]; return apiCall; } diff --git a/Signal/src/network/http/RPServerRequestsManager.m b/Signal/src/network/http/RPServerRequestsManager.m index 61988fa6d..5a397033c 100644 --- a/Signal/src/network/http/RPServerRequestsManager.m +++ b/Signal/src/network/http/RPServerRequestsManager.m @@ -65,6 +65,7 @@ MacrosSingletonImplemention break; case HTTP_DELETE: + NSLog(@"endpoint %@, request serializer %@",apiCall.endPoint,apiCall.requestSerializer); [self.operationManager DELETE:apiCall.endPoint parameters:apiCall.parameters success:success failure:failure]; break; diff --git a/Signal/src/view controllers/SettingsTableViewController.m b/Signal/src/view controllers/SettingsTableViewController.m index d13fbc207..59ed898ad 100644 --- a/Signal/src/view controllers/SettingsTableViewController.m +++ b/Signal/src/view controllers/SettingsTableViewController.m @@ -37,6 +37,7 @@ #import "MediaSettingsTableViewController.h" #import "AdvancedSettingsTableViewController.h" #import "AboutTableViewController.h" +#import "PushManager.h" #define kProfileCellHeight 87.0f #define kStandardCellHeight 44.0f @@ -175,12 +176,19 @@ typedef enum { -(IBAction)unregisterUser:(id)sender { [TSAccountManager unregisterTextSecureWithSuccess:^{ - [[TSStorageManager sharedManager] wipe]; - exit(0); + [PushManager.sharedManager registrationForPushWithSuccess:^(NSData* pushToken){ + [[RPServerRequestsManager sharedInstance]performRequest:[RPAPICall unregisterWithPushToken:pushToken] success:^(NSURLSessionDataTask *task, id responseObject) { + [[TSStorageManager sharedManager] wipe]; + exit(0); + } failure:^(NSURLSessionDataTask *task, NSError *error) { + SignalAlertView(@"Failed to unregister RedPhone component of Signal", @""); + }]; + } failure:^{ + SignalAlertView(@"Failed to unregister RedPhone component of Signal", @""); + }]; } failure:^(NSError *error) { - SignalAlertView(@"Failed to unregister", @""); + SignalAlertView(@"Failed to unregister TextSecure component of Signal", @""); }]; - } -(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath