Skip to content

Commit ac1a56e

Browse files
committed
Fix bug found by @drewburch that would cause response messages sent from ObjC to be double-wrapped
1 parent 8ac33bf commit ac1a56e

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

WebViewJavascriptBridge/WebViewJavascriptBridge.m

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ @interface WebViewJavascriptBridge ()
1515
@property (nonatomic, copy) WVJBHandler messageHandler;
1616

1717
- (void)_flushMessageQueue;
18-
- (void)_queueData:(NSDictionary*)data responseCallback:(WVJBResponseCallback)responseCallback handlerName:(NSString*)handlerName;
18+
- (void)_sendData:(NSDictionary*)data responseCallback:(WVJBResponseCallback)responseCallback handlerName:(NSString*)handlerName;
19+
- (void)_queueMessage:(NSDictionary*)message;
1920
- (void)_dispatchMessage:(NSDictionary*)message;
2021

2122
@end
@@ -48,7 +49,7 @@ - (void)send:(NSDictionary *)data {
4849
}
4950

5051
- (void)send:(NSDictionary *)data responseCallback:(WVJBResponseCallback)responseCallback {
51-
[self _queueData:data responseCallback:responseCallback handlerName:nil];
52+
[self _sendData:data responseCallback:responseCallback handlerName:nil];
5253
}
5354

5455
- (void)callHandler:(NSString *)handlerName {
@@ -60,14 +61,14 @@ - (void)callHandler:(NSString *)handlerName data:(id)data {
6061
}
6162

6263
- (void)callHandler:(NSString *)handlerName data:(id)data responseCallback:(WVJBResponseCallback)responseCallback {
63-
[self _queueData:data responseCallback:responseCallback handlerName:handlerName];
64+
[self _sendData:data responseCallback:responseCallback handlerName:handlerName];
6465
}
6566

6667
- (void)registerHandler:(NSString *)handlerName handler:(WVJBHandler)handler {
6768
[self.messageHandlers setObject:handler forKey:handlerName];
6869
}
6970

70-
- (void)_queueData:(NSDictionary *)data responseCallback:(WVJBResponseCallback)responseCallback handlerName:(NSString*)handlerName {
71+
- (void)_sendData:(NSDictionary *)data responseCallback:(WVJBResponseCallback)responseCallback handlerName:(NSString*)handlerName {
7172
NSMutableDictionary* message = [NSMutableDictionary dictionaryWithObject:data forKey:@"data"];
7273

7374
if (responseCallback) {
@@ -79,7 +80,10 @@ - (void)_queueData:(NSDictionary *)data responseCallback:(WVJBResponseCallback)r
7980
if (handlerName) {
8081
[message setObject:handlerName forKey:@"handlerName"];
8182
}
82-
83+
[self _queueMessage:message];
84+
}
85+
86+
- (void)_queueMessage:(NSDictionary *)message {
8387
if (self.startupMessageQueue) {
8488
[self.startupMessageQueue addObject:message];
8589
} else {
@@ -116,8 +120,8 @@ - (void)_flushMessageQueue {
116120
if ([message objectForKey:@"callbackId"]) {
117121
__block NSString* responseId = [message objectForKey:@"callbackId"];
118122
responseCallback = ^(NSDictionary* data) {
119-
NSDictionary* response = [NSDictionary dictionaryWithObjectsAndKeys: responseId, @"responseId", data, @"data", nil];
120-
[self send:response];
123+
NSDictionary* responseMessage = [NSDictionary dictionaryWithObjectsAndKeys: responseId, @"responseId", data, @"data", nil];
124+
[self _queueMessage:responseMessage];
121125
};
122126
}
123127

0 commit comments

Comments
 (0)