Summary:
== Highlights
* Improved UI when exporting Flipper data. (45999a5292)
== Fixes
* The Shared Preference Plugin on Android will search for all shared pref files instead of only the package name by default. (825ecb8e23)
* When restarting Flipper and the previously selected plugin no longer exists, the UI would crash. (c4a8e73543)
Commit log: https://github.com/facebook/flipper/compare/v0.19.0...v0.20.0
Reviewed By: danielbuechele
Differential Revision: D14951753
fbshipit-source-id: dbafc2d41cd25b2ede218b3fe3e99745226939a9
Summary:
We've had a bunch of different options that were all binary
switches with very different ways of displaying them.
This consolidates them all to use ToggleSwitches. I think it
may still make sense to move them all to a sidebar as it's
the case for the Analytics plugin, but that's for another diff.
Reviewed By: danielbuechele
Differential Revision: D14933392
fbshipit-source-id: 7ef286b61142a564a7cde6de875266ac8641704b
Summary:
As seen in https://our.intern.facebook.com/intern/bug/653953588368620/,
the network plugin can crash if content doesn't look like a URI.
Ideally, we'd be more granular in catching this, but for now skipping
that content seems better than crashing the entire plugin page.
Reviewed By: danielbuechele
Differential Revision: D14971610
fbshipit-source-id: 2708e5c0d4d1f584419d24c7dc38438009015565
Summary: the simpliest approach to render this metadata for debugging purpose
Reviewed By: bcuccioli
Differential Revision: D14974129
fbshipit-source-id: d816d1ef8dcd1bc333c4d0cdf70d6d9fb925bc03
Summary:
Currently running the sample app on a pre-21 device produces a runtime error. This is because it includes OkHttp which requires 21+.
So this change just stops the sample app from being installable on pre-21 devices.
```
FATAL EXCEPTION: main
Process: com.facebook.flipper.sample, PID: 19629
java.lang.ExceptionInInitializerError
at okhttp3.OkHttpClient.newSslSocketFactory(OkHttpClient.java:263)
at okhttp3.OkHttpClient.<init>(OkHttpClient.java:229)
at okhttp3.OkHttpClient$Builder.build(OkHttpClient.java:1015)
at com.facebook.flipper.sample.FlipperSampleApplication.onCreate(FlipperSampleApplication.java:54)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4344)
at android.app.ActivityThread.access$1500(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: Expected Android API level 21+ but was 19
at okhttp3.internal.platform.AndroidPlatform.buildIfSupported(AndroidPlatform.java:238)
at okhttp3.internal.platform.Platform.findPlatform(Platform.java:202)
at okhttp3.internal.platform.Platform.<clinit>(Platform.java:79)
... 16 more
```
Reviewed By: passy
Differential Revision: D14953859
fbshipit-source-id: 8289c19e837f1d3739e120dc5a0f53111b800ca0
Summary:
Updating some deps and starting with the thing
that helps identify outdated things.
Reviewed By: jknoxville
Differential Revision: D14933477
fbshipit-source-id: 3a0f84abf97f9327ecab72388e114a1fb533504b
Summary:
The crash logged from `ErrorReporterRunnable` wasn't detailed. For example look at the following video.
Also for some reason the `FlipperConnection` interface doesn't have an argument for crash name. Thus I changed the js side of the plugin to accept `crash.name` to be undefined.
{F155526537}
Reviewed By: passy
Differential Revision: D14852561
fbshipit-source-id: 6daf9847535b4508fa312b4f940b014911aae2e5
Summary:
Before trying to debug the bugs we found, let's first
get it to the latest version.
Reviewed By: jknoxville
Differential Revision: D14913129
fbshipit-source-id: 255ecf02e495fccb21e413dff166aacfd80207e7
Summary:
I dislike the sprinkled eslint ignores. Let's put this
in one place and just depend on isProduction().
Reviewed By: jknoxville
Differential Revision: D14913057
fbshipit-source-id: 2f5a98b7dba1ac1829eaeab24290d2f66820edf9
Summary:
During client setup, if no device is found with a matching CSR, and any of those devices errored while trying to find that out, surface that error, instead of a generic 'No matching device found'.
This means that the warning about some unusable samsung devices now shows again, instead of a generic message.
Pull Request resolved: https://github.com/facebook/flipper/pull/413
Reviewed By: passy
Differential Revision: D14891185
Pulled By: jknoxville
fbshipit-source-id: 8f4cb4e8e04defb429a4ca915b0dab4725495c87
Summary: I though I already did this, when releasing it. Apparently not.
Reviewed By: jknoxville
Differential Revision: D14854810
fbshipit-source-id: 4da61866925e06a415bfaed0f48e5434e769ec39
Summary:
Adding a `moduleNameMapper` for jest tests, to map the module `flipper` to `src/index.js`. This fixes the electron tests.
While we're at it, upgrading jest and jest-runner/electron to the latest versions.
Reviewed By: jknoxville
Differential Revision: D14870486
fbshipit-source-id: c4c31066ed5ce8a6d5ed4e7e4f47d3c5d2370553
Summary: I'm adding these in the table plugin for now, since it's the only native plugin, but it probably makes sense to have this ability in all native plugins.
Reviewed By: passy
Differential Revision: D14833326
fbshipit-source-id: 906190745091e02daccb9f6e84b95e0e13f2d8bd
Summary: Adds ability to add things above and below the table when using native plugins.
Reviewed By: passy
Differential Revision: D14850839
fbshipit-source-id: cc7fa6d8055900c29f5af6f3460bc280c0a4a675
Summary:
When a plugin was selected the last time Flipper was running, but is not available anymore, Flipper was still trying to load the plugin and failed.
Now, if the selected plugin is not available, we just don't render anything.
Reviewed By: jknoxville
Differential Revision: D14854930
fbshipit-source-id: 9ddec47becce7bffcf93b3f4a092a8fcf2022f4f
Summary: These are full width blocks, and can be put anywhere, so calling them SidebarSections isn't very helpful.
Reviewed By: danielbuechele
Differential Revision: D14833465
fbshipit-source-id: 2433337f78b6bbcb951cd90b6925de1b9a304d42
Summary: Now that it has been inlined into TableNativePlugin, I'm reverting it back to it was before to keep it simple.
Reviewed By: passy
Differential Revision: D14800383
fbshipit-source-id: 81725134b6598c03e3ddfb1eb9269d463815dc82
Summary: Before expanding what a table plugin can do, I'm extracting the createTablePlugin functionality into the native plugin component, so it can evolve independently without lots of forks in the code.
Reviewed By: passy
Differential Revision: D14800313
fbshipit-source-id: dbb34fe974c507663151daeb6631d1911b46f6df
Summary:
The `instanceof Object` check was throwing an "cannnot convert object to primitve value" error, for some reason that I didn't fully understand. Replacing this check with a `typeof` check. However, `null` also returns `object`, so we are explictly checking this as well.
This was the error that happened before, on every POST request:
https://pxl.cl/vc6K
Reviewed By: passy
Differential Revision: D14827145
fbshipit-source-id: 999480db9afb1e0cc0d1bef73fb0cb2223fa0bc4
Summary:
The main change is is changing from the inheritance model:
`FlipperPlugin > NativePlugin > TablePlugin > ConcretePlugin`
to a composition model where:
`NativePlugin > TablePlugin > ConcretePlugin`
And behind the scenes, there's a `FlipperPlugin` that has a `NativePlugin` reference.
Now your native plugin will call methods like (in the table case) `display.updateRows` instead of `super.updateRows()`
The reasons for this are:
* Testability: we can easily mock the display and assert output.
* Encapsulation: Previously, native plugins could call `mConnection.send(...)` and send completely unsupported messages to the desktop. Now they only have access to the display's public api, which is guaranteed to work.
I've also changed it so that on every row update, we send the latest table metadata along with it. This makes sure we can ensure that the right table schema is displayed for the current data.
QueryResponder interface also added, which will come in useful for queryable datasets.
Reviewed By: passy
Differential Revision: D14751885
fbshipit-source-id: ea0bbd25f7eaa60020f8866fe210d8bd1c22e90b
Summary:
There's been an ongoing fight between eslint and prettier.
You win, prettier.
Reviewed By: danielbuechele
Differential Revision: D14799153
fbshipit-source-id: a4f0546a3a468bb21fed47d61bc14bd7e6f0b185
Summary: Eslint doesn't like them and me neither.
Reviewed By: danielbuechele
Differential Revision: D14798690
fbshipit-source-id: 5ee7108b9ecfbb05cf2d54cfce68931d16d69a73
Summary:
When starting Flipper with `--launcher-msg`, it currently shows a red error bar at the bottom. That's not ideal for various reasons including it looking kinda bad and it only supporting a single error (the last one set).
This instead adds an action that shows an indicator next to the version at the top as we had it before with the previous system.
Reviewed By: danielbuechele
Differential Revision: D14778859
fbshipit-source-id: 28591de6262e090a4e59a7f5a8cd86d7b3abf8fe
Summary:
Adding a recommended workflow for those that don't have a good setup after conversation in https://github.com/facebook/flipper/pull/227
Just a starting point but I think it's better than nothing.
Pull Request resolved: https://github.com/facebook/flipper/pull/409
Reviewed By: danielbuechele
Differential Revision: D14798121
Pulled By: jknoxville
fbshipit-source-id: 721a4bc07720709d1c7cc9f2fa7db69984f4c37e
Summary: Its helpful to store all history of sent messages for testing purposes.
Reviewed By: jknoxville
Differential Revision: D14797191
fbshipit-source-id: 0e58166cb4ab79852165f2107b2f6bcd259f1096
Summary: Some unnecessary syscalls in the way we actually use this at the moment.
Reviewed By: danielbuechele
Differential Revision: D14750875
fbshipit-source-id: 5959ed0845398b29698ab58f7359869fa3657fdc
Summary:
The reason was getting truncated, even though it had space to show the message. Look at the screenshot
BUG:
{F155254538}
Reviewed By: jknoxville
Differential Revision: D14775792
fbshipit-source-id: d18a458150c272c0c4e22cda9ea6459f96a70ea3
Summary:
`process.platform` is used to require the native-module for keytar. On Windows this returns `win32` (No matter if 64bit or 32bit system). The native module was named `keytar-win.node`. This diff renames it to `keytar-win32.node`.
This is the code that requires the module from `user.js`:
```
keytar = global.electronRequire(
path.join(
isProduction() ? remote.app.getAppPath() : process.cwd(),
'native-modules',
`keytar-${process.platform}.node`,
),
);
```
Reviewed By: priteshrnandgaonkar
Differential Revision: D14771646
fbshipit-source-id: cd48d25cb5921e07e472eb46636fa2599c8ff721
Summary:
For the native crash, the crash log is logged as seperate messages. So crash reporter plugin merges them together and fires one notification. The merrging logic is timer based, so if multiple crash log message is posted in 50ms, it will be combined in one notification.
For the above case, the "Open in Logs" functionality was broken, as we used to compare the entire callstack in one entry rather than in the multiple rows. This diff fixes this issue.
Bug:
{F155167144}
Reviewed By: jknoxville
Differential Revision: D14748956
fbshipit-source-id: d24db6d47fa3cd633a9002ac77f37c267ca4924f
Summary:
Added a promiseTimeout util so that we limit the time taken to export flipper plugin. I had received a feedback from the user stating that that the loader for the export stays for ages and never finishes. So this diff adds a timeout to the promise which is returned by `exportPersistedState` function. This function is currently implemented just by Layout inspector to fetch the entire view hierarchy. I suspect the the former mentioned bug may be due to the unresponsive client.
This diff also shows the plugin and the client information for which `exportPersistedState` timed out. Also this will hopefully solve the problem surfaced recently stating that the bug report gets stuck, the reason for which I suspect would be the same as the above mentioned reason, because we export flipper data when we create a bug report.
Reviewed By: danielbuechele
Differential Revision: D14712633
fbshipit-source-id: 35f8cfa722ec3b7ff94ebda943d618834ac3207d
Summary: Searches for all shared pref files instead of only the package name by default
Reviewed By: xiphirx
Differential Revision: D14763787
fbshipit-source-id: a3b7dfe8db078ac4f55e236b1516ed2de668f8d2
Summary:
Just going through some of our third-party deps and making sure that
we're not trailing too far behind.
Pull Request resolved: https://github.com/facebook/flipper/pull/403
Reviewed By: danielbuechele
Differential Revision: D14665266
Pulled By: passy
fbshipit-source-id: 61e730c4d850a1c0a9475de287d9791061e85e4b
Summary:
This diff shows an export sheet when one exports the Flipper data in a file. It also shows if any error happens.
Look at the video in test case.
Reviewed By: danielbuechele
Differential Revision: D14624194
fbshipit-source-id: dea0179a83e626e49593e5dde1d5ff128048db02
Summary:
I have published the new tag of Peertalk on my [fork](https://github.com/priteshrnandgaonkar/peertalk) and published a [Flipper-PeerTalk](80e4cd9a05/Specs/d/6/6/Flipper-PeerTalk/0.0.4/Flipper-PeerTalk.podspec.json) pod on cocoapods. There was no reply on the [request](https://github.com/rsms/peertalk/issues/48) to publish the new version of the peertalk on their repository and it was blocking us to publish Flipper and FlipperKit pods to Cocoapods. For more context follow the issue #132. With this PR we would have all our dependencies on cocoapods and thus we can now publish Flipper and FlipperKit pods on the cocoapods master repository.
I have also added the Flipper-PeerTalk podspec file for future updates.
Pull Request resolved: https://github.com/facebook/flipper/pull/395
Reviewed By: passy
Differential Revision: D14642440
Pulled By: priteshrnandgaonkar
fbshipit-source-id: 7847c19cddea358ffb62d2c6f16fc06d1afa1ea1
Summary:
Fixes the iOS OSS job which was failing. The root cause of the problem is as follows:
- RSocket was referring the master branch of rsocket/rsocket-cpp, fixed it by forking it and making its own release, unfortunately they don't make a release.
- Folly referred to the January's release. The current master branch of RSocket doesn't build with the latest release of the Folly, [this commit](b51dc569eb) is responsible for the breakage. Thus I made a Rsocket release, right before this [commit](b51dc569eb), so that it builds.Although, the current master branch of Folly builds with the current master branch of rsocket, but we will have to wait on Folly team to make a release. Once they do that I will update bit RSocket and Folly releases.
Reviewed By: jknoxville
Differential Revision: D14668686
fbshipit-source-id: 6b0362632c26355a69a3f33a031b71c88e7dd45b
Summary: Remove ObjC categories so we can strip dead code
Reviewed By: kfirapps
Differential Revision: D14665041
fbshipit-source-id: 243dee61a5b7cfd854191bfb5fa3a570b4ac1a4b
Summary:
Just minor version bumps so this doesn't have any noticeable effects.
Doing some cleanups after danielbuechele pointed out that it's important
for us to stay close to the upstream releases in the last team meeting.
Reviewed By: jknoxville
Differential Revision: D14665264
fbshipit-source-id: 91efb0663693823f394284457550716f22c40938
Summary:
== Highlights
- **Layout 2.0**: We have a new layout inspector that was rewritten from the ground to address all sorts of small bugs that like nodes not expanding that should all be gone now.
- **New Crash Reporter**: Flipper will now detect crashes on your device and give you easy access to them through a device plugin that you can find next to logs. Learn more at https://fbflipper.com/docs/crash-reporter-plugin.html.
- **Import/Export**: You can now import and export Flipper sessions as data to share them with others. Learn more at https://fbflipper.com/docs/share-flipper-data.html.
== Fixes
- Improved error reporting for what was previously summarised under "RecurringError". (bf9be74ad2)
- Fixed an issue where the color picker could get cut off. (f9ec0cd326) (https://github.com/facebook/flipper/issues/396)
Full list: https://github.com/facebook/flipper/compare/v0.18.0...v0.19.0
Reviewed By: priteshrnandgaonkar
Differential Revision: D14665281
fbshipit-source-id: 78ed042d38642356180f25455d0d17a03ed59c6b
Summary:
This adds an optional exit strategy that reacts to the client disconnecting rather than a `SIGINT` which can be used for integration tests.
`MiddlewareAPI` is a subset of `Store` and required to work here.
Annoyingly, it's not quite clear to me why this does not work as part of an event loop cycle and requires a `setTimeout`. This doesn't have any negative effects and works in the same way that the SIGINT interruption works, but it's a bit of an eyesore.
Reviewed By: danielbuechele
Differential Revision: D14622111
fbshipit-source-id: e2caca056e478428d977565dc9bc09eefca4230c