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