Summary: Load either installed or bundled version of plugin depending on which is newer.
Reviewed By: mweststrate
Differential Revision: D21858965
fbshipit-source-id: aa46eafe0b5137134fadad827749672441f2c9e5
Summary:
See previous diff.
Achieves the same optimization as in the mentioned diff, but this time by only debouncing the messages as they arrive over the socket, and not the state updates caused by Redux directly. This means that plugin rendering won't be debounced anymore until we address this more fundamentally.
With this change there is a double level buffering:
1. A buffer that stores all incoming messages (that are not replies to requests)
2. A buffer that stores messages we are interested in in the plugin queue, unless the plugin is active (this we already had).
This still fixes the issue that too chatty plugins cause to many updates foreground plugin (the problem we tried to fix originally), without debouncing plugin rendering if it is needed to update for any other reason.
Another nice benefit is that previously every received message would trigger a store update in Redux which would cause all connected components to evaluate their subscriptions (and then bail out in the typical case). Now we will only update the redux store every 200 ms.
Changelog: Foreground plugins will burn less CPU when they're very chatty
Reviewed By: jknoxville
Differential Revision: D21858849
fbshipit-source-id: c72352e569a8a803bbedffb71b17b11fcefee043
Summary:
This change kinda reverts D21690494, which broke the layout plugin.
The layout plugin broken because it's implementation assumes that if `this.props.setPersisted` state is called, those changes are immediately reflected in `this.props.persistedState`. For that to work it means that a render needs to be triggered immediately and synchronously by React.
That is a troublesome assumption (React doesn't actually guarantee this) and very likely to break in the future if implementation details change in React or Redux. However, since this is an assumption here, probably more plugins rely on that behavior, so this diff reverts that change. I'll add it the the component library plan to fundamentally address this.
The next diff will re-introduce debouncing, just at a different code point.
Reviewed By: jknoxville
Differential Revision: D21840282
fbshipit-source-id: af69dbded80aa73dfd6558d7cb0268ea0b1c504a
Summary:
I just noticed that the deeplink of the support form didn't select the right group. It got broken after the recent design change of the support form. This diff fixes that issue.
I have also added unit tests.
Reviewed By: passy
Differential Revision: D21817153
fbshipit-source-id: 06298b3b60cfc1bd77bea6c1f902b983474808dc
Summary:
- Add value for null type to use `.value` easier
- Add value to string by directly converting to string if possible; otherwise null
Reviewed By: jknoxville
Differential Revision: D21788242
fbshipit-source-id: f3a9f995de6b4cb1b304981c8adaaba70105c988
Summary:
I've outlined the tasks required to get iOS device support working for open source users [here](https://github.com/facebook/flipper/issues/262).
This is the first step. It publishes the same code we use internally to GitHub, but in a state where it is only "available" for non-public builds. This will not change any behavior, but means that together with the community, we can start adapting it to suit everyone, and then eventually flip "available" to true for everyone.
Reviewed By: passy
Differential Revision: D21740193
fbshipit-source-id: 586c79ad850f67da330c10a007605ff25a187544
Summary:
Update the UX of the mobilebuild download. When one clicks download one can see the the installation in progress in the main screen. Once its downloaded, you can open the finder pointed to the folder of download.
I didn't write the test for InstallSection as I was not able to test it through react-testing library. Seems like the data gets added to the document little late and not instantly.
Next work:
- Search in sidebar
- Persist downloaded app data for a session
- Show download data in the form of progress bar.
Reviewed By: mweststrate
Differential Revision: D21709229
fbshipit-source-id: e67db68ff16155230becf86c913dc6b1ec9d482c
Summary: This diff enables the babel transformer for emotion. It is supposed to be a bit faster, but the most interesting thing is that it will show component names inside the dom tree, which, at least for me, will be a huge performance booster is it will make it much easier to find out to which component style changes need to be applied
Reviewed By: nikoant
Differential Revision: D21722021
fbshipit-source-id: cab1278046b1aa7f8b875c016d43dfafdbaa0a2d
Summary:
Enabled linting rules that help to signal making errors with effect dependencies and such.
Fixed all errors, left any warnings generated by the hooks untouched
Reviewed By: nikoant
Differential Revision: D21721497
fbshipit-source-id: 9548453443fa7b663dc4d4289132f388c6697283
Summary: Previously, rows got highlighted after switching between data for `ManagedTable` even though `highlightableRows` was set to false. This diff forces the highlighting not to happen when the value is set to false
Reviewed By: mweststrate
Differential Revision: D21720266
fbshipit-source-id: 534944fe03ad1561bc2109468ae6c4c5f3fc947d
Summary:
While profiling the high CPU load of the Analytics plugin, I noticed that most of the time is spend in rendering React. This makes sense as the component sends data very frequently, although it is definitely less efficient than it could be.
As shown in the following profile picture, it is clear that all the cpu churns up due to the amounts of re-renderings caused (every new incoming messages causes the plugin to analyse and process all it's data).
With background plugins, we already made sure that non-active plugins don't eat up all the CPU in React components if they process data inefficiently. Before:
{F238020503}
This change debounces how often we give new state to plugins, so that multiple updates get collapsed if the load becomes to high. After (note that not every 'emit' causes in an expensive render anymore, but that the rendering is now in a separate stack, the only remaining renderer is the debouncer component). After:
{F238020481}
Render stack happens now after a bunch of emits:
{F238021694}
This drops ~130% cpu to 70% cpu in the case of the analytics plugin, see below
Reviewed By: passy
Differential Revision: D21690494
fbshipit-source-id: 299c49c95f20af01e6ee3110b0c39478b3135c43
Summary: Trying to add tooltip to some components to promote tooltip itself and make it clearer what they do
Reviewed By: mweststrate
Differential Revision: D21649207
fbshipit-source-id: 4763ae9a99d687e6624c07bb636c5f4e869cafc9
Summary: Change some offset to make it point more direct to an element
Reviewed By: mweststrate
Differential Revision: D21649206
fbshipit-source-id: 64b4a3851e713baa6095d819a16cd207bebdf46f
Summary: Fixed a layout issue in the list items of GraphQL, background style / line didn't tend to continue when scrolling, because flexbox doesn't grow all lines similarly. Tables do.
Reviewed By: jonathoma
Differential Revision: D21662000
fbshipit-source-id: 767d2d7ffd7e5dacf2c49aa67babbb47a331282c
Summary:
We used flexbox to layout rows in the element inspector. The problem with that is that flexbox cannot nicely grow all its childrens to the largest one. Although we could still see contents thanks to the `overflow: visible` hack, this means that the backgrounds didn't continue when scrolling.
In contrast, tables do grow their children width :)
Also fixed an issue where the AX details tree wasn't scrollable
Reviewed By: cekkaewnumchai
Differential Revision: D21661766
fbshipit-source-id: 6b1d16c7aded8beebdd8a50f3e8ab0d9b8633e02
Summary:
in Layout plugin, scrollbars where often not visible, for example to see the vertical scrollbar, one had to scroll to the horizontal end first.
Also introduced the `Scrollable` component to simplify this in the feature and separate the concepts of rendering something large and making it scrollable.
This diff cleans up the layout structure and fixes the problem
changelog: Fixed several minor layout issues in the Layout plugin
Reviewed By: cekkaewnumchai
Differential Revision: D21283157
fbshipit-source-id: 81849151475165796c65001616f038a9d6cbdfb2
Summary:
This diff updates the sidebar to show the recommended and all build types.
Also there is error handling in place along with tests. Right now the download happens by opening browser and the build gets downloaded in the download folder. But later in the diffs I will improve this flow to do that in the Flipper with a UX showing status updates.
Reviewed By: mweststrate
Differential Revision: D21556383
fbshipit-source-id: 6de9a00fe416c22cae7bacf91828a2221644eac7
Summary: FileSelector was added in D19743998, but it was not exported to be used by other. This diff exports it so that developers can use.
Reviewed By: mweststrate
Differential Revision: D21653870
fbshipit-source-id: 062247fa7a14c7ddf87c927205880a695598928d
Summary:
Fixed the layout usage in QPL, the `horizontal` was correct, but the elements where swapped (the table was supposed to take all remaining size, and sidebar it's needed space, rather than the reverse).
Made this more explicit in the Layout component, by splitting it up in `Layout.(Top|Left|Right|Bottom)`, so that one has to make an explicit choice here, making it less error prone.
Reviewed By: passy
Differential Revision: D21572438
fbshipit-source-id: 29aa3462a3c96d048825be3157730e26182cb2fa
Summary:
This allows long text to be seen on the sidebar in database plugin. Also, remove weird padding in the sidebar and separate sidebar component to a new file
Refactoring is in the next diff
Reviewed By: mweststrate
Differential Revision: D21550672
fbshipit-source-id: 3e80be16783719e18392fe3d8f8068caf9283f8f
Summary:
To comply with recent agreement, coverage test for MultipleSelectorSection is added.
Also, add undefined check in `elements.tsx` found while adding the test
Reviewed By: mweststrate
Differential Revision: D21554782
fbshipit-source-id: 7cd868bf16f6105d6f523048f29bdaa052837f45
Summary:
This diff updated the `flipper-out-of-contents` container to render with absolute position, which allows it to cover up all of the content in the plugin. This fixes an issue where content that exists in the plugin can be broken.
For example, the banner in the next diff would look like this:
{F237034745}
Reviewed By: mweststrate
Differential Revision: D21556849
fbshipit-source-id: 95ec4aac24ac995bd1c558123ef5da6087a40d0a
Summary: The effect of opening the screenshot after capturing was removed in D19765926.
Reviewed By: mweststrate
Differential Revision: D21571294
fbshipit-source-id: f3308d80e066cc01786c17323e4ff5f97c092de9
Summary:
Ugh, lockdown brain. This was supposed to be included in the test I added before
to get to 100% coverage. Well, it's here now.
Reviewed By: mweststrate
Differential Revision: D21550904
fbshipit-source-id: 044a11d38e211c6f57cce220adc8c42241a2043a
Summary:
This happened during startup:
{F237135281}
From `tmp` docs:
> IMPORTANT NOTE: template no longer accepts a path. Use the dir option instead if you require tmp to create your temporary filesystem object in a different place than the default tmp.tmpdir.
Reviewed By: mweststrate
Differential Revision: D21570416
fbshipit-source-id: 170886d0fda5e21cb23fe836fcde33eb457a4c1b
Summary: This diff updates the typescript version and it fixes `yarn lint:tsc`. It also successfully pointed out fes of the problems in our codebase. I have fixed those problems
Reviewed By: mweststrate
Differential Revision: D21548003
fbshipit-source-id: e69c986ee3c763588d9e1e290dad08d1cf1976a8
Summary:
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.0 to 0.2.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md">tmp's changelog</a>.</em></p>
<blockquote>
<h2>v0.2.1 (2020-04-28)</h2>
<h4>🚀 Enhancement</h4>
<ul>
<li><a href="https://github-redirect.dependabot.com/raszi/node-tmp/pull/252">https://github.com/facebook/flipper/issues/252</a> Closes <a href="https://github-redirect.dependabot.com/raszi/node-tmp/issues/250">https://github.com/facebook/flipper/issues/250</a>: introduce tmpdir option for overriding the system tmp dir (<a href="https://github.com/silkentrance">silkentrance</a>)</li>
</ul>
<h4>🏠 Internal</h4>
<ul>
<li><a href="https://github-redirect.dependabot.com/raszi/node-tmp/pull/253">https://github.com/facebook/flipper/issues/253</a> Closes <a href="https://github-redirect.dependabot.com/raszi/node-tmp/issues/191">https://github.com/facebook/flipper/issues/191</a>: generate changelog from pull requests using lerna-changelog (<a href="https://github.com/silkentrance">silkentrance</a>)</li>
</ul>
<h4>Committers: 1</h4>
<ul>
<li>Carsten Klein (<a href="https://github.com/silkentrance">silkentrance</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/raszi/node-tmp/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=tmp&package-manager=npm_and_yarn&previous-version=0.2.0&new-version=0.2.1)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
**Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.
You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com).
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
Pull Request resolved: https://github.com/facebook/flipper/pull/1127
Reviewed By: nikoant
Differential Revision: D21475580
Pulled By: passy
fbshipit-source-id: 5ddd73368b4178cd7a4b431e1661f9509f080635
Summary: Naive implementation of searchable data inspector: matching of search term agains first level keys of data
Reviewed By: cgrushko
Differential Revision: D21510073
fbshipit-source-id: 2010e584248a64fb3351c95a5646b1935445a13b
Summary: This was for V1 (D16990925) and is no longer referenced anywhere.
Reviewed By: nikoant
Differential Revision: D21501270
fbshipit-source-id: fef30f38c917afcd3d4150a0165cd0a59ad42b6a
Summary:
DataDescriptor currently shows a pencil icon next to text values starting with http/https. This is because otherwise it wouldn't be possible to edit them as a click would open the link in a web browser instead of triggering the edit mode.
Because of how this logic is implemented, it doesn't take into account whether editmode is enabled or not, thus it shows the pencil icon even when there's no need for it (custom plugins with no edit mode).
## Changelog
Fixed pencil icon visible in DataInspector for non-editable text fields
Pull Request resolved: https://github.com/facebook/flipper/pull/1002
Test Plan:
I tested this locally with LayoutInspector and my own custom plugin. The pencil still appears and works in the LayoutInspector but doesn't show up anymore in my custom plugin as the data there is not editable
## Result after the fix:
**Editable (LayoutInspector)**

**Non-Editable (Custom Plugin)**

Reviewed By: passy
Differential Revision: D21400359
Pulled By: mweststrate
fbshipit-source-id: 62b18f3f6c75c1b07440d51fca363d7e6fc60c6a
Summary: This allows props like `style` to be passed through (so it can be further styled), and makes `active` optional.
Reviewed By: jknoxville
Differential Revision: D21438791
fbshipit-source-id: bbab4a7768fce5de56e4deff67e50ff69914d123
Summary:
Fixes https://github.com/facebook/flipper/issues/1142
When using `client.call(methodName, params)`, params has to be an object, not, for example a string.
It may work on some client implementations, e.g. iOS, but this is a coincidence and not to be relied on. If this gives you new type errors, the plugin should continue to run in the short term but has no guarantees, please adapt it to conform. You can do this by preserving backwards compatibility by doing a typecheck in your client plugin if necessary.
CHANGELOG: Calling `client.call()` or `client.send()` now fails to type-check if params is not an object, to match client implementations.
Reviewed By: nikoant
Differential Revision: D21450694
fbshipit-source-id: 53db49f874838769e39a94b1c4bd4c0b30ecdbc7
Summary:
a bug found while trying to use multiple selector on Wilde. The data returned from specific call is not in the form that we expect. This caused an exception on layout plugin when using the selector
Specifically in WIlde, when we try to get data from node by calling client side to return it, sometimes the node has been invalidated or not saved. Hence, data returned are null or undefined. However, in previous implementation, this didn't take into consideration because we assumed that we always got correct data from client.
Reviewed By: mweststrate
Differential Revision: D21410989
fbshipit-source-id: 5135578606678973b504c9be897cb48fca547555
Summary:
Both export methods behaved slightly differently:
* Export to file returned earlier when running in background, which skiped the tracking of export termination;
* Share link always showed notification, even when on foreground;
* Share link status "hanged" - the share was never unset.
This change makes both consistent:
* Always track export finish - whether its in foreground or background;
* Only show notificaiton if running in background;
* Always reset the share/status.
On top of this it also:
* Normalizes the screenshot status to terminate in '...' as all the others;
* Only copies export URL to clipboard when exporting link if running in the background.
Reviewed By: passy
Differential Revision: D21425095
fbshipit-source-id: 9864a63269df6bd05ab065ff0e5d9f17b9ac6db6