mirror of
https://github.com/status-im/react-native-webview-bridge.git
synced 2026-08-31 05:11:12 +00:00
94 lines
2.9 KiB
Objective-C
94 lines
2.9 KiB
Objective-C
//
|
|
// RCTWebViewManager+WebViewManager.m
|
|
// Sample2
|
|
//
|
|
// Created by Ali Najafizadeh on 2015-07-10.
|
|
|
|
#import "RCTWebViewManager+WebViewManager.h"
|
|
#import "RCTBridge.h"
|
|
#import "RCTSparseArray.h"
|
|
#import "RCTUIManager.h"
|
|
#import "RCTWebView.h"
|
|
#import "RCTWebView+WebViewBridge.h"
|
|
|
|
@implementation RCTWebViewManager (WebViewManager)
|
|
|
|
//NOTE
|
|
//DO not include RCT_EXPORT_MODULE() here because RCTWebViewManager already has it and
|
|
//we are using category feature in objective-c
|
|
|
|
RCT_EXPORT_METHOD(bridgeSetup:(NSNumber *)reactTag)
|
|
{
|
|
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, RCTSparseArray *viewRegistry) {
|
|
RCTWebView *view = viewRegistry[reactTag];
|
|
if (![view isKindOfClass:[RCTWebView class]]) {
|
|
RCTLogMustFix(@"Invalid view returned from registry, expecting RKWebView, got: %@", view);
|
|
}
|
|
|
|
[view bridgeSetup];
|
|
}];
|
|
}
|
|
|
|
RCT_EXPORT_METHOD(callbackCleanup:(NSNumber *)reactTag)
|
|
{
|
|
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, RCTSparseArray *viewRegistry) {
|
|
RCTWebView *view = viewRegistry[reactTag];
|
|
if (![view isKindOfClass:[RCTWebView class]]) {
|
|
RCTLogMustFix(@"Invalid view returned from registry, expecting RKWebView, got: %@", view);
|
|
}
|
|
|
|
[view callbackCleanup:reactTag];
|
|
}];
|
|
}
|
|
|
|
RCT_EXPORT_METHOD(onMessage:(NSNumber *)reactTag
|
|
withCallback:(RCTResponseSenderBlock)callback)
|
|
{
|
|
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, RCTSparseArray *viewRegistry) {
|
|
RCTWebView *view = viewRegistry[reactTag];
|
|
if (![view isKindOfClass:[RCTWebView class]]) {
|
|
RCTLogMustFix(@"Invalid view returned from registry, expecting RKWebView, got: %@", view);
|
|
}
|
|
|
|
[view onMessageCallback:callback withReactTag:reactTag];
|
|
}];
|
|
}
|
|
|
|
RCT_EXPORT_METHOD(send:(NSNumber *)reactTag
|
|
value:(NSString*)message)
|
|
{
|
|
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, RCTSparseArray *viewRegistry) {
|
|
RCTWebView *view = viewRegistry[reactTag];
|
|
if (![view isKindOfClass:[RCTWebView class]]) {
|
|
RCTLogMustFix(@"Invalid view returned from registry, expecting RKWebView, got: %@", view);
|
|
}
|
|
[view send:message];
|
|
}];
|
|
}
|
|
|
|
RCT_EXPORT_METHOD(eval:(NSNumber *)reactTag
|
|
value:(NSString*)value)
|
|
{
|
|
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, RCTSparseArray *viewRegistry) {
|
|
RCTWebView *view = viewRegistry[reactTag];
|
|
if (![view isKindOfClass:[RCTWebView class]]) {
|
|
RCTLogMustFix(@"Invalid view returned from registry, expecting RKWebView, got: %@", view);
|
|
}
|
|
[view eval:value];
|
|
}];
|
|
}
|
|
|
|
RCT_EXPORT_METHOD(injectBridgeScript:(NSNumber *)reactTag)
|
|
{
|
|
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, RCTSparseArray *viewRegistry) {
|
|
RCTWebView *view = viewRegistry[reactTag];
|
|
if (![view isKindOfClass:[RCTWebView class]]) {
|
|
RCTLogMustFix(@"Invalid view returned from registry, expecting RKWebView, got: %@", view);
|
|
}
|
|
[view injectBridgeScript: reactTag];
|
|
}];
|
|
}
|
|
|
|
|
|
@end
|