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

105 lines
3.3 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-08-17 09:40:37 -04:00
RCT_EXPORT_METHOD(bridgeSetup:(nonnull NSNumber *)reactTag)
2015-07-14 12:22:25 -04:00
{
[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];
}];
}
2015-08-17 09:40:37 -04:00
RCT_EXPORT_METHOD(callbackCleanup:(nonnull NSNumber *)reactTag)
2015-07-14 12:22:25 -04:00
{
[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];
}];
}
2015-08-17 09:40:37 -04:00
RCT_EXPORT_METHOD(onMessage:(nonnull NSNumber *)reactTag
2015-07-14 12:22:25 -04:00
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-08-17 09:40:37 -04:00
RCT_EXPORT_METHOD(send:(nonnull NSNumber *)reactTag
2015-07-14 13:53:03 -04:00
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-08-17 09:40:37 -04:00
RCT_EXPORT_METHOD(eval:(nonnull NSNumber *)reactTag
2015-07-10 13:18:11 -04:00
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-08-17 09:40:37 -04:00
RCT_EXPORT_METHOD(injectBridgeScript:(nonnull NSNumber *)reactTag)
2015-07-13 16:09:24 -04:00
{
[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-09-04 13:29:03 -07:00
RCT_EXPORT_METHOD(print:(nonnull NSNumber *)reactTag)
2015-08-21 10:03:07 -04:00
{
[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 print];
}];
}
2015-07-10 13:18:11 -04:00
@end