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
This commit is contained in:
Janic Duplessis
2020-02-14 21:15:23 -08:00
committed by Facebook Github Bot
parent 72c1c1fa4d
commit 44f5e35675
17 changed files with 1171 additions and 73 deletions

View File

@@ -0,0 +1,72 @@
/*
* 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 "FlipperReactNativeJavaScriptPlugin.h"
#import <FlipperKit/FlipperClient.h>
#import <FlipperKit/FlipperResponder.h>
#import "FlipperModule.h"
@implementation FlipperReactNativeJavaScriptPlugin
{
NSString *_pluginId;
BOOL _inBackground;
}
- (instancetype)initWithFlipperModule:(FlipperModule *)module
pluginId:(NSString *)pluginId
inBackground:(BOOL)inBackground
{
if (self = [super init]) {
_module = module;
_pluginId = pluginId;
_inBackground = inBackground;
}
return self;
}
- (NSString *)identifier
{
return _pluginId;
}
- (BOOL)runInBackground
{
return _inBackground;
}
- (void)didConnect:(id<FlipperConnection>)connection
{
_connection = connection;
[self fireOnConnect];
}
- (void)didDisconnect
{
_connection = nil;
[_module sendEventWithName:@"react-native-flipper-plugin-disconnect"
body:[self pluginParams]];
}
- (BOOL)isConnected
{
return _connection != nil;
}
- (void)fireOnConnect
{
[_module sendEventWithName:@"react-native-flipper-plugin-connect"
body:[self pluginParams]];
}
- (id)pluginParams
{
return @{@"plugin": _pluginId};
}
@end