Files
react-native-webview-bridge/WebViewBridge/RCTWebViewManager+WebViewManager.m
T

94 lines
2.9 KiB
Objective-C
Raw Normal View History

2015-07-10 13:18:11 -04:00
//
2015-07-14 15:08:02 -04:00
// RCTWebViewManager+WebViewManager.m
2015-07-10 13:18:11 -04:00
// Sample2
//
// Created by Ali Najafizadeh on 2015-07-10.
2015-07-14 15:08:02 -04:00
#import "RCTWebViewManager+WebViewManager.h"
2015-07-10 13:18:11 -04:00
#import "RCTBridge.h"
#import "RCTSparseArray.h"
#import "RCTUIManager.h"
#import "RCTWebView.h"
2015-07-14 15:08:02 -04:00
#import "RCTWebView+WebViewBridge.h"
2015-07-10 13:18:11 -04:00
2015-07-14 15:08:02 -04:00
@implementation RCTWebViewManager (WebViewManager)
2015-07-10 13:18:11 -04:00
//NOTE
//DO not include RCT_EXPORT_MODULE() here because RCTWebViewManager already has it and
//we are using category feature in objective-c
2015-07-14 12:22:25 -04:00
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);
}
2015-07-14 15:08:02 -04:00
2015-07-14 12:22:25 -04:00
[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);
}
2015-07-14 15:08:02 -04:00
2015-07-14 12:22:25 -04:00
[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);
}
2015-07-14 15:08:02 -04:00
2015-07-14 12:22:25 -04:00
[view onMessageCallback:callback withReactTag:reactTag];
}];
}
2015-07-10 13:18:11 -04:00
2015-07-14 13:53:03 -04:00
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];
}];
}
2015-07-10 13:18:11 -04:00
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];
}];
}
2015-07-13 16:09:24 -04:00
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);
}
2015-07-14 13:53:03 -04:00
[view injectBridgeScript: reactTag];
2015-07-13 16:09:24 -04:00
}];
}
2015-07-10 13:18:11 -04:00
@end