iOS: use category method to translate JSValue to object

This commit is contained in:
pengfei.zhou
2022-03-03 15:36:16 +08:00
committed by osborn
parent 85a03bdd93
commit aa837b807a
5 changed files with 201 additions and 36 deletions

View File

@@ -29,6 +29,7 @@
#import "DoricContext.h"
#import "DoricContextManager.h"
#import "DoricPerformanceProfile.h"
#import "JSValue+Doric.h"
@interface DoricDefaultMonitor : NSObject <DoricMonitorProtocol>
@end
@@ -210,8 +211,8 @@ - (void)initJSExecutor {
}
}];
[self.jsExecutor injectGlobalJSObject:INJECT_BRIDGE obj:^(NSString *contextId, NSString *module, NSString *method, NSString *callbackId, id argument) {
return [self.bridgeExtension callNativeWithContextId:contextId module:module method:method callbackId:callbackId argument:argument];
[self.jsExecutor injectGlobalJSObject:INJECT_BRIDGE obj:^(NSString *contextId, NSString *module, NSString *method, NSString *callbackId, JSValue *argument) {
return [self.bridgeExtension callNativeWithContextId:contextId module:module method:method callbackId:callbackId argument:[self jsValueToObject:argument]];
}];
}
@@ -264,7 +265,7 @@ - (JSValue *)invokeDoricMethod:(NSString *)method arguments:(va_list)args {
- (JSValue *)invokeDoricMethod:(NSString *)method argumentsArray:(NSArray *)args {
JSValue *ret = [self.jsExecutor invokeObject:GLOBAL_DORIC method:method args:args];
if (![method isEqualToString:@"pureCallEntityMethod"]) {
[self.jsExecutor invokeObject:GLOBAL_DORIC method:DORIC_HOOK_NATIVE_CALL args:nil];
[self.jsExecutor invokeObject:GLOBAL_DORIC method:DORIC_HOOK_NATIVE_CALL args:@[]];
}
return ret;
}
@@ -311,4 +312,8 @@ - (void)callbackTimer:(NSTimer *)timer {
}
}];
}
- (id)jsValueToObject:(JSValue *)jsValue {
return [jsValue toObjectWithArrayBuffer];
}
@end