Commit Graph

198 Commits

Author SHA1 Message Date
Michel Weststrate
7c2fd4d5e5 Track memory usage
Summary: ^

Reviewed By: passy

Differential Revision: D20035089

fbshipit-source-id: 5df97847e442c626af8445e0909ea5e07311cc7e
2020-02-25 14:59:49 -08:00
Michel Weststrate
74004b6338 Improve unit test robustness
Summary: When running tests locally, some are quite flaky, and there is a lot of error logging noise. This diff doesn't remove all of it, but does reduce it significantly.

Reviewed By: nikoant

Differential Revision: D20034619

fbshipit-source-id: 183f74475b644f803b2f92b1b1301f4d0f6e193a
2020-02-25 14:59:48 -08:00
Pritesh Nandgaonkar
abb2dc72ee Fix the broken notification click
Summary:
This diff fixes the broken deeplink to the notifications hub when one clicks on the macos native notification. See the bug reported [here](https://fb.workplace.com/groups/220760072184928/permalink/532998544294411/)

This [post](https://fb.workplace.com/groups/220760072184928/permalink/532998544294411/) reports the bug.

Reviewed By: passy

Differential Revision: D20089749

fbshipit-source-id: 8061ae07c450fd674795af4c5be53ce77402c063
2020-02-25 08:09:59 -08:00
Michel Weststrate
64b06ba6f6 Fixed some issues with too many devices showing up in the sidebar
Summary:
Device management was inconsistent so far, this diff addresses the following issues

* pending a subtle timing issue, a physical android device might also show up as emulator, so effectively the device would be shown twice, but with the same content
* Metro devices now behave more like the android devices: offline devices are replaced if it comes online again
* Generalized this logic; the reducer now forces serials to be unique
* Fixed issue where a Metro device that disconnected due to a connection failure would be archived twice
* Use the metro connection url as serial, to have a slightly more future proof serial

Reviewed By: jknoxville

Differential Revision: D19996385

fbshipit-source-id: 0f6e3ddc6444542553d25cc3b592591652d688f2
2020-02-20 12:56:24 -08:00
Michel Weststrate
a05b8d1ba2 Prevent extensive logging of failed network requests
Summary:
If the browser makes a network request, and it fails, this is _always_ logged to the console, despite any error handling being in place. (see https://stackoverflow.com/questions/43012334/silence-neterr-connection-refused)

This diffs doesn't use the browser network stack, but the node network stack instead, which doesn't suffer from the same fate.

Reviewed By: passy

Differential Revision: D19995684

fbshipit-source-id: 4ffc12b820620c5310c140c1a3af63e5d2053a50
2020-02-20 04:33:02 -08:00
Michel Weststrate
1383260a7c Expose React Devtools as a Metro plugin
Summary:
This diff turns the DevTools plugin from a normal plugin in a device plugin. The reason for that can be seen at the end of the test plan in the first stack of this diff: Regardless on which client you open the devtools, you are always looking at the react tree of the app that happens to listen at the appropriate port, unrelated to the actively selected app. This diff moves the plugin from being a client plugin to a device plugin, a Metro device plugin to be precisely, as of the latter there is only one and they should typically correspond (which is why we can trigger reload as done in the previous diff)

Currently we have a Flipper plugin inside the iOS / Android apps with one purpose: to select different ports to listen to on different devices. But this functionality was never implemented, nor seems there to be much demand for. So these plugin don't offer any actual value. The widely used standalone version of the react devtools (https://www.npmjs.com/package/react-devtools) doesn't offer port customization either, so this limitation seems to be acceptable.

To make sure that this change is backward compatible, we make sure to show the metro device if we find metro, regardless whether it is new enough to support log forwarding and reload commands (previously we only showed the device if it has the /events endpoint).

The only case I can think of we are killing with this approach is where people are debugging a RN app, but with having metro running. I doubt that is an actual case, but probably rickhanlonii knows more about that.

Furthermore this diff makes sure that the devTools can connect to physical android devices. Also, making it to the end of this explanation means that you have done most of the reviewing for this diff. The actual code diff is shorter.

Reviewed By: passy

Differential Revision: D19878605

fbshipit-source-id: 3f33e59d4f6e4cce39102420f38afee10018999f
2020-02-17 03:41:13 -08:00
Anton Nikolaev
707759f096 Install pre-bundled packages 2/N
Summary: A first simple version of pre-bundled plugin installation. Currently both pre-bundled and source-only plugins are supported. Pre-bundled plugins should have folder "dist" inside and package.json's "main" field should point to the entry point script there.

Reviewed By: passy

Differential Revision: D19834020

fbshipit-source-id: 7e0b495fb9666acbb22fc32ca2382339cd9dc72f
2020-02-12 04:57:31 -08:00
Michel Weststrate
dfcfca4370 Support logging in metro plugin
Summary: Show metro logs using the standard logs plugin

Reviewed By: passy

Differential Revision: D19697439

fbshipit-source-id: 032a9a6aa2d987945d2058e0ea494d74e5aa310e
2020-02-11 07:29:38 -08:00
Michel Weststrate
437ec11ca7 Introduce Metro device and plugin
Summary: Introduced Metro device and the possibility to directly connect to running Metro instances

Reviewed By: jknoxville

Differential Revision: D19445623

fbshipit-source-id: 31978d966a56007c48f795076d6651e23de0e38d
2020-02-11 07:29:38 -08:00
John Knox
2acf81027e Refactor screenshot capturing
Summary: Adding a utility for capturing screenshots to the configured location without having to worry about where to store it or use buffers etc.

Reviewed By: mweststrate

Differential Revision: D19765926

fbshipit-source-id: d6b51c4ffafab7450e97a60468926d84a25a8c0f
2020-02-07 12:52:52 -08:00
Anton Nikolaev
07bc0088ef Install plugin from package file
Summary:
Adding a way to install plugins directly from package files. This is required for testing after packaging format changes.

Stage 1: refactored the plugin manager component file layout,  no functional changes.

Reviewed By: jknoxville

Differential Revision: D19741085

fbshipit-source-id: bd9d72382ddc4894de5b3cd9a71877c799886fbf
2020-02-06 05:30:05 -08:00
Pritesh Nandgaonkar
670949b016 Refactor the default plugins and validation logic into Group object
Summary: This diff refactors the scattered logic of required plugins and default selection of the plugins into Group class. Also the same class handles the deeplink logic.

Reviewed By: mweststrate

Differential Revision: D19666745

fbshipit-source-id: c9427f0ddba643f0b32aac7b6f2496e2e3248b12
2020-02-03 10:08:24 -08:00
Pritesh Nandgaonkar
c51797d194 Fix the plugin display logic to show enabled and device plugins
Summary: Changed the plugin display logic in SupportForm to show plugins which are enabled(includes device plugins) and plugins which has `exportPersistedState` defined.

Reviewed By: mweststrate

Differential Revision: D19643857

fbshipit-source-id: 7a4a5882507c06c6b6f9c481ee2c5c36ecc32ac6
2020-02-03 04:38:25 -08:00
Michel Weststrate
3f45414846 Make sure important errors are always shown to the user
Summary:
This diff makes sure that important errors are always shown to the user, such as an xcode version mismatch.

Also made some small styling improvements

Reviewed By: jknoxville

Differential Revision: D19660337

fbshipit-source-id: 24dfb4d98bfdd1666164403f87b6a4e1dc915ddb
2020-01-31 05:09:23 -08:00
Pritesh Nandgaonkar
6a54216f1a Add a status message when the selected client doesn't have graphql plugin
Summary: Adds a status message when the one deeplinks to support form and the selectedClient doesn't support GraphQL plugin.

Reviewed By: jknoxville

Differential Revision: D19602900

fbshipit-source-id: 98a45ead2659bb229f4a1301e918e02dca05fc66
2020-01-29 10:31:48 -08:00
Pritesh Nandgaonkar
40ac443386 Deeplink support for graphql
Summary: This diff adds support for the deeplink of support form for graphql groups.

Reviewed By: mweststrate

Differential Revision: D19583680

fbshipit-source-id: fc4505dc5f46c701f1e43fc47ee094fb0aa15d42
2020-01-28 09:29:04 -08:00
Michel Weststrate
31df1db74f introduce FPS graph to visualize slow UIs
Summary:
This diff creates a small FPS graph to be able to see where we slow down the app. This visualizes two things

1. The amount of FPS we render at (from tracking.fps).
2. If we were not able to render at all (due to the main thread being blocked fully), we interpolate the graph and draw it in red.

Reviewed By: nikoant

Differential Revision: D19579115

fbshipit-source-id: 2421d724c6d514986759bc9d68b92a5e4f51e401
2020-01-27 07:34:01 -08:00
Michel Weststrate
82e65c68dc Make sure plugin name selections are displayed consistently with sidebar, [Flipper] Make sure plugins have the same name everywhere
Summary:
Not all plugin names are created equal in flipper. For example, plugins would bear different names in the sidebar and in the plugin selection when making a support request / flipper trace. Fixed this and also introduced a `getPluginTitle` utility that produces this name consistently.

Plugin listview now also sort their items consitently with the sidebar.

Probably also fixed an error in the flipper export screen, where a correct TS error was supressed.

Reviewed By: jknoxville

Differential Revision: D19499404

fbshipit-source-id: c5b23a170d41d96799eb7899e249f70778717d45
2020-01-27 07:22:32 -08:00
Anton Nikolaev
aab004aa15 Allow disabling iOS development in Settings
Summary:
Currently Android development can be disabled in Settings, but iOS development not. Because of this Doctor always shows warnings to Android-only developers who has no iOS SDK installed. This change makes it possible to disable "iOS development" option in the same way as we already had for Android.

Additionally I changed Doctor warning to show more specific message if only iOS or only Android checks are failed with suggestion to disable the failing platform if it is not required.

Reviewed By: jknoxville

Differential Revision: D19538070

fbshipit-source-id: 234d2c6cf21083f9d6aebd63418aed7f9a78e922
2020-01-23 13:37:03 -08:00
John Knox
e47f6a4ebe Remove duplicated "total" time logging
Summary: This is useless as it's logged as key: total anyway.

Reviewed By: mweststrate

Differential Revision: D19501099

fbshipit-source-id: 08dcf76fbab8065356b34c6ed1524ef83703c46c
2020-01-22 07:46:58 -08:00
John Knox
06218b13f8 Remove NEW_CLIENT_SANITY_CHECK
Summary: This isn't needed anymore as it's taken care of by the Client class when it fails to find it's own matching device.

Reviewed By: mweststrate

Differential Revision: D19499929

fbshipit-source-id: e54dea6e680a9fa3cd3572cdd65434922d51c4ea
2020-01-22 07:46:58 -08:00
Michel Weststrate
a3a3db5363 Improve stats collection for plugins in the background
Summary:
This diff improves two things:
1. Stats are now gathered on every `trackUsage` tick, rather than only when there is a selection
2. The stats now include a delta to compare it with the previous tick

Reviewed By: passy

Differential Revision: D19514231

fbshipit-source-id: 1854c1dc03c63a03db8c7040c185d2629e1b9ea2
2020-01-22 07:10:52 -08:00
Anton Nikolaev
73e0f9035a Pass plugins via ipc instead of env to fix loading of plugins on Windows
Summary: Fixed the issue with empty plugin list on Windows because of env var length limit

Reviewed By: passy

Differential Revision: D19411466

fbshipit-source-id: 7fa390f7dd342e23e965b2135fbeb8e88e5857ef
2020-01-17 03:50:13 -08:00
John Knox
c17cd0f11e Add isForeground to ping events
Summary:
I want to make ping events fire when in background or foreground.
But doing that now could mess with some stats.
Setting this up so we have the data. If it comes to it, after this has been going a while,
we can add a filter to the existing queries for "isForeground=true" to preserve their behaviour.

Reviewed By: mweststrate

Differential Revision: D19428926

fbshipit-source-id: 7c175e9936dce52a59d17995dae61a82d23687f8
2020-01-16 08:15:54 -08:00
John Knox
ce0d038420 Regularly report currently starred plugins
Summary: Gives us visibility on how many / which plugins, people are starring.

Reviewed By: mweststrate

Differential Revision: D19408420

fbshipit-source-id: cb08e2a5f9d1b31ea03e6f7df8fa61db26611e91
2020-01-15 08:07:30 -08:00
Michel Weststrate
03c1bcad11 Log users out if tokens have expired, force FB users to login on startup
Summary:
Currently there are several issues caused by internal users not being logged in. E.g. the rating button doesn't work, flipper traces can't be uploaded etc.

However, the fact that the user is not logged in, is not reflected in the UI if the user has an API key, which is outdated.

See also the scuba query in the linked tasks; this happens for quite some users.

This diff fixes two things:
1. If auth tokens are invalid, this is properly reflected in the UI
2. If at startup the profile can't be loaded, a popup will be shown to log in.

Differential Revision: D19392735

fbshipit-source-id: 2be7c577ead671df16c626c0636e89245cebab14
2020-01-15 04:34:35 -08:00
John Knox
a96931c43f Enhance time-spent tracking
Summary:
Previously, at 1-minute intervals, if the flipper window was focused on, it would report the currently active plugin.
We'd sum all those "ping" events and that would approximate the number of full minutes spent in total across all users.
It's quite coarse grained, if you're focused on the window for 30 seconds, there's a 50% change your ping will get used.
While being reasonable across many users, it doesn't allow analysis like how many plugins do people typically use in a session, because we probably won't see all the plugins they use.

New approach, for every minute flipper is open, report the focused and unfocused time spent in each plugin, as well as the total across all plugins.
This should give us the previous data but with much more precision.

Should be especially helpful for plugins with low numbers of users, you typically interact with emulators while using a plugin, so it's not continually in focus, so you miss a lot of usage events.

enhance_bladerunner

Reviewed By: nikoant

Differential Revision: D19392796

fbshipit-source-id: af9244e993edff9b381144ca587c3a77fdf8c98a
2020-01-14 10:27:17 -08:00
John Knox
451db57fa5 Tell user when xcode simulator mismatches with xcode-select
Summary:
When you run a simulator with a different version of the xcode version that is currently `xcode-select`ed, it won't work.
This causes problems in Flipper, and also RN and other tools.
Show a helpful warning in this case.

Need to dispatch it explicitly because console.errors only get surfaced in dev mode, not production.

Ideally this will be done in the doctor, but there's work to get it to report device/app specific problems first.

Reviewed By: passy

Differential Revision: D19345199

fbshipit-source-id: 45f95c6d33c81da2299d8d84c9179bebb5bfebe8
2020-01-10 05:20:53 -08:00
Chaiwat Ekkaewnumchai
bacb1958fc Back out "Back out Electron 7.1.1/7.1.2 upgrades"
Summary:
Original commit changeset: 05d13aca7145

Attempt to upgrade `electron` as it instacrashed; `electron-builder` version 22.1.0 didn't sign package correctly and caused the instacrash,

Reduced the version to 21.2.0 (latest).

Reviewed By: passy, nikoant

Differential Revision: D18954671

fbshipit-source-id: bc2dbd4fec9afb51d9a535974651b13d195407b4
2020-01-06 09:44:13 -08:00
Michel Weststrate
74daa3fb1a Collect plugin background stats
Summary: Collect run time stats on how much CPU plugins use

Reviewed By: nikoant

Differential Revision: D19161359

fbshipit-source-id: 96b020b1f23b5e8d2e602f0ff6c3aa80ea149792
2020-01-02 08:22:32 -08:00
John Knox
8e0a4a5e42 Fix clicking on native notification
Reviewed By: passy

Differential Revision: D18831700

fbshipit-source-id: 4cdaed3893fc6162a16ac2c1a8a9ee2ef1a0805c
2019-12-06 07:27:35 -08:00
John Knox
0bf905e02f Replace all manual pluginKey parsing with a utility
Summary:
Ok this diff got a bit bigger than expected, but I think it makes it easier to understand what "plugin keys" are, and makes them less prone to error.

Previously pluginKeys were composed of: clientId#pluginName, where clientId was itself: app#os#device#device_id

But also, there were some plugin keys where the clientId was a device_id.

Now you deconstruct a plugin key, and will get a tagged object with type: 'device' or 'client', and the properties that they each have.

There is now no custom parsing of these afaik, let's keep it that way.

Since it took me a while to figure out what all these IDs are, I've documented it a bit in clientUtils.

Reviewed By: passy

Differential Revision: D18811848

fbshipit-source-id: eed2e2b5eedafb9e27900dbcf79a389fcaffae95
2019-12-05 07:37:57 -08:00
John Knox
ab5892c60e Fix initial window focus bug
Summary:
When launching flipper release build, the initial window focus was wrong, so it appeared unfocussed.
Clicking away and then back to the window would fix it.

This should set the initial focus to be correct from the start.

Task has more details.

Reviewed By: mweststrate

Differential Revision: D18808306

fbshipit-source-id: 2c5828d0b3298594dc30f956bb14141e6cff5918
2019-12-04 06:51:53 -08:00
Pritesh Nandgaonkar
45d8115804 Show new support form if part of new GK
Summary: When user comes from a deeplink we  will check if the user is part of the new GK, then we will open the new form otherwise old form.

Reviewed By: mweststrate

Differential Revision: D18764892

fbshipit-source-id: 512401f0370c3d4b16c9d88e16e8a4ca06148854
2019-12-03 04:51:05 -08:00
Pascal Hartig
a75a52a25b Back out Electron 7.1.1/7.1.2 upgrades
Summary:
Original commit changeset: eddfbb3571c7
Original commit changeset: f7300f527b65

Pains me to do this, but probably our best chance right now to get a release out.

Reviewed By: cekkaewnumchai

Differential Revision: D18687890

fbshipit-source-id: 05d13aca71457ca6dd19f5b45d58158ae223e66f
2019-11-26 05:30:34 -08:00
Michel Weststrate
9f7be13e39 Rework sidebar selection
Summary:
- Make sure newly connecting apps are automatically selected
- Improved the sidebar UI by using more consistent, spacious styling, and giving some more attention to error states

Reviewed By: passy

Differential Revision: D18505636

fbshipit-source-id: 18b2c8e78be13aabb3a54c60553f6b0d1e613b27
2019-11-18 02:21:14 -08:00
Chaiwat Ekkaewnumchai
a578b4d559 @allow-large-files [flipper][deps] Upgrade Electron (#636)
Summary:
allow-large-files

Pull Request resolved: https://github.com/facebook/flipper/pull/636

per title

Reviewed By: jknoxville

Differential Revision: D18374332

fbshipit-source-id: f7300f527b65b65caebac51c5bcf8f019dc34228
2019-11-13 10:51:16 -08:00
Michel Weststrate
dcb6595d1d Make imported devices visually recognizable
Summary:
If a flipper file is imported, from now on we will show that fact in the sidebar to make it more clear we are looking at an imported device. Beyond that, those devices are marked as `(imported)` rather than `(offline)` to distinguish between offline and imported devices.

This should help with future feature like cross device applicable actions.

Reviewed By: jknoxville

Differential Revision: D18448190

fbshipit-source-id: 560084f010207c99cecd616e43a6cc02e62cbc7a
2019-11-13 08:36:56 -08:00
Michel Weststrate
f2d12f1025 Fixed a bunch of prettier errors after upgrading
Summary: prettier upgrade uncovered more errors

Reviewed By: passy

Differential Revision: D18474908

fbshipit-source-id: b1553000fb3386f2bbd9defdd3332618e4b9c867
2019-11-13 08:36:54 -08:00
Pascal Hartig
05c007be16 Move plugin manager logic out of UI component
Summary: Moving some things around for the upcoming update support.

Reviewed By: jknoxville

Differential Revision: D18347572

fbshipit-source-id: b614fe3a87f8e7fdc0c11c0d3bfe4787c0914d17
2019-11-06 08:33:36 -08:00
Michel Weststrate
7040d487d8 don't keep querying iOS simulators if XCode was not installed properly
Summary: Currently the app keeps to find iOS devices if when the tooling isn't properly set up, causing an error to appear every three secs. This change makes sure that happens only once. It also takes care of some run-away promises

Reviewed By: jknoxville

Differential Revision: D18346619

fbshipit-source-id: 12b581bee0d522b37b9e0c5d5b8dad0e4d2058d9
2019-11-06 06:17:22 -08:00
Michel Weststrate
3963535610 Fix buffer warning when starting CPU / kaois plugin
Summary:
When the CPU or kaois plugins are started, they show a buffer deprecated warning, caused by the fact that they ship their own adbkit version, which is unpatched.

This diff makes sure that the adbkit as shipped with Flipper is used instead.

Reviewed By: jknoxville

Differential Revision: D18327441

fbshipit-source-id: 9cab23b9701adc070210cc4133fc8760031bd1d7
2019-11-05 11:10:16 -08:00
Pascal Hartig
d2dfb924fd Update plugin store after installation
Summary: Address the small regression introduced by D18173166. When closing the plugin manager after installing/removing, the store wasn't updated in between.

Reviewed By: jknoxville

Differential Revision: D18270821

fbshipit-source-id: 4ff54bc7607d06fa423cf8e673f216ae0a5d19da
2019-11-05 05:44:13 -08:00
Pascal Hartig
432bb1b00a Move local plugin discovery to dispatcher/redux store
Summary: In order to have update notifications, this must live outside the UI component, but it also gives some additional benefits like better testability of previously effectful UI.

Reviewed By: jknoxville

Differential Revision: D18173166

fbshipit-source-id: 1cacb6c7893423a7920a6620dfb76e631caba101
2019-11-05 05:44:12 -08:00
John Knox
42a77094f4 Clean up old flipper rating system
Summary:
Found some unused code from the rating prototype before switching to itsr.
Deleting it.

Reviewed By: cekkaewnumchai

Differential Revision: D18298155

fbshipit-source-id: 3529db17494f4f5bf7d7841460203d1c3856299a
2019-11-04 09:23:50 -08:00
Pritesh Nandgaonkar
652ffd43d6 Parse deeplink uri and update the check
Summary: Parse the deeplink url and update the checks by comparing particular components.

Reviewed By: jknoxville

Differential Revision: D18093494

fbshipit-source-id: c79c1974a7e50b61724dedd7fd3303093fac944b
2019-10-24 03:52:08 -07:00
Pascal Hartig
f53b252aff Change groups URL
Summary: Added a slug a while ago and it looks a bit better when shown in the bugnub.

Reviewed By: cekkaewnumchai

Differential Revision: D18083274

fbshipit-source-id: 5a9c8c126b5dcee92a697096ac3393a93a1690c3
2019-10-23 03:01:56 -07:00
Michel Weststrate
3b1429b8b0 Add global error bubble
Summary: Improved the display of error messages. Where previously only one error message could be displayed (quite obtrusively), with this change multiple errors can now be displayed and stack traces and further info can be hidden.

Reviewed By: passy

Differential Revision: D18036569

fbshipit-source-id: 2bc3dfa7a5196f931370a6e6dbf27c55b6cfb2bf
2019-10-22 08:48:16 -07:00
Pritesh Nandgaonkar
5614444380 Track the source of the supportform
Summary: This diff adds the telemetry to track the source of the support form being launched.

Reviewed By: passy

Differential Revision: D17908752

fbshipit-source-id: 275812992884a471844fda40d1f636815a4a2346
2019-10-15 04:13:38 -07:00
Andres Suarez
0675dd924d Tidy up Flipper license headers [1/2]
Reviewed By: passy

Differential Revision: D17863711

fbshipit-source-id: 259dc77826fb803ff1b88c88529d7f679d3b74d8
2019-10-11 13:46:45 -07:00