Commit Graph

327 Commits

Author SHA1 Message Date
Michel Weststrate
2bee9ec9e7 Fixed circular dependency warnings
Summary:
Nobody moves the hackathon!

Fixed some circular deps warnings while waiting for another Diff to land

Reviewed By: priteshrnandgaonkar

Differential Revision: D18749645

fbshipit-source-id: 225fbea428dca02f0f4c920ee47b4ece3c3e370b
2019-12-02 02:05:38 -08:00
Michel Weststrate
ac8879c503 Add clear diff button, style recording button
Summary:
* Added a button to clear Diff selection
* Added icons and color to the recording button
* Made App input field readonly

Reviewed By: priteshrnandgaonkar

Differential Revision: D18748538

fbshipit-source-id: 00ffb5d5c36f8f5394a353602f182aabd8237ee7
2019-11-29 08:28:25 -08:00
Pierre-Luc Paour
0116fcdb87 Typo (#664)
Summary:
## Changelog
Pull Request resolved: https://github.com/facebook/flipper/pull/664

Differential Revision: D18745531

Pulled By: passy

fbshipit-source-id: 9464d554e34ae08ed390cceb4c13ec63e26ec0a6
2019-11-28 10:03:01 -08:00
Pritesh Nandgaonkar
ca53f35875 Refactor export data functions and exportpersistedstate function to just expect state
Summary: This diff refactors the `exportpersistedstate` and few of the functions in exportData.tsx to just expect the Redux State instead the store object.

Reviewed By: mweststrate

Differential Revision: D18733011

fbshipit-source-id: 56739917b49142ba4b6e79e7c16378fe60d6ac3b
2019-11-28 03:49:26 -08:00
Pascal Hartig
0a7c57f5a0 Back out "Back out "[flipper][js] JS apps support 1/n""
Summary:
Original commit changeset: ff84080d43fa

This re-adds JS client support. The original version had a small bug that inadvertantly wrapped support for Android emulators in the dropdown in a GK that was only meant to cover JS clients. This is addressed here.

Reviewed By: timur-valiev

Differential Revision: D18707485

fbshipit-source-id: ceea8e279a21111f96073f8b784e852f6313e2a4
2019-11-26 09:37:57 -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
John Knox
2fd6301876 Back out "JS apps support 1/n"
Summary:
Original commit changeset: 56d1ca1a60ed

This broke Android support in some instances. We haven't had a chance to investigate this yet, but this should cleanly reapply, so we can figure out what happened after the release.

Reviewed By: cekkaewnumchai

Differential Revision: D18688590

fbshipit-source-id: ff84080d43fa481cc8c8c669a76aed15d0f8aa56
2019-11-26 05:30:34 -08:00
Michel Weststrate
a66501d7a6 style video recording section
Summary: style video recording section

Reviewed By: jknoxville

Differential Revision: D18658103

fbshipit-source-id: 450ed1e3a1ee4330183f14b2c00486649087c3bb
2019-11-22 09:47:51 -08:00
Timur Valiev
c685493db0 JS apps support 1/n
Summary:
### Connecting Flipper with JS apps by using electron's BrowserWindow and IPC

1. UI: there is a menu item in Devices tab which opens JS Emulator Launcher Sheet. Here we can configure URL to open and initial size of the window.
2. BrowserWindow, preloaded js: there is SupportJSClientPreload.js which initialize communication between flipper and app via electron's ipc
3. On flipper's side there is src/utils/js-client/serverUtils.tsx which contains most of JS emulator related code
4. Extracting of FlipperClientConnection: since we don't use RScocket to communicate with JS app I extracted needed methods to FlipperClientConnection (located in Client) and partly implemented them in JSClientFlipperConnection (requestResponse is just send a message now, doesn't return actual result)

Reviewed By: jknoxville

Differential Revision: D18572882

fbshipit-source-id: 56d1ca1a60ed2e51329b917021a09382cbb1ceec
2019-11-22 03:11:29 -08:00
Michel Weststrate
fef8d5a50f style support request form
Summary:
Styles the create support request form similarly to the details form, using the standard UI components.

