Commit Graph

9 Commits

Author SHA1 Message Date
Janic Duplessis
912bfed0f8 Allow Flipper module instances to be created by applications (#786)
Summary:
This allows using the flipper RN module with TurboModules instead of using FlipperPackage.

## Changelog

[react-native-flipper] Allow Flipper module instances to be created by applications
Pull Request resolved: https://github.com/facebook/flipper/pull/786

Test Plan:
An instance of the Flipper module can now be created like this when using TurboModules:

```java
  Override
  public NativeModule getModule(String name, ReactApplicationContext reactContext) {
    switch (name) {
      ...
      case FlipperModule.NAME:
        return new FlipperModule(FlipperReactNativeJavaScriptPluginManager.getInstance(), reactContext);
      ...
    }
  }
```

Tested that it builds

Reviewed By: mweststrate

Differential Revision: D19812912

Pulled By: passy

fbshipit-source-id: 401b3e4552ea0cdb7444a2cf5d170c408edab4db
2020-02-10 05:54:55 -08:00
Pascal Hartig
3d66df2d86 Cleanup 4/4
Summary: I think that's it. Some more minor changes and removing an unused BUCK file.

Reviewed By: mweststrate

Differential Revision: D19471282

fbshipit-source-id: ceb85111f03a41141dca0bdd445cda12dfbac1c4
2020-01-24 07:00:15 -08:00
Pascal Hartig
2ec539acb1 Cleanup 3/n
Summary: Same treatment for FlipperReactNativeJavaScriptPlugin.

Reviewed By: mweststrate

Differential Revision: D19471257

fbshipit-source-id: b51d92074ae411c089f0010057f2b61ef6500de0
2020-01-24 07:00:15 -08:00
Pascal Hartig
4e77b37831 Cleanup 2/n
Summary:
Some more minor cleanups that don't (well, barely) affect
semantics.

- Fix singleton management in multi-threaded environments.
- Remove double assignment.
- Make all things final where they can be.
- Use ugly Hungarian notation.
- Weaken some types.

Reviewed By: mweststrate

Differential Revision: D19471227

fbshipit-source-id: 18833c3fe940f51b8d4cb3948a63387b8cd9316c
2020-01-24 07:00:14 -08:00
Pascal Hartig
6864556912 Cleanup 1/n
Summary:
Making some changes to make this more idiomatic and abide by
the Flipper/FB standards. This one just removes some unused
variables and annotations.

Reviewed By: jknoxville

Differential Revision: D19470676

fbshipit-source-id: 4beb516f00228b1d33e4e1b42d9bc4f8c29af565
2020-01-24 05:02:07 -08:00
Michel Weststrate
e306aeb010 Don't die when flipper isn't initialized and a plugin is used
Summary: This diff makes sure that the app doesn't die, or dies in a meaningful way if things are misconfigured.

Reviewed By: passy

Differential Revision: D19468273

fbshipit-source-id: 2471c263391906113446af57d795d1199eb1730e
2020-01-23 07:11:30 -08:00
Michel Weststrate
28fd95589f Made flipper plugins a little more robust
Summary: Added some assertions and string casts to make plugins a bit more robust

Reviewed By: passy

Differential Revision: D19427909

fbshipit-source-id: 46a3138805db865b538f745fae25ce1897e35736
2020-01-16 05:06:22 -08:00
Michel Weststrate
08e2d54f62 Make sure callbacks are not reused and reloading works
Summary:
This diff is part of the bigger task T60496135

This diff changes the RN support from crude to decent citizen, making sure we don't recycle callbacks over the bridge, use subscriptions were possible, and making sure connecting, disconnecting, etc works correctly

For example, connect and disconnect hooks should work.

Finally, throw in hot reloading into the mix, which causes the registerPlugin to be triggered another time, without the old one every been unloaded.
This should trigger a new 'onConnect' on the client, to make sure it can restore any state / subscriptions necessary, even though the never disappeared in the Java world.

These cases should all be handled well.

Reviewed By: jknoxville

Differential Revision: D19347330

fbshipit-source-id: de64a08f4043f01528c794430ccc3c717abf0180
2020-01-16 05:06:22 -08:00
Michel Weststrate
c7158f4517 Make it possible to write JS only plugins
Summary:
This diff is part of the bigger task T60496135

This diff is based on D18706643, extracting only the react native module parts

It implements the entire Android client api for JavaScript, so that there is feature parity. However this implementation is happy path only, and edge cases will be handled in separate diffs

Reviewed By: jknoxville

Differential Revision: D19310265

fbshipit-source-id: 589716fe059952bdde98df84ed250c5c6feaa118
2020-01-16 05:06:22 -08:00