Summary: Adds UI to the select the plugin to export. It lists the plugins which has currently some data in the redux store and it also lists those plugins which has implemented `exportPersistedState` function, as it might happen that the redux store may not have the data for a plugin but it will still export the data by calling `exportPersistedState`, which will ping the mobile client to get the data at point while we export the flipper trace.
Reviewed By: jknoxville
Differential Revision: D16468408
fbshipit-source-id: 452a7caf7199dd2b8df330bbb10d0a90008e92ec
Summary: With the each addition of the CLI arguments, there were addition in the arguments to the helper functions for exportStore. To control it, I have moved those arguments into an object
Reviewed By: jknoxville
Differential Revision: D16378511
fbshipit-source-id: e620bc0d4863aa6029a57771aa970aebb7294ba9
Summary: This diff adds `selectedPlugins` property in the redux store. With this diff now you can pass the list of plugins to headless so that it exports only the selected plugin's data
Reviewed By: passy
Differential Revision: D16280167
fbshipit-source-id: b03a1c49a7f51547470e0bcfa43083e52efabdd0
Summary:
Setting the module extension to .tsx overrode the defaults, meaning .js files were no longer being checked when imported.
This adds the defaults back to the extensions to be checked, including `.js`
It does seem to cause errors importing `.tsx` at the moment, but there aren't many so I've just $FlowFixMe'd them for now.
https://flow.org/en/docs/config/options/#toc-module-file-ext-string
Reviewed By: passy
Differential Revision: D16333800
fbshipit-source-id: 7bea92c038048234b4f634704f71c15d79ab3c63
Summary: Adds close button to the dialog box which appears while exporting a flipper trace. To implement this I had to first see what is the bottle neck of the export process. The major bottle neck turned out to be the serialization step. So to make the export process interruptible, I have put in a call `await idler.idle()` which resolves when the main thread is idle. I have also added the tests for the idler.
Reviewed By: passy
Differential Revision: D16183582
fbshipit-source-id: 4ec0c985e216fd9d41e91cdcd8b4cca66d2cb04d
Summary:
Non-final identifiers make code harder to understand.
This is particularly true for JavaScript where even the *type*
can change as a value gets reassigned later.
This enforces to use `const` whereever possible, but doesn't
"outlaw" `let`. Mixed destructuring is also still allowed.
Used `eslint --fix` to change all existing cases.
Reviewed By: jknoxville
Differential Revision: D16131329
fbshipit-source-id: 2eceaca7c603b71b36e005be5d135e1849f2518d
Summary:
Adds an argument to the headless Flipper to print the list of available plugins. Added `--list-plugins`.
Currently the startFlipper function is not scalable enough to add new arguments and its implementation. I am planning to tackle this with the list of Actions which will be closure. So adding a new argument with its implementation will be just appending a closure at the correct location in an array. Will work on that in the later diff stacked on the current one.
Reviewed By: jknoxville
Differential Revision: D15789778
fbshipit-source-id: 91ba472617d593c3490bb932590a06d83597cba7
Summary: This diff adds support to pass a path to the trace file to the headless Flipper. The headless Flipper then exports the metrics out of it.
Reviewed By: passy
Differential Revision: D15337067
fbshipit-source-id: 61aca1ffd58e879dafe6aa176f058f7b11460952
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:
This was originally introduced so we could squash multiple instances of the same error at the client side and only report one instance of them.
Now we've moved to doing the aggregation server side, which is more powerful, so this is no longer necessary. We've also seen a case of these Error objects appearing opaque making it hard to see the underlying problem, so removing it entirely.
Reviewed By: passy
Differential Revision: D14576715
fbshipit-source-id: b285dcb5249e209f9008a14ac6a2f226f3aa82d7
Summary: Adds revision information which is used to build the flipper app. for more context follow the [discussion](https://fb.workplace.com/groups/1489943347777350/permalink/2046366362135043/)
Reviewed By: danielbuechele
Differential Revision: D14458169
fbshipit-source-id: 71860f1e78c042f76d0e220dd3be96f2adaf609e
Summary: To read the current revision written into the manifest at build-time.
Reviewed By: danielbuechele
Differential Revision: D14454983
fbshipit-source-id: adad7d85dbf410701d2f8601bfccbcfbc0f30dff
Summary: This diff adds a helper function to serialize and deserialize javascript Objects
Reviewed By: danielbuechele
Differential Revision: D14101483
fbshipit-source-id: 3e1f37076ccc04b83cf7de5f10900e21e6474c1d
Summary:
This diff adds archived device type. This diff solves the following two problems.
- The Plugin which are device plugins and are device plugins will not show up. Look at the video, where the CPU plugin was showed, even though the imported file didn't have any information.
- An icon of 📦 will make much clearer which one is archived device and which isn't
Reviewed By: passy
Differential Revision: D14066399
fbshipit-source-id: 59b740d7fe9532e665d6b1ec6ad0124fb63ac45d
Summary:
Allows the launcher to provide messages to the user. Currently, in the form
of the red notification bar at the bottom. This is just meant as a temporary measure
during the alpha to have some clearly noticeable way of getting the user's attention.
I consider removing this a blocker for the release as this mechanism is not well
suited for this in many ways.
The current use case for this is providing a warning if a cached version is used
instead of the requested one, e.g. "Could not fetch requested Flipper version 'deadbeef', using cached version instead."
Reviewed By: jknoxville, priteshrnandgaonkar
Differential Revision: D14073687
fbshipit-source-id: 85630347027063103315eeb1286731fe2478e261
Summary: This diff adds import and export support for the logs plugin
Reviewed By: danielbuechele
Differential Revision: D13958713
fbshipit-source-id: a072de025f0b959302175ef0ccaf763ca41377e9
Summary:
This diff solves the following bug.
When the user imports the exported flipper data for the device which is currently running, there was a bug. A duplicate device with the same serial got created after importing the file. Due to the same `device_id`, the plugins of the exported device got imported in the already running device(which has the same device id).
To solve this problem, I have prefixed the exported `device_id` with a random string, so that the exported device is unique across the device list in the Flipper app.
Look at the vide to understand the bug
Also updated the test case accordingly
Reviewed By: danielbuechele
Differential Revision: D13973180
fbshipit-source-id: df6ee00987e81923914855cea4d76e2bd7167358
Summary:
Moves the JSON config access to one module instead of
ad-hoc de-serialising the object all over the place.
This also adds a type for it so we hopefully won't typo things that easily.
Reviewed By: danielbuechele
Differential Revision: D13956612
fbshipit-source-id: 48098deafedf18cc86c8802a3c40fba9394b8262
Summary:
Instead of using IOSDevice, used ArchivedDevice, as it doesn't instantiate the loglistener which printed erros in the console when one ran the tests.
Look at the attached task.
Reviewed By: passy
Differential Revision: D13941803
fbshipit-source-id: 3e504a02522719985afaad25caf4d2a576bfc338
Summary:
This diff adds the feature to import the exported flipper data. It has the following features
- Dialog to select the file
- Merges the data with an existing store.
Reviewed By: danielbuechele
Differential Revision: D13901944
fbshipit-source-id: 1b9755735419732a34254bdc39d911bcb51ad8fe
Summary: This diff updates the check which triggers crash notifications. We got a user feedback that crash reporter used to report non fatal crash too and it used to annoy users with bombardment of crash notifications.
Reviewed By: passy
Differential Revision: D13878272
fbshipit-source-id: 75446f08f806e8f28a6f68953c0a001fd18a7dc0
Summary: Adds tests for flipper import and export. Also fixed few edge cases which was discovered through tests. The edge case was that it didn't export device plugin states.
Reviewed By: danielbuechele
Differential Revision: D13828357
fbshipit-source-id: ddc4352b729ca7f05c5875f2f3fbdd2c7f4e2186
Summary:
Part 3 and final part of adding customizable ports. To use this, the iOS / Android apps have to also be started with the same custom ports.
Example usage: `FLIPPER_PORTS=8189,8188 yarn start`
Reviewed By: passy
Differential Revision: D13801761
fbshipit-source-id: 3dd80a3001ed0855e54cc568fa94eb6fac5fc7f1
Summary:
The advantage of this is that anyone can now log without needing to carry around a Logger object.
Primary reason is for making metrics less intrusive in the codebase.
Reviewed By: passy
Differential Revision: D13671368
fbshipit-source-id: 162ab1351a124683aef13983fc3bcec01385cd1a
Summary: Wraps a future and records the success rate. This will be stored along with the sessionId and the userId, so we can drill down and get the success rate at different levels.
Reviewed By: passy
Differential Revision: D13635049
fbshipit-source-id: 4e0e6bdc0f9b76b08cf37c5d9fe87909f7338534