N.B. Video section styling will be a separate diff

Reviewed By: jknoxville

Differential Revision: D18637989

fbshipit-source-id: f1cc6967b6841a55e770043f330e1a87ac7bfb50
2019-11-21 11:16:41 -08:00
Michel Weststrate
dd65ec6ed0 Make it possible to export support form V2 with meta data
Summary:
This diff enables a full roundtrip of exporting a bug report to file / link, and importing it again.

Styling is not part of this story.

Reviewed By: jknoxville

Differential Revision: D18636418

fbshipit-source-id: ef9a8e3622bdac9361f612d51415a593f4268b80
2019-11-21 08:01:49 -08:00
Michel Weststrate
5589a1b77b Introduce Info / VBox / HBox / Labeled for more consistent layouting
Summary:
This diff introduces a set of components:

VBox: use this to group things vertically, it little more than a container that fills the full width and adds bottom margin (see screenshot: creating distance between the boxes)

HBox: use to divide a space horizontal in two, and distribute it over two children, supports growing the right side, left side or both equally. In the image used to reserve the necessary width for the image, and give the remaining space to the text

Info: A component that shows a message, prestyled with one of the four types: info, error, warning, pending.

{F222993480}

Reviewed By: jknoxville

Differential Revision: D18595291

fbshipit-source-id: 1957db1b606b2e44e3104b10d32ad8ce75af6adc
2019-11-21 06:30:09 -08:00
Michel Weststrate
c976e3ed63 Cache some more icons, used by several plugins
Summary: Cache icons commonly used by plugins.

Reviewed By: jknoxville

Differential Revision: D18595264

fbshipit-source-id: 31b287c909a397a93da1f3969627bcaded2afe8f
2019-11-21 06:30:08 -08:00
Michel Weststrate
f9f1d60267 Fix some DEV errors showing up as DEV: [{}]
Summary: Collections of errors were not reported correctly in the UI. Also, reporting errors could crash flipper if the error is not serializable (for example due to being cyclic).

Reviewed By: jknoxville

Differential Revision: D18595257

fbshipit-source-id: 689b6dbfe5d7daa6d84bd703dba9daa6be2e6b82
2019-11-21 06:30:08 -08:00
Anton Nikolaev
ddb135ac39 Basic Doctor UI
Summary:
- Basic Doctor UI showing issues with installation
- Run healthchecks in background on startup and show warning message if something is wrong

Reviewed By: jknoxville

Differential Revision: D18502599

fbshipit-source-id: 194939a080ba7412ed3293d95c533bfad7031d3b
2019-11-21 03:10:36 -08:00
Michel Weststrate
d97675f2e6 Fix broken export functionality
Summary: This fixes a regression bug introduced by the rework sidebar selection: when trying to export a Flipper Trace flipper would error: 'No client exported' after making plugin selection

Reviewed By: priteshrnandgaonkar

Differential Revision: D18571143

fbshipit-source-id: c7a292e53cb79d0b2d95e09f8e9b041ae0d711cf
2019-11-18 08:32:44 -08:00
Michel Weststrate
f22e373136 Improve support request details import form
Summary:
Created as standard layout that can be used for both the import and export form

Standardized components used, so that we work towards a Design Framework that is consistent. Took inspiration from some existing plugins.

Also fixed weird sidebar transparency.

Reviewed By: passy

Differential Revision: D18504078

fbshipit-source-id: 7649abf7aa3eba8ba635337a41274bba93738e81
2019-11-18 02:21:15 -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
Pascal Hartig
7a148ef7a6 Search for update logic
Summary:
To be used in the following diff and because it's super side effect
heavy, I didn't bother to implement tests for it.

Reviewed By: jknoxville

Differential Revision: D18479311

fbshipit-source-id: 5cbcae0ebf2de4558b993325e50f6a2da1ed3ea7
2019-11-14 08:53:15 -08:00
Michel Weststrate
d2ab55a6f8 Introduce support request details form
Summary: Initial setup for a support detail form. Will only show up if meta data is present in the flipper file, so use the attached one to see it.

