Files
flipper/react-native/react-native-flipper/ios/FlipperModule.m
Janic Duplessis 44f5e35675 Implement react-native-flipper on iOS (#795)
Summary:
Implement the react-native-flipper native module on iOS. Uses very similar abstractions as on Android.

## Changelog

[react-native-flipper] Support iOS
Pull Request resolved: https://github.com/facebook/flipper/pull/795

Test Plan:
Tested using the RN TicTacToe example app

{F228406333}

Reviewed By: mweststrate

Differential Revision: D19853017

Pulled By: priteshrnandgaonkar

fbshipit-source-id: d93d35ff984b9ba75f812c4c8e3c82e4d550f0c0
2020-02-14 21:17:11 -08:00

99 lines
2.3 KiB
Objective-C

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#import "FlipperModule.h"
#import "FlipperReactNativeJavaScriptPluginManager.h"
@implementation FlipperModule
{
__weak FlipperReactNativeJavaScriptPluginManager *_manager;
}
- (instancetype)init
{
return [self initWithManager:[FlipperReactNativeJavaScriptPluginManager sharedInstance]];
}
- (instancetype)initWithManager:(FlipperReactNativeJavaScriptPluginManager *)manager
{
if (self = [super init]) {
_manager = manager;
}
return self;
}
RCT_EXPORT_MODULE(Flipper)
+ (BOOL)requiresMainQueueSetup
{
return NO;
}
- (NSArray<NSString *> *)supportedEvents
{
return @[
@"react-native-flipper-plugin-connect",
@"react-native-flipper-plugin-disconnect",
@"react-native-flipper-receive-event",
];
}
- (void)startObserving
{
}
- (void)stopObserving
{
}
RCT_EXPORT_METHOD(registerPlugin:(NSString *)pluginId
inBackground:(BOOL)inBackground
statusCallback:(RCTResponseSenderBlock)statusCallback)
{
[_manager registerPluginWithModule:self
pluginId:pluginId
inBackground:inBackground
statusCallback:statusCallback];
}
RCT_EXPORT_METHOD(send:(NSString *)pluginId method:(NSString *)method data:(NSString *)data)
{
[_manager sendWithPluginId:pluginId method:method data:data];
}
RCT_EXPORT_METHOD(reportErrorWithMetadata:(NSString *)pluginId
reason:(NSString *)reason
stackTrace:(NSString *)stackTrace)
{
[_manager reportErrorWithMetadata:reason stackTrace:stackTrace pluginId:pluginId];
}
RCT_EXPORT_METHOD(reportError:(NSString *)pluginId error:(NSString *)error)
{
[_manager reportError:error pluginId:pluginId];
}
RCT_EXPORT_METHOD(subscribe:(NSString *)pluginId method:(NSString *)method)
{
[_manager subscribeWithModule:self pluginId:pluginId method:method];
}
RCT_EXPORT_METHOD(respondSuccess:(NSString *)responderId data:(NSString *)data)
{
[_manager respondSuccessWithResponderId:responderId data:data];
}
RCT_EXPORT_METHOD(respondError:(NSString *)responderId data:(NSString *)data)
{
[_manager respondErrorWithResponderId:responderId data:data];
}
@end