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: I felt it would be good to say what these stars are actually for.
Reviewed By: passy
Differential Revision: D16457243
fbshipit-source-id: 961933f71efdcb6835936d5e1da7fe817eccc996
Summary:
Adds a star rating to flipper internal.
Based on the nuclide behaviour:
We get an event emitted when a user changes their rating.
And we also get the rating with every ping event, which is fired every minute, if flipper is the primary window.
The only thing I don't like that much is that this doesn't actually say anywhere what the stars are for.
Reviewed By: passy
Differential Revision: D16420281
fbshipit-source-id: 69a52f64058955d7cd068215478e95c554cb9ed4
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 a feature to display status update, while exporting Flipper trace. This will make user aware of the steps which are being executed to export flipper trace. This diff also logs the status update, to better support the issue posted by the user regarding the Flipper trace.
Reviewed By: jknoxville
Differential Revision: D16203810
fbshipit-source-id: 8f0bdc3836fec6dd79f2ca9827822d13f6cfd8bd
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: Let's migrate one file to TS, this helps us to test our tooling and make sure, everything works as expected.
Reviewed By: bnelo12
Differential Revision: D16149514
fbshipit-source-id: 05055a1830f187c6812baa661e109ea67995253b
Summary:
It makes more sense for the navigation ability to be inside the Device's class instead of scattered throughout the rest of the app.
I have moved the Android navigation logic inside the AndroidDevice and added a function stub to BaseDevice. I also encoded the URI as an initial safeguard to injection attacks via adb, but will remove this altogether once I enable navigation through the socket connection.
Reviewed By: jknoxville
Differential Revision: D16182374
fbshipit-source-id: be3c6d1cfcbe293583edada1f77c023965dfd12c
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: This button will be used to navigate between most recent and favorite locations within an Android app. Button is WIP and will be modified when work on the Navigation plugin begins.
Reviewed By: jknoxville
Differential Revision: D16088389
fbshipit-source-id: 64dcbc678ddeaeb36dd771d0cccef7c78bbc4b5c
Summary: We catch everything that's thrown during the export, which sadly doesn't guarantee that everything is actually an `Error`. So we'll try to JSONify it instead if that happens. It's gross, but well, JavaScript.
Reviewed By: danielbuechele
Differential Revision: D15943111
fbshipit-source-id: 03e6c18403961c00c5878d093c813573461e637b
Summary:
Adding a `archive` method to Android devices, that returns a new ArchivedDevice with the same properties as the Android device. This method is called when an android device disconnects and the new ArchivedDevice is added to the devices list. When the device reconnects again, the archived device is removed.
Currently only logs are persisted. In following diffs we can:
- add support for iOS
- move the persisted pluginStates to the archived device as well
Reviewed By: passy
Differential Revision: D15942904
fbshipit-source-id: 07c5415994594abd630d0c4b458b76d1aac6ef02
Summary:
This sometimes take *A LONG* time for me, so I want to
know if I'm an outlier or not.
Reviewed By: jknoxville
Differential Revision: D15939147
fbshipit-source-id: 9ebd3914efdd537eeadd49e522397acc97a6ff9c
Summary:
We're if-ing over an enum, so this should be a switch.
Also removed the edge case for the share sheet and
made the error handling part of the component so the
user actually sees it.
Reviewed By: jknoxville
Differential Revision: D15853056
fbshipit-source-id: 241ed0f2e042b08c4c157db9616175297b683ac3
Summary:
We in React VR were need newer Chrome DevTools version to make our plugin work properly. Chromium version with required fixes were shipped in electron 5.0.0.
This diff bumps electron version and explicitly allows node integration (accessing require, process and other node related functions from window object in index.html), because it was disabled by default in 5.0.0.
Reviewed By: jknoxville
Differential Revision: D15693539
fbshipit-source-id: 4f71a07b2afaa489aec46940c924f4ad30ad0413
Summary:
Pulls out the local `Lamp` component from `PluginDebugge` into `StatusIndicator`.
This will allow to reuse the component in different context, to guarantee a consistent appearance of Flipper throughout.
For good measure, we make diameter and title configurable. Vertical alignment is changed from `margin-top` to `align-self`.
Reviewed By: danielbuechele
Differential Revision: D15692275
fbshipit-source-id: 438b2f5300175565dbf07d07a5d757936b4f7cfe
Summary:
Adds a plugin for listing the databases, tables and contents of those tables in an android app.
Right now, works with sqlite, but it should be generic enough to work with other db types.
## Changelog
Add initial version of android databases plugin
Creating a PR, I may need to do some cleaning up, but this is to kick off that process.
Pull Request resolved: https://github.com/facebook/flipper/pull/441
Reviewed By: danielbuechele
Differential Revision: D15288831
Pulled By: jknoxville
fbshipit-source-id: 6379ad60d640ea6b0a9473acc03dd6ea81a3a8d4
Summary: People often want to share Flipper's verison number in bug reports, etc. This makes it as easy as a single click to copy the version number.
Reviewed By: jknoxville
Differential Revision: D15516592
fbshipit-source-id: 72582e2acb23113b3a0af062a83d444031f058d6
Summary: Previously "Create your own plugin" in welcome screen and "Create Plugins" in menu were directing to a URL https://fbflipper.com/docs/create-plugin.html which doesn't exist anymore. So pointing the URL to page for plugin creation tutorial https://fbflipper.com/docs/tutorial/intro.html
Reviewed By: jknoxville
Differential Revision: D15362962
fbshipit-source-id: 82a9dedb21911607f20884c9bb36e58d622e8431
Summary:
`/docs/understand.html` doesn't exist anymore. Also "learn more" in the landing page pointed to `/docs/understand.html` which was broken. Pointed "Learn More" to getting started doc page.
`/docs/understand.html` explained about rsocket which will be little overwhelming for the user to be navigated to right from the landing page.
Also removed the links pointing to `/docs/understand.html`
Reviewed By: passy
Differential Revision: D15147954
fbshipit-source-id: cbd67d7f234c438507f24db946cd463e8827cb78
Summary: emulator isn't on the path in CI machines, but we already have ANDROID_HOME set so we can work out where it is.
Reviewed By: danielbuechele
Differential Revision: D15080422
fbshipit-source-id: 2c50a3de27909d2bfc82ea0210d06a0cc32357d7
Summary: We were missing to log for those cases when we exported through sharable link. Also I changed logging a bit so that we can differentiate between Sharable Link and File exports
Reviewed By: jknoxville
Differential Revision: D15080292
fbshipit-source-id: 063e9f515e4f089ed3715e7b1ca0e66410e46541
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:
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 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:
Native plugins are plugins that can be written in mobile code alone (java/objc), provided they conform to a template, currently table is the only implemented template.
This adds support to flipper for handling them.
Reviewed By: danielbuechele
Differential Revision: D14502188
fbshipit-source-id: a96be9b06de1cecf7977c4ef2fd05b168f7f1330
Summary:
This diff aims to make the selected device a little clearer, the button now shows different icons depending on the selected devices: physical, emulators and archived devices.
The dropdown now is grouped in these sections, depending on their availability:
- Connected Devices
- Running Emulators
- Imported Devices
- Launch Android emulators
- Open File...
"Open File..." allows to import a file the same way as File -> Open File...
Reviewed By: jknoxville
Differential Revision: D14460789
fbshipit-source-id: 8d6edff0d90d5e02e4ef5976af5680ab8eaf77b4
Summary: Should also fix the build.
Reviewed By: jknoxville
Differential Revision: D14477777
fbshipit-source-id: 01fcfb2321c9b7a12acdf079473d91b6805d4dda
Summary:
Uploading the Flipper data could take some while. With the current implementation the user didn't know what was happening. This is why this diff immediately shows a sheet with a spinner, until the upload is finished.
The URL is still copied to the clipboard and a notifications is displayed. Additionally the user can copy the URL from the sheet.
Reviewed By: priteshrnandgaonkar
Differential Revision: D14441759
fbshipit-source-id: c853526a7da76e2dea5e1aaf6b6eff21e4268789
Summary: Only show scrollbars in sidebar when necessary.
Reviewed By: jknoxville, passy
Differential Revision: D14341446
fbshipit-source-id: e75f02b9de7796fc9ed8a42618ade3be015a1889
Summary:
Adding support for downloading archived Flipper data using a URL handler.
A URL looks like `flipper://import/?url=` and will download the file specified in the url param. While downloading the file, a spinner is shown in the app's titlebar.
Reviewed By: jknoxville
Differential Revision: D14262763
fbshipit-source-id: 6538fc78c07a48cef7b71b3f7bdbcb712d054593
Summary: Adding UI that shows when a user is logged in and allows the user to log out.
Reviewed By: jknoxville
Differential Revision: D14224401
fbshipit-source-id: 314a1c2f9a1021258e724e824be7577eb85d4b9e
Summary: "Plugin not showing" was scrolling with the sidebar. Fixed that.
Reviewed By: jknoxville
Differential Revision: D14123853
fbshipit-source-id: 12358bb3bd040701bafa080c2bcc27d8c837ea39
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:
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:
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:
Pixels don't seem to allow modifying the modification time
of files on the "sdcard". You can repro this by getting a Pixel
device and running
```
$ adb shell touch /sdcard/boop
$ adb shell touch /sdcard/boop
touch: '/sdcard/boop': Invalid argument
```
Access time seems to work, strangely enough, but I'd rather
not play games and just create an empty file instead with echo.
Reviewed By: danielbuechele
Differential Revision: D13941381
fbshipit-source-id: 1321482a07a6698aa5eaf71e5a022c8e7dfe0b18
Summary:
Instead of replacing the tilde with home-dirs on an incomplete, ad-hoc
basis, let's use a package for this. It also supports `~USER` resolution
which someone might reasonbly expect to work if `~/DIR` is working.
Reviewed By: jknoxville
Differential Revision: D13940956
fbshipit-source-id: 5bfa9b8b2540fed8c05c856ff736e48e925f985d
Summary:
Upgrading to flow 0.91, fixing a bunch of `$FloxFixMe`s that were introduced by upgrading to 0.86.
Also fixing some linting issues.
Reviewed By: priteshrnandgaonkar
Differential Revision: D13900794
fbshipit-source-id: 5d0a1b62371f3b5d34b909bae0876583acb6f977
Summary: Change from `recordSuccessMetric` to `reportPlatformFailures`, because the next diff adds `reportPluginFailures` and I want to distinguish the two.
Reviewed By: passy
Differential Revision: D13878380
fbshipit-source-id: 9c6b8bfe1ed2e1a8bbe5aacbec31d24e9aa39171
Summary:
This moves the version display from the updater component
to the titlebar itself, so it'll be shown even in dev mode.
This is already useful when using it on platforms like Linux
where the updater isn't supported, but will also help when
moving to the launcher model.
Reviewed By: jknoxville
Differential Revision: D13819139
fbshipit-source-id: cbc127b8ccdf932f823bc1f40319f296516dfc31
Summary:
Fixes required to be able to run Flipper in node.js:
* Adds checks if the `window`-object exists before using it, to allow running in node.
* Imports from within Flipper should directly reference the file they are requiring instead of `import from 'flipper'`. This was done in most of the places. Fixed a few occurrences where this wasn't the case. This is to prevent cyclic dependencies in node.
* shared packages (React, ReactDOM and Flipper) were exposed on the `window` before, changed this to `global` as this works in browser and node.
* Adds some missing methods to our electron stubs (used for testing and headless Flipper)
Reviewed By: passy
Differential Revision: D13786577
fbshipit-source-id: 145d560f1446e7d0bdec2acd8dd54dae983d7b36
Summary: Android and iOS each have a separate metric
Reviewed By: passy
Differential Revision: D13763758
fbshipit-source-id: f679360ec0ee008b434bfe12107ac6548d882a1f
Summary: Manually checked that the snapshot doesn't contain the auto updater.
Reviewed By: jknoxville
Differential Revision: D13715520
fbshipit-source-id: 720fed1e9952b788bce3311ecb508cfcfdc1758a
Summary: Provide a `--no-updater` option that disables the in-app auto updater when passed.
Reviewed By: jknoxville
Differential Revision: D13713919
fbshipit-source-id: 49a647105fea1efa23f653e4a6ed452b3489879b
Summary:
The path where a plugin was loaded from was not displayed correctly before, but pointed to Flipper's cache directory.
Plugins that are bundled with Flippers application package are now marked as bundled. Dynamically loaded plugins show the path where they are loaded from.
Reviewed By: passy
Differential Revision: D13622148
fbshipit-source-id: 7951ecd37e45d2d4b3a55bd7dc126697367c7e69