Reviewed By: jknoxville

Differential Revision: D18479193

fbshipit-source-id: 61da089f1e883fea20b2422a6bea99b2f8a4434b
2019-11-14 05:46: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
989b32c7b9 only capture selected application in exports
Summary:
Currently flipper export exports all connected the clients. This causes a few problems

1. This might often be unintended by the user, causing accidentally sharing (sensitive) information in the trace
2. This slows down things unnecesary. Especially if there is connected application, which is expensive, but not needed. See the attached video for the impact on exporting flipper: Export size reduzed from 11 to 0.5 mb. Export time from 20 seconds down to 1. (Flipper might not be a representative example, but imagine working on fb4a and having instagram on the emulator as well).

Reviewed By: priteshrnandgaonkar

Differential Revision: D18448194

fbshipit-source-id: f4de4c6dd89bda20251eb5f7423f7996339c8f2d
2019-11-13 08:36:55 -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
Pritesh Nandgaonkar
5bdba4935a Commit hash field added
Summary:
This diff adds commit hash field in the support form v2 and we prefill the information.

If changes are not pushed to phabricator we will populate it with commit hash or else we will populate it with Diff number.

See the demo to understand the flow.

{F222000517}

Reviewed By: jknoxville

Differential Revision: D18427044

fbshipit-source-id: 80a58baca381e21203da5670e29144a7e8c2eeed
2019-11-12 04:52:42 -08:00
Pritesh Nandgaonkar
f4a42cc4ea Add more telemetry events
Summary:
Added more telemetry events for the following events

- Time taken for each plugin to fetch meta data
- Overall time taken for fetching all meta data
- Overall time taken for serializing plugins
- Time taken to serialize individual plugins with overridden serializer and deserializer methods

Reviewed By: passy

Differential Revision: D18349588

fbshipit-source-id: 2b3a6b663a9df4da45580fc0be5651a27ca4093d
2019-11-08 05:05:02 -08:00
Pritesh Nandgaonkar
ff7d5018ec Move exportData.electron.js to tsx
Summary: Migrates `exportdata.electron.js` to tsx

Reviewed By: passy

Differential Revision: D18379598

fbshipit-source-id: c8fadf23b02ceb28b134df62c7590727a4f03554
2019-11-08 03:54:38 -08:00
Pascal Hartig
9670d6bde5 Prefetch star{,-outline} at size 12
Summary: Used by rating, I think.

Reviewed By: mweststrate

Differential Revision: D18347585

fbshipit-source-id: bbc84a42c34aae9805515c82f8d24cfd0817d8ed
2019-11-06 08:33:36 -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
3cee927674 Introduce favorite plugins
Summary: This diff lands improved sidebar navigation. The old functionality to order plugins based on last-recently-used, and cropping at 5 items has been removed. Instead, items can be starred and their position will be fixed. Together with the app switcher introduced this should lead to a cleaner, stabler, and more customizable UI.

Reviewed By: jknoxville

Differential Revision: D18299401

fbshipit-source-id: 29b7eb3a4130933c637f7c81834558bf738d5bf0
2019-11-05 09:14:46 -08:00
John Knox
61d4e0c6a5 Pretty print settings file json
Summary: Making it a bit more human readable.

Reviewed By: passy

Differential Revision: D18271880

fbshipit-source-id: 10e8ba50957e9407b1436972f8a06915edf73dfb
2019-11-04 07:07:35 -08:00
Pritesh Nandgaonkar
9ec4ef67ad Cache the text entered by the user
Summary:
This diff introduces the following improvements which I got as a feedback from the user

1) Before this diff the text entered used to vanish away when one switched tabs and came back to the support form. This diff takes care of that.
2) With this diff user can rexport the flipper trace to override the previous cached state too.
    - For this I had to update the UI to show flipper trace a separate input box, rather than appending it in the question field.
    - This avoided the the appending of the text in flipper trace and facilitated the easy override of the trace

