Skip to content

Commit 5ee5a8e

Browse files
committed
SDK-777 add bool status
1 parent afa4099 commit 5ee5a8e

File tree

6 files changed

+42
-28
lines changed

6 files changed

+42
-28
lines changed

Branch-SDK-Tests/BNCCallbackMapTests.m

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,35 +32,40 @@ - (void)testSingleSave {
3232
BNCCallbackMap *map = [BNCCallbackMap new];
3333

3434
// block variable callback will update
35-
__block NSString *status = @"no callback";
35+
__block BOOL successResult = NO;
36+
__block NSString *statusMessageResult = @"no callback";
3637

3738
// store a request and callback block
3839
BNCServerRequest *request = [BNCServerRequest new];
39-
[map storeRequest:request withCompletion:^(NSString * _Nonnull statusMessage) {
40-
status = statusMessage;
40+
[map storeRequest:request withCompletion:^(BOOL success, NSString * _Nonnull statusMessage) {
41+
successResult = success;
42+
statusMessageResult = statusMessage;
4143
}];
4244

4345
// confirm there's one entry
4446
XCTAssert([map containsRequest:request] != NO);
4547
XCTAssert(map.callbacks.count == 1);
4648

4749
// call callback
48-
[map callCompletionForRequest:request withStatusMessage:@"callback"];
50+
[map callCompletionForRequest:request withSuccessStatus:YES message:@"callback"];
4951

5052
// check if variable was updated
51-
XCTAssert([@"callback" isEqualToString:status]);
53+
XCTAssertTrue(successResult);
54+
XCTAssert([@"callback" isEqualToString:statusMessageResult]);
5255
}
5356

5457
- (void)testDeletedRequest {
5558
BNCCallbackMap *map = [BNCCallbackMap new];
5659

5760
// block variable callback will update
58-
__block NSString *status = @"no callback";
61+
__block BOOL successResult = NO;
62+
__block NSString *statusMessageResult = @"no callback";
5963

6064
// store a request and callback block
6165
BNCServerRequest *request = [BNCServerRequest new];
62-
[map storeRequest:request withCompletion:^(NSString * _Nonnull statusMessage) {
63-
status = statusMessage;
66+
[map storeRequest:request withCompletion:^(BOOL success, NSString * _Nonnull statusMessage) {
67+
successResult = success;
68+
statusMessageResult = statusMessage;
6469
}];
6570

6671
// confirm there's one entry
@@ -70,10 +75,11 @@ - (void)testDeletedRequest {
7075
// confirm a new request results in no callback
7176
request = [BNCServerRequest new];
7277
XCTAssert([map containsRequest:request] == NO);
73-
[map callCompletionForRequest:request withStatusMessage:@"callback"];
78+
[map callCompletionForRequest:request withSuccessStatus:YES message:@"callback"];
7479

7580
// check if variable was updated
76-
XCTAssert([@"no callback" isEqualToString:status]);
81+
XCTAssertFalse(successResult);
82+
XCTAssert([@"no callback" isEqualToString:statusMessageResult]);
7783
}
7884

7985
- (void)testSeveralBlocks {
@@ -82,21 +88,21 @@ - (void)testSeveralBlocks {
8288
__block int count = 0;
8389

8490
BNCServerRequest *request = [BNCServerRequest new];
85-
[map storeRequest:request withCompletion:^(NSString * _Nonnull statusMessage) {
91+
[map storeRequest:request withCompletion:^(BOOL success, NSString * _Nonnull statusMessage) {
8692
count++;
8793
}];
8894

8995
for (int i=0; i<100; i++) {
9096
BNCServerRequest *tmp = [BNCServerRequest new];
91-
[map storeRequest:tmp withCompletion:^(NSString * _Nonnull statusMessage) {
97+
[map storeRequest:tmp withCompletion:^(BOOL success, NSString * _Nonnull statusMessage) {
9298
count++;
9399
}];
94100
}
95101

96102
// confirm there's less than 100 entries. By not retaining the tmp request, they should be getting ARC'd
97103
XCTAssert(map.callbacks.count < 100);
98104

99-
[map callCompletionForRequest:request withStatusMessage:@"callback"];
105+
[map callCompletionForRequest:request withSuccessStatus:YES message:@"callback"];
100106
XCTAssert(count == 1);
101107
}
102108

Branch-SDK/Branch-SDK/BNCCallbackMap.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ NS_ASSUME_NONNULL_BEGIN
1515

1616
+ (instancetype)shared;
1717

18-
- (void)storeRequest:(BNCServerRequest *)request withCompletion:(void (^_Nullable)(NSString *statusMessage))completion;
18+
- (void)storeRequest:(BNCServerRequest *)request withCompletion:(void (^_Nullable)(BOOL success, NSString *statusMessage))completion;
1919

2020
- (BOOL)containsRequest:(BNCServerRequest *)request;
2121

22-
- (void)callCompletionForRequest:(BNCServerRequest *)request withStatusMessage:(NSString *)statusMessage;
22+
- (void)callCompletionForRequest:(BNCServerRequest *)request withSuccessStatus:(BOOL)status message:(NSString *)statusMessage;
2323

2424
@end
2525

Branch-SDK/Branch-SDK/BNCCallbackMap.m

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ - (instancetype)init {
3535
return self;
3636
}
3737

38-
- (void)storeRequest:(BNCServerRequest *)request withCompletion:(void (^_Nullable)(NSString *statusMessage))completion {
38+
- (void)storeRequest:(BNCServerRequest *)request withCompletion:(void (^_Nullable)(BOOL success, NSString *statusMessage))completion {
3939
[self.callbacks setObject:completion forKey:request];
4040
}
4141

@@ -47,10 +47,10 @@ - (BOOL)containsRequest:(BNCServerRequest *)request {
4747
return contains;
4848
}
4949

50-
- (void)callCompletionForRequest:(BNCServerRequest *)request withStatusMessage:(NSString *)statusMessage {
51-
void (^completion)(NSString *) = [self.callbacks objectForKey:request];
50+
- (void)callCompletionForRequest:(BNCServerRequest *)request withSuccessStatus:(BOOL)status message:(NSString *)statusMessage {
51+
void (^completion)(BOOL, NSString *) = [self.callbacks objectForKey:request];
5252
if (completion) {
53-
completion(statusMessage);
53+
completion(status, statusMessage);
5454
}
5555
}
5656

Branch-SDK/Branch-SDK/Branch.m

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1877,11 +1877,15 @@ - (void) processRequest:(BNCServerRequest*)req
18771877
BNCPerformBlockOnMainThreadSync(^{
18781878
[req processResponse:response error:error];
18791879
if ([req isKindOfClass:[BranchEventRequest class]]) {
1880-
NSString *status = @"Complete";
18811880
if (error) {
1882-
[NSString stringWithFormat:@"Error: %@", error.description];
1881+
NSString *message = @"Error: server returned an error";
1882+
if (error.description) {
1883+
message = [NSString stringWithFormat:@"Error: %@", error.description];
1884+
}
1885+
[[BNCCallbackMap shared] callCompletionForRequest:req withSuccessStatus:NO message:message];
1886+
} else {
1887+
[[BNCCallbackMap shared] callCompletionForRequest:req withSuccessStatus:YES message:@"Success"];
18831888
}
1884-
[[BNCCallbackMap shared] callCompletionForRequest:req withStatusMessage:status];
18851889
}
18861890
});
18871891

@@ -1921,7 +1925,8 @@ - (void) processRequest:(BNCServerRequest*)req
19211925

19221926
// BranchEventRequests can have callbacks directly tied to them.
19231927
if ([request isKindOfClass:[BranchEventRequest class]]) {
1924-
[[BNCCallbackMap shared] callCompletionForRequest:req withStatusMessage:[NSString stringWithFormat:@"Error: %@", error.description]];
1928+
NSString *message = @"Error: server returned an error. Cancelling queued network requests";
1929+
[[BNCCallbackMap shared] callCompletionForRequest:request withSuccessStatus:NO message:message];
19251930
}
19261931
});
19271932
}

Branch-SDK/Branch-SDK/BranchEvent.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,12 @@ typedef NS_ENUM(NSInteger, BranchEventAdType) {
8888
@property (nonatomic, copy) NSArray<BranchUniversalObject*>*_Nonnull contentItems;
8989
@property (nonatomic, copy) NSDictionary<NSString*, NSString*> *_Nonnull customData;
9090

91-
- (void)logEventWithCompletion:(void (^_Nullable)(NSString * _Nullable statusMessage))completion;
91+
/**
92+
Logs the event on the Branch server. This version will callback on success/failure.
93+
*/
94+
- (void)logEventWithCompletion:(void (^_Nullable)(BOOL success, NSString * _Nullable statusMessage))completion;
9295

93-
- (void) logEvent; //!< Logs the event on the Branch server.
96+
- (void) logEvent; //!< Logs the event on the Branch server. This version automatically caches and retries as necessary.
9497
- (NSDictionary*_Nonnull) dictionary; //!< Returns a dictionary representation of the event.
9598
- (NSString* _Nonnull) description; //!< Returns a string description of the event.
9699
@end

Branch-SDK/Branch-SDK/BranchEvent.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -222,19 +222,19 @@ - (NSDictionary*) dictionary {
222222
];
223223
}
224224

225-
- (void)logEventWithCompletion:(void (^_Nullable)(NSString *statusMessage))completion {
225+
- (void)logEventWithCompletion:(void (^_Nullable)(BOOL success, NSString *statusMessage))completion {
226226
if (![_eventName isKindOfClass:[NSString class]] || _eventName.length == 0) {
227227
BNCLogError(@"Invalid event type '%@' or empty string.", NSStringFromClass(_eventName.class));
228228
if (completion) {
229-
completion(@"Error: Invalid event type");
229+
completion(NO, @"Error: Invalid event type");
230230
}
231231
return;
232232
}
233233

234234
// logEvent requests without a completion are automatically retried later
235235
if (completion != nil && [[BNCReachability shared] reachabilityStatus] == nil) {
236236
if (completion) {
237-
completion(@"Error: No connectivity");
237+
completion(NO, @"Error: No connectivity");
238238
}
239239
return;
240240
}

0 commit comments

Comments
 (0)