Summary: Allows to set the selected rows of a table using the `highlightedRows` property.
Reviewed By: passy
Differential Revision: D9850597
fbshipit-source-id: 62239192113f43ac257d7328b21b386b584a7cfb
Summary:
Plugins need to be self-contained. The can not require any dependency from Flipper's main app. This was a soft requirement before, but with the new version of metro, we now make this a hard requirement.
This speeds up plugin compile times, because only the files in the plugin's folder are watched and not all of Flipper's files. Moreover, this ensures "plugins" are real plugins and can be added and removed and are not mixed with the apps core.
Reviewed By: passy
Differential Revision: D9940735
fbshipit-source-id: 47e120429fc3c4c985731478ffa35c3359ff78f9
Summary:
Back out "Back out "[flipper] Export init function""
Original commit changeset: 93b916d472b7
The import side effect seems to cause some issues with shadowing,
so let's pull this all the way to the top and call this from HTML
as Sonar.init().
Reviewed By: danielbuechele
Differential Revision: D9849869
fbshipit-source-id: b62772ecddc59eab00251ebf19816f470d76ba82
Summary:
This seems to break initialization. I'm not quite sure why, but
inside the exported function, nothing else from the file appears
to be visible.
Original commit changeset: 55b2a61186e6
Reviewed By: danielbuechele
Differential Revision: D9849812
fbshipit-source-id: d88973721da82040e1f29669acade6c883619ce8
Summary: This way we can mock it during tests.
Reviewed By: jknoxville
Differential Revision: D9788349
fbshipit-source-id: 55b2a61186e6294a8098db7add50fd8bbac7a680
Summary:
Not sure if it's Metro or something else providing these globally,
but it makes Jest unhappy if they're missing.
Reviewed By: danielbuechele
Differential Revision: D9788350
fbshipit-source-id: 5fabad7af146bcb705471d2c7e66d79265c81c82
Summary:
Litho renders differently based on whether applicable accessibility services are enabled. In Flipper's accessibility mode this will be forced (with the option to turn it off) so that you don't have to be running an accessibility service to actually see what someone running an accessibility service would.
Here's an example video of what the re-rendering does (this also happens on toggle of accessibility mode, this is just the settings option to force it):
{F137856647}
Reviewed By: jknoxville
Differential Revision: D9667222
fbshipit-source-id: 292353d89f07734f1e525f795b1d7daf4130e203
Summary: Looks like some flow-disables were no longer necessary.
Reviewed By: jknoxville
Differential Revision: D9700398
fbshipit-source-id: 5514c16294624c1bed1d3818f9e271b07e320803
Summary: Not collecting all debug logs because there are so many, but server ones are few and usually important for context on what's connected at the time.
Reviewed By: danielbuechele
Differential Revision: D9654402
fbshipit-source-id: 5ad090838be3e06c25bd93e4d85726822bd7fc4e
Summary:
Basic tooltips available. Use is:
<Tooltip
title="This is what will show up inside the tooltip"
options={{ // can include any or none of these (if not included default will be used)
position, // 'above', 'below', 'toRight', or 'toLeft'
showTail, // whether or not tooltip should have tail
delay, // how long to wait on hover before showing tooltip
// supported css properties
backgroundColor,
color,
maxWidth,
width,
borderRadius,
padding,
lineHeight,
}}>
<ElementTooltipWillShowUpFor/>
</Tooltip>
Reviewed By: danielbuechele
Differential Revision: D9596287
fbshipit-source-id: 233b1ad01b96264bbc1f62f3798e3d69d1ab4bae
Summary:
The logs plugin opened a new log connection every time it was activated and never closed the connection.
This is now changed. Once a device is connected, a log connection is opened. The logs plugin subscribes and unsubscribes to this connection. This allows the logs plugin it even access the logs from when it was not activated and ensures to only open on connection to read the logs. Logs are persisted when switching away from the plugin.
Also removes the spinner from the logs plugin, as it loads much faster now.
Reviewed By: jknoxville
Differential Revision: D9613054
fbshipit-source-id: e37ea56c563450e7fc4e3c85a015292be1f2dbfc
Summary:
First connection attempt to iOS device was only made after 3000ms. This caused all iOS devices only show up after this delay.
Now, the devices are queried immediately.
Reviewed By: passy
Differential Revision: D9613057
fbshipit-source-id: a14e3f02576ec5e159f4002bf68efe53236dcc50
Summary: Log counter had a bug that only allowed the number to go up to 2. To increment the number of the last row is read and increased. However, this failed and always fall back to 1.
Reviewed By: passy
Differential Revision: D9613056
fbshipit-source-id: dc73990eb26c7a6ecbc70b0fe50687607b8bf0ad
Summary:
- Cleans up iOS log listener code
- Retries to create a connection to the log stream if it failed
- logs errors with the log parser
Reviewed By: jknoxville
Differential Revision: D9613055
fbshipit-source-id: 33a24e474be62fc2a906f022a68547594f2e66c1
Summary: Now that android devices know their own serial, we can filter plugins by the selected device.
Reviewed By: passy
Differential Revision: D9481461
fbshipit-source-id: 4a53eea1e61caa09c3d63ca0076fbc1b6dceb99f
Summary:
Android devices don't always know their own serial.
But we do a certificate exchange using adb from the desktop, so we can provide it in the response.
After this the client will provide it every time it connects, so we can do things like filter plugins by device id.
For apps that have already done cert exchange, they'll continue to use 'unknown' as their id until they do it again with an up to date version of sonar.
We can think about forcefully stopping that, but I haven't done it.
Reviewed By: danielbuechele
Differential Revision: D9481460
fbshipit-source-id: f8932699711ebbec4260fabe32f87e6cdff920f2
Summary:
Removes the fix introduced in D9570518 and upgrading to `react-window@1.1.2` which fixes the problem in the library.
Also finetuning debounce times.
Reviewed By: passy
Differential Revision: D9582591
fbshipit-source-id: 92b008d29f96ce0f11f5cfb5d9e92175ae536ee2
Summary:
When starting with an empty table and adding rows, the scrollOffset of the table might end up with a negative value, which causes rows not to be rendered.
See https://github.com/bvaughn/react-window/issues/49 for more details.
This only calls `scrollToItem` when the table is actually scrollable to prevent a negative scrollOffset.
Reviewed By: passy
Differential Revision: D9570518
fbshipit-source-id: 5b08990a353a6d41d0f1bc5c1481d5a5e471bd94
Summary:
Table was missing support for some properties, that were supported previously, which caused some regressions. Support for the following properties was added:
- `multiHighlight: boolean = false`
- `autoHeight: boolean = false`
- `highlightableRows: boolean = true`
- `onRowHighlighted: Function`
Reviewed By: jknoxville
Differential Revision: D9549384
fbshipit-source-id: 1db2e7e8c6ad483d3d9d3a5814c76c564e9ba7f4
Summary: When table rows are chaning, we need to recaluculate all row heights. This was already done when filtering/searching, but there are other occurrences where we need to recalculate the heights (like clearing the table).
Reviewed By: passy
Differential Revision: D9540881
fbshipit-source-id: ef6e94c0330294d8196f946799a436aa5e9ce5c5
Summary: Makes the code a bit cleaner and maintainable.
Reviewed By: passy
Differential Revision: D9496316
fbshipit-source-id: a59a41b12a57bb2eedc25b154c6f9b0cdc77dd8a
Summary: Lets AX inspector live update the sidebar when a view is clicked (state may change) or accessibility focus changes (previously only updated the sidebar live if it became the focused element).
Differential Revision: D9489376
fbshipit-source-id: 8959f722370ce1d3a622b24c7b049b03f0d662e6
Summary:
Instead of reading version number for logging from `package.json` it is now fetched via electron. We usually don't update our version number in package.json and therefore all logs showed the same version number. the version number from `app.getVersion()` is set during the build process and reflects the actual version number that is used.
Removes unused `<Version />` component.
Reviewed By: jknoxville
Differential Revision: D9495745
fbshipit-source-id: 6999ea23a1e4f90d6591b3695e01a803a5f3ff85
Summary: Fixes some warnings that were caused by the switch to react-emotion.
Reviewed By: jknoxville
Differential Revision: D9483185
fbshipit-source-id: 8e49469772efd37f18342252653648618e644d55
Summary:
My benchmarks have shown react-emotion to be faster than the current implementation of `styled`. For this reason, I am converting all styling to [emotion](https://emotion.sh).
Benchmark results:
{F136839093}
The syntax is very similar between the two libraries. The main difference is that emotion only allows a single function for the whole style attribute, whereas the old implementation had functions for every style-attirbute.
Before:
```
{
color: props => props.color,
fontSize: props => props.size,
}
```
After:
```
props => ({
color: props.color,
fontSize: props.size,
})
```
Reviewed By: jknoxville
Differential Revision: D9479893
fbshipit-source-id: 2c39e4618f7e52ceacb67bbec8ae26114025723f
Summary: It looks like the iOS simulator screen recording tool expects a SIGINT instead of a SIGKILL (the default of node's ChildProcess.kill()) to indicate it should stop recording, save the video file and die cleanly.
Reviewed By: danielbuechele
Differential Revision: D9480678
fbshipit-source-id: 5f17bd288c7622ffa3c337cef311e5e4e462218a
Summary: Switches elements from custom virtualization to react-window, so the custom implementation is not needed anymore and therefore can be removed.
Reviewed By: jknoxville
Differential Revision: D9447723
fbshipit-source-id: 7abcc077f87fe634a0e9517908db03398848bce7
Summary:
When changing the props of a table often, this might results in a lot of unnecessary rerenders. This could be mostly seen in the analytics plugin, which is sending a lot of messages in a short time.
The update of the table component is now debounced to only re-render every 150ms. This also affects searching and filtering and makes typing in the search input smoother.
Reviewed By: passy
Differential Revision: D9447722
fbshipit-source-id: 00e092e4e047e9c40e5a1ec2789644858acc18dd
Summary:
Tables were using a custom virtualization, which wasn't as performant as other solutions out there. In this diff, the table component is reworked for performance.
- removes `Table` component, because it was never used standalone, `ManagedTable` is what all plugins used
- uses `react-window` for `ManagedTable`
- reworks table highlighting and arrow-navigation to work with the new virtualization
- moves actual filtering out of `ManagedTable` into `Searchable` component for a better separation of concerns.
Reviewed By: jknoxville
Differential Revision: D9447721
fbshipit-source-id: 15eb2eb55eed9f49a0cb1ccfb2d748b3672fa898
Summary:
Linux appears to spawn a completely separate browser process whereas MacOS either
forks or uses a thread. Either way, Linux no longer has access to the parent
process's environment variables we use to look up plugins. Using
the remote module fixes that.
In the medium term, we should convert the `plugin` module to not rely on import effects
and instead use the IPC mechanism, making the plugin resolution asynchronous:
https://electronjs.org/docs/api/web-contents#contentssendchannel-arg1-arg2-
That would also allow us to do the plugin resolution while starting up the browser window,
lowering the startup time.
Reviewed By: danielbuechele
Differential Revision: D9423628
fbshipit-source-id: 76351f267864147c4494aadaf4e16ea636952118
Summary: Sidebar extensions are automatically added to main inspector sidebar but kept from accessibility side menu.
Reviewed By: xiphirx
Differential Revision: D9438644
fbshipit-source-id: 47a9cc630117e15be3368d78f2396f02796c998d
Summary: Adds on hover descriptions for some of the more esoteric properties in the accessibility sidebar panel such as accessibility-focused and all the talkback derived properties. Also change talkback-focusable and talkback-ignored to both be talkback-focusable.
Differential Revision: D9381676
fbshipit-source-id: 55ce854da24241a7c89b0c122c4c3ebd77438dbb
Summary:
There seems to be an issue showing a ManagedTable within a Panel. The component was properly
receiving new changes etc, it just wasn't displaying due to a 0 height (I guess).
This diff fixes that + updates the layout so its not cramped.
Reviewed By: passy
Differential Revision: D9393882
fbshipit-source-id: a35f2a298106c4b2a48883822ef997e8499f1eec
Summary: When relaunching Flipper/refreshing it while developing, where was a case, where the App Client connected, before the device was registered in Flipper. In this case, we didn't select the previously selected plugin
Reviewed By: jknoxville
Differential Revision: D9359779
fbshipit-source-id: 9c6f8e6bf65a46dc84c9781242b23df0ed539810
Summary:
`largeFrameDrops` are added to the usage tracking.
Similar to our other apps, we are considering a drop of 4 or more frames as a large frame drop. While a single frame drop might not be relevant to the user, large frame drops are a more relevant number to optimize for.
Reviewed By: passy
Differential Revision: D9358795
fbshipit-source-id: d9354695c816ba6c40676df6f3c6f3f070e28269
Summary: Added an additional field which contains hardware information regarding the chipset manufacturer and model.
Reviewed By: danielbuechele
Differential Revision: D9294547
fbshipit-source-id: 45c577475f156ee4a83140f506df161cd4ed4330
Summary: The console was pretty spammy. This fixes some issues that were logged and changes many log statements to `console.debug` which are not shown by default.
Reviewed By: passy
Differential Revision: D9303011
fbshipit-source-id: 1102f4f8814152a45f155cb43488a515c2d4eee4