3) With this diff one can also override commit_hash without appending multiple text.

WWW changes: D18250494, Do not land until this diff is landed.

Reviewed By: passy

Differential Revision: D18257524

fbshipit-source-id: 119edadf90ac95cb296c10520239513f1fef905d
2019-11-04 03:58:53 -08:00
Pritesh Nandgaonkar
f6e00136ba Add telemetry for export time and selected plugins
Summary: Adds telemetry for the export time and also logs the selected plugins.

Reviewed By: jknoxville

Differential Revision: D18244843

fbshipit-source-id: 36a3e8b9b456b59187918d19075a2c1ea0caef25
2019-10-31 09:40:51 -07:00
Pritesh Nandgaonkar
e73381a85c JSON.stringify over custom serializer
Summary: This diff calls JSON.stringify on the final export object instead of the custom serializer. As the custom serializer is slower, because it has to check for different types on its children before serializing it. Which adds to the complexity. The time gain which we get is 3x, that is with this change the export is 3 times faster. We required custom serializer, because the logs had `Date` which is not serializable. So that is being taken care while importing it.

Reviewed By: jknoxville

Differential Revision: D18171202

fbshipit-source-id: cd1b59b74dabb4c35a032dc7b54f183a68e37823
2019-10-29 13:47:01 -07:00
Pritesh Nandgaonkar
f49745448c Pass the status Msg as an argument
Summary: Before this diff whenever one called serialize method it showed `Serializing Flipper  ` msg without showing the explicit details of which data we are serializing. Thus with this diff one can pass the status msg as an argument which will be displayed while serializing.

Reviewed By: jknoxville

Differential Revision: D18173024

fbshipit-source-id: a4e7e073498993626204061d4e774099f00b8c5a
2019-10-29 13:47:00 -07:00
Pascal Hartig
0ba190e3ac Fix metrics.node.tsx test (#599)
Summary:
It shouldn't make a difference which one we import because they're
both mocked but only one works in the GitHub export.
Pull Request resolved: https://github.com/facebook/flipper/pull/599

Test Plan: yarn test; CI

Reviewed By: jknoxville

Differential Revision: D18083321

Pulled By: passy

fbshipit-source-id: 6d04390b4403bf291c201d3c17902304ea9b1c6e
2019-10-23 05:17:18 -07:00
John Knox
d350e1b339 Fix for plugin failures showing up as platform failures
Summary: This got broken during TS migration. Plugin failures were being logged as platform failures, and showing up in the wrong graphs.

Reviewed By: passy

Differential Revision: D18059046

fbshipit-source-id: 8209a0e852f62e221bf64cb5091115e3cac09fd9
2019-10-22 08:45:38 -07:00
John Knox
c63f145ffb Add restartFlipper utility
Summary:
Centralizes the restart logic.
And adds ability for it to work in dev mode as well.

Reviewed By: passy

Differential Revision: D18008197

fbshipit-source-id: b76ac7935d5859dfdbb8cf593462f8ac02348181
2019-10-22 04:21:51 -07:00
Pascal Hartig
874e590b96 Upgrade eslint and prettier
Summary: Not a fan of the long lines, but if that's where prettier is going, let's roll with it.

Reviewed By: jknoxville

Differential Revision: D17905599

fbshipit-source-id: c4232d46d2ec0b7c743f6afd8349106c85f013b9
2019-10-14 05:27:27 -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
Pascal Hartig
312fa7ce37 Cache layout icons
Summary: Opened layout, looked at warnings, added icons.

Reviewed By: jknoxville

Differential Revision: D17879910

fbshipit-source-id: 12375173b15c8d2e0b158cae4ded23237ed9c9b6
2019-10-11 10:55:38 -07:00
John Knox
ea5079ff9c Enable / Disable iOS support depending on xcode-select
Summary:
Queries xcode-select on ios dispatcher startup, to see if it's installed.
If it is, carry on with the ios device tracking, if not, don't bother.

This should stop it from emitting errors trying to track devices when things aren't installed.

I think it should also stop those install prompts from popping up.

Sets it in app state so we can tell the user about it, and maybe gate some other things too.

Reviewed By: passy

Differential Revision: D17830696

fbshipit-source-id: 960d09a9c5267afabf5e5e222379a0a7ed2cc444
2019-10-10 09:23:46 -07:00
Pritesh Nandgaonkar
e0e0a8f916 Add device argument in the constructor of Client
Summary: Property `device` on Clients for archived device never resolve. As it gets resolved when `addConnection` is called which happens for real non-offline devices. To get around this, I have added an argument to the constructor of the Client, as for offline case we can construct the device before client and can pass it as an argument.

Reviewed By: jknoxville

Differential Revision: D17831261

fbshipit-source-id: a14fb0b65343cccac731077e983026388611d323
2019-10-10 08:22:52 -07:00
Pritesh Nandgaonkar
e31f526618 Send flipper trace as a separate message
Summary:
This diff sends flipper trace as a separate message so that the form can update the state which can be used for validation. If the user doesn't click on "Flipper Trace" then it will show a validation error.

WWW side changes are here D17810526. Merge this diff only when www is landed.

Reviewed By: jknoxville

Differential Revision: D17812023

fbshipit-source-id: 35f17f9e58fc08cde3928072dc66758b1c507bcb
2019-10-10 08:22:52 -07:00
Pascal Hartig
3730c523ec Add explicit StubLogger option for tests
Summary:
A bit ugly to have test-only code in prod logic,
but we don't need any of the logger logic in tests
and by pulling out the `StubLogger`, we can avoid
loading Electron during tests.

Reviewed By: jknoxville

Differential Revision: D17808479

fbshipit-source-id: d2295d7bbca2f09c3f23389ad9443648757d8d03
2019-10-08 08:45:05 -07:00
John Knox
13ac64e0b9 Sort icons
Summary: You can do this in VSCode by selecting the lines, Cmd-Shift-P, "Sort Lines Ascending".

Reviewed By: passy

Differential Revision: D17710137

fbshipit-source-id: 3cef628b24dd86d4e307bd30761049c30cbc8f68
2019-10-08 06:22:20 -07:00
Pascal Hartig
f110ed2db7 Show export numbers
Summary:
As discussed on an earlier diff, the percentage alone
is a confusing indicator as the number of items to be
serialised can grow over time, causing the percentage
to go down.

This shows the raw numbers in addition to the percentage.

Reviewed By: priteshrnandgaonkar

Differential Revision: D17762477

fbshipit-source-id: 8911b520b2ea74542bc64e6a6662bed7d4f81860
2019-10-08 00:23:27 -07:00
Pritesh Nandgaonkar
7f2f2febcf Make MobileConfig plugin exportable
Summary: As per title, this diff makes the Mobile config plugin exportable. This involves moving the important property from `State` to `PersistedState`. Also had to implement the `exportPersistedState` function to fetch the experiments information for the Universes, configs and gatekeeper information.

Reviewed By: danielbuechele

Differential Revision: D17633986

fbshipit-source-id: 604225ba47112620bee0a6c704416b3ac350de9c
2019-10-07 09:57:31 -07:00
John Knox
b50aef8f15 Restart after changing settings
Summary:
Gets flipper to restart when settings are updated.

In theory most settings should not need this, but the current only one does (android home) because the path is set at startup only, and this modifies the input to it.
It would be a bit awkward to modify the path more than once, but doable.

Reviewed By: passy

Differential Revision: D17737582

fbshipit-source-id: d4669dcc7acc95469f15783fc6a5ba6794750234
2019-10-07 08:51:06 -07:00
John Knox
729e74f2fc Switch to using settings for android sdk location
Summary: A settings screen has been added where android home can be set. This changes the downstream code to use this value rather than the `env.PATH` variable.

Reviewed By: passy

Differential Revision: D17713288

fbshipit-source-id: 51551652c9c2f468e1117c18785123348e4b4576
2019-10-07 08:51:06 -07:00