Commit Graph

236 Commits

Author SHA1 Message Date
Michel Weststrate
04ec026034 Converted some left-over JavaScript file to TypeScript
Summary: Found some errors in a CI failure originating from a JavaScript file. The horror!

Reviewed By: jknoxville

Differential Revision: D29549998

fbshipit-source-id: 633100ec9a446050bb0c703dcc37e9b132b17198
2021-07-06 01:46:44 -07:00
Anton Nikolaev
2a3b9c9e43 Fixed a bug with React Native plugins loading
Summary:
Fixed bug with "Hermes Debugger" and "React Dev Tools" plugin loading reported on GitHub: https://github.com/facebook/flipper/issues/2545.

Changelog: Fixed bug with React Native plugins not loaded: Hermes Debugger, React Dev Tools etc.

Reviewed By: mweststrate

Differential Revision: D29516394

fbshipit-source-id: 4620e3d2b49ca2a1d3a5b2dd76d40d4667a0980b
2021-07-01 06:24:08 -07:00
Michel Weststrate
328ba9513c Make flipper messages generally available, remove self inspection infra structure
Summary:
Changelog: Flipper message debugging moved from a separate device to the console tab

This makes message debugging easier accessible, and in production (recently requested at GH). Also it clears up a lot of infra that was created just to make flipper a self recursive inspection device + a separate plugin. While fun, a hardcoded setup is just a bit more simpler (no exception rules and better static verification)

Reviewed By: nikoant

Differential Revision: D29487811

fbshipit-source-id: b412adc3ef5bd831001333443b432b6c0f934a5e
2021-07-01 02:00:08 -07:00
Michel Weststrate
8e0d3cf779 Removed some old ui/ components
Summary: Removing old components that are no longer used, and cleaning up index.tsx to prevent future for some of those

Reviewed By: nikoant

Differential Revision: D29428621

fbshipit-source-id: 78ae51c09510738cf2d75982fdae35b9ef6d2d7e
2021-06-30 10:42:32 -07:00
Michel Weststrate
16154e1343 Remove classic plugin infra
Summary:
This removes all code duplication / old plugin infra that isn't needed anymore when all plugin run on the Sandy plugin infra structure.

The diff is quite large, but the minimal one that passes tests and compiles. Existing tests are preserved by wrapping all remaining tests in `wrapSandy` for classic plugins where needed

Reviewed By: passy

Differential Revision: D29394738

fbshipit-source-id: 1315fabd9f048576aed15ed5f1cb6414d5fdbd40
2021-06-30 10:42:32 -07:00
Michel Weststrate
4b3772ced4 serialization
Summary: Remove serialisation utilities which are now unused

Reviewed By: priteshrnandgaonkar

Differential Revision: D29394737

fbshipit-source-id: 19ead40dfdb493cbbaee09745b3fc313272da34d
2021-06-30 10:42:32 -07:00
Anton Nikolaev
7a1b2ecc73 Basic plugin info view for open-source builds
Summary: Show a new view when a disabled/uninstalled plugin is selected in open-source Flipper build. I'm going to improve it later with additional info from npm packages metadata. For now it just shows status of the plugin and button to install/enable it.

Reviewed By: mweststrate

Differential Revision: D29482937

fbshipit-source-id: 45d207d3f6e846c354184f2b5fd911751d3164b0
2021-06-30 04:16:30 -07:00
Anton Nikolaev
4ad7a70ee3 Differentiate enabled and disabled selected plugins in analytics
Summary: As we now allow selection of disabled plugins we need to track plugin usage a bit smarter. We'll add a new field "pluginEnabled" to the logged messages to indicate whether selected plugin is enabled or not.

Reviewed By: cekkaewnumchai

Differential Revision: D29455248

fbshipit-source-id: 32c79e0961653edc8f4cc89adecc2662b37cbd7b
2021-06-29 13:02:05 -07:00
Anton Nikolaev
e36eec82b2 Change PluginContainer to allow selecting unavailable plugins
Summary: Changed PluginContainer implementation to allow selecting unavailable/uninstalled plugins which was impossible before that. Please note that for now something is shown only for enabled and disabled plugins. In next diff I'm also adding content for unavailable and uninstalled plugins.

Reviewed By: mweststrate

Differential Revision: D29254788

fbshipit-source-id: da639e5efddc821061abb69df534ffdce8ccd4e0
2021-06-29 13:02:05 -07:00
Anton Nikolaev
ff5d8ba29f Use selectors to compute plugin lists according to the selected device and app
Summary: Use selectors to re-compute and cache plugin lists according to the selected device and app.

Reviewed By: mweststrate

Differential Revision: D29247845

fbshipit-source-id: 4bc669d5d441d605c4090086c4ce59b6d9684a4c
2021-06-29 13:02:05 -07:00
Anton Nikolaev
fd9b5cc94d Use set instead of array to keep list of supported plugins per client
Summary: Use set instead of array to keep list of supported plugins per client. It is not used as array anyway, in most places it is used to determine whether a plugin is supported or not and it's much faster to use set for that.

Reviewed By: priteshrnandgaonkar

Differential Revision: D29200673

fbshipit-source-id: 5f3c404a1a668c153867d7c1b6c223941f0b3b36
2021-06-29 13:02:05 -07:00
Anton Nikolaev
7bc38c1735 Allow selecting disabled, unsupported and not installed plugins
Summary:
This diffs removes restrictions on selecting disabled, uninstalled and unsupported plugins. Now it will be possible to select them, however for now empty view will be shown in such case.

In next diffs I'll add Plugin Info view which will be shown in case disabled plugin is selected. It will show static info about plugin - readme, version, oncall, user feedback group etc. This will make it possible for users to browse info about all plugins, even unsupported by selected device/app.

There is one problem that our analytics will be screwed by this change as even disabled plugins will be counted as used. I'll address this later in this stack.

If you see other potential problems with removing restrictions on selecting disabled plugins - please let me know.

Reviewed By: passy

Differential Revision: D29186005

fbshipit-source-id: 2e55c5fd3bb402594f4dbace6e287725de65bc6f
2021-06-29 13:02:05 -07:00
Michel Weststrate
279f3c41b7 Introduce shallow serialization
Summary:
Changelog: [Flipper] Improve serialisation mechanism format & speed

The default serialisation mechanism used by Flipper to serialise plugin states is very flexible, taking care of maps, sets, dates etc. However, it is also really slow, leading to issues like in the related tasks, and work arounds like D17402443 (98bc01618f) to skip the whole process for plugins.

This diff changes the serialisation mechanism to have a better trade off between speed and convenience: For now we will only apply the smart serialisation for objects living at the _root_ of the serialised object, but it won't be applied recursively.

This sounds like a dangerous change, but works well in practice:
* I went through all `persistedState` and `createState` definition (the types), and the idea that complex types like Map and Set only live at the root of the persisted state holds up nicely. That makes sense as well since plugins typically store literally the same data as that they have received over the wire, except that they put it in some maps, sets etc.
* I introduced `assertSerializable` that only runs in dev/test, which will check (recursively, but without all the cloning) to see if a tree is indeed serialisable.
* The fact that by swapping this mechanism rarely existing unit test for exportData needed changes proves that the assumption that only roots are relevant generally upholds (or that plugin authors don't write enough tests ;-)).
* I verified that popular plugins still import / export correctly (actually *more* plugins are exportable now than before, thanks to sandy wrapper introduced earlier)

Reviewed By: jknoxville

Differential Revision: D29327499

fbshipit-source-id: 0ff17d9c5eb68fccfc2937b634cfa8f4f924247d
2021-06-29 08:04:22 -07:00
Michel Weststrate
640e06f130 Update tests to use the sandyLegacy wrapper by default
Summary: Changed unit test infra to wrap legacy plugins by default in Sandy, and adapted tests where needed.

Reviewed By: nikoant

Differential Revision: D29264660

fbshipit-source-id: fe7cbc8af826afac5f945103586b3cb9647e7fbd
2021-06-21 08:37:21 -07:00
Michel Weststrate
00e2c803ef Add wrapper support for getActiveNotifications
Summary: Add support for getActive notifications in Sandy wrapped legacy plugins

Reviewed By: passy

Differential Revision: D29234071

fbshipit-source-id: e05861e27426a592756645441c934b2c76154d44
2021-06-21 08:37:21 -07:00
Michel Weststrate
6fb28df855 Make Store initialization independent of module order
Summary: Changed some imports, and again the Flipper initialisation broke. Refactored the store initialization to create nowhere module local constants, which prevents generally against module loading issues, making it possible to load all code first, and then intialise things through the `init()` method, which should make Flipper initialisation a lot more robust to changes

Reviewed By: passy

Differential Revision: D29233603

fbshipit-source-id: 322cb87cba23228b1d7a88634b7b3995e27cc277
2021-06-21 08:37:20 -07:00
Michel Weststrate
806dd63f68 Add wrapper support for import / export states
Summary: Make sure custom export handlers of classic plugins wrapped in Sandy are respected

Reviewed By: passy

Differential Revision: D29233604

fbshipit-source-id: 7bab33af3422e0b59697438577906ce8580a28ad
2021-06-21 08:37:20 -07:00
Michel Weststrate
e40faaef3f Add keyboard support to Sandy plugin wrapper
Summary: Per title / see rest of the stack

Reviewed By: passy

Differential Revision: D29196711

fbshipit-source-id: 63ea52a07b61a11c1ad4013985c5b005045dcf0a
2021-06-21 08:37:20 -07:00
Michel Weststrate
c1860ec19c Introduce Sandy wrapper for legacy plugins
Summary:
This diff introduces loading classic Flipper plugins in a Sandy container. By wrapping plugins into Sandy we will be able to remove a lot of code / logic duplication related to state, queue processing, serialization etc. This will allow us to remove most or all of the complex plugin logic from the old system, only keeping onto the legacy components which have a lower maintenance burden. Until all plugins are Sandy.

This diff is not feature complete but only implements the core mechanisms for (persisted) state and communication.

Keyboard support, serialization, and rewiring tests etc will be added in next diff.

The feature is introduced behind GK flipper_use_sandy_plugin_wrapper to have kill switch.

Tests will be added later in this diff by redirection a part of the current mechanisms to wrapped plugins. (Will land the stack as a whole)

Reviewed By: passy

Differential Revision: D29165866

fbshipit-source-id: 57f84794a4a5f898bf765ce2de13cc759267fbc6
2021-06-21 08:37:20 -07:00
Anton Nikolaev
ac9ef7620a Refactor plugin lists computations
Summary: This is purely refactoring change. Before that we computed plugin lists in-place in PluginList component. Now we will be re-computing them as side effect and will keep computed lists in redux. This makes it easier to re-use plugin lists in other places outside of PluginList component, e.g. in the upcoming Marketplace UI.

Reviewed By: mweststrate

Differential Revision: D29161719

fbshipit-source-id: 5cb06d4d8a553aa856101c78b2311fbc078c6bd7
2021-06-17 07:39:43 -07:00
Pascal Hartig
f2e67c8055 Disable flaky sideEffect test
Summary: See T93353978

Reviewed By: mweststrate

Differential Revision: D29160508

fbshipit-source-id: 79ac5247e7fd1b4b0a2903b1a40833e2870e299c
2021-06-16 08:26:35 -07:00
Pascal Hartig
53e612ff6f Fix adb path interpolation on Windows
Summary:
Concatenating strings is not a great idea for paths. This isn't actually Windows-specific (I think) but maybe more common there. If you have a space as part of your ADB path, you're in for a world of pain.

This addressed a couple of issues but I'm sure there are more when you use it for more detailed use cases.

Closes https://github.com/facebook/flipper/issues/2438

Reviewed By: mweststrate

Differential Revision: D29061367

fbshipit-source-id: 001e498ac42bd8df6e6852be9b42fb5f38379c2e
2021-06-11 06:31:59 -07:00
Anton Nikolaev
cc4bc293c6 More actionable notification on plugin download failure
Summary: More actionable notification on plugin download failure.

Reviewed By: priteshrnandgaonkar

Differential Revision: D28856728

fbshipit-source-id: bd4a41af8812168949d83e2e0923ca7976485fa7
2021-06-03 08:36:23 -07:00
Anton Nikolaev
b7d7326bae Differentiate connectivity and auth related errors
Summary: Cleaning up login session and connectivity handling.

Reviewed By: passy

Differential Revision: D28795342

fbshipit-source-id: ddc659d681f730c7183f364d8924e5c680f8a418
2021-06-02 11:30:37 -07:00
Anton Nikolaev
48b0eb8f18 Show login dialog on Flipper startup if user is not logged
Reviewed By: passy

Differential Revision: D28780529

fbshipit-source-id: 7f4c38d8461619fe5995654e23dc5739fc852ccc
2021-06-02 11:30:36 -07:00
Michel Weststrate
d9c986fcf8 Fix test flakiness by using jest timers
Summary: Some tests were occasionally flaky, by emulating delays, time variation should no longer influence tests.

Reviewed By: passy

Differential Revision: D28572946

fbshipit-source-id: f4134a6509a0ec0be2e8f36e5623c4882b5531b8
2021-05-25 02:22:21 -07:00
Anton Nikolaev
fe7bb7cedd Fix null reference on isError check
Summary: Fixed new error which appeared in logview after last release. See task T91245438 for details.

Reviewed By: passy

Differential Revision: D28569848

fbshipit-source-id: a4b622d4387aa41ecc4db269e05c5315669df250
2021-05-20 07:13:35 -07:00
Anton Nikolaev
25ae4a0535 Include information about selected device, app and plugin into analytics events and error reports
Summary:
This diff generalises computation of the currently selected plugin, app, device etc. and adds this information to all the analytics events and error reports.

Slicing of events by os, device, app or selected plugin can be very useful. This is especially true for errors which often affects only certain types of devices, e.g. android only or physical devices only. Having such information can help to narrow down such issues.

Reviewed By: passy

Differential Revision: D28511441

fbshipit-source-id: ed9dc57927c70ed8cc6fe093e21604eae54c2f60
2021-05-19 05:17:41 -07:00
Anton Nikolaev
853ee24c9b Add info about interactions to error reports
Summary: When reporting errors we could add info about interactions which caused errors. Ability to connect errors and interactions could be quite helpful for analysing and debugging errors and where they are coming from.

Reviewed By: passy, mweststrate

Differential Revision: D28467575

fbshipit-source-id: bef69917a4d6c786d762a2f6eb75a47fd4e46b0f
2021-05-18 08:08:30 -07:00
Anton Nikolaev
03a1add092 Fix extracting errors from console.error data
Summary: Flipper logs all errors reported by "console.error", but I found that stack traces are broken for them. It is because a bug in `extractError` function which extracts errors from the data logged to console. It fails to extract original error stack trace and instead always logs stack trace where "console.error" was called.  This diff fixes the issue, so errors are properly reported with their original stack traces. However, sometimes stack trace of console.error call can also be useful to find where the error was actually catched and logged, so we're now writing this stack trace into addition field "log_stack_trace".

Reviewed By: passy

Differential Revision: D28466569

fbshipit-source-id: 55fb8ab52c05e8196efc1e47aec95cc1fbc0e594
2021-05-18 08:08:30 -07:00
Anton Nikolaev
a4eb2a56d6 Option for "yarn start" and "yarn build" scripts to pre-install default plugin packages instead of bundling them
Summary:
Sorry for long diff! I can try to split it if necessary, but many changes here are 1-1 replacements / renames.

**Preambule**
Currently we bundle default plugins into the Flipper main bundle. This helps us to reduce bundle size, because of plugin dependencies re-use. E.g. if multiple plugins use "lodash" when they are bundled together, only one copy of "lodash" added. When they are bundled separately, the same dependency might be added to each of them. However as we're not going to include most of plugins into Flipper distributive anymore and going to rely on Marketplace instead, this bundling doesn't provide significant size benefits anymore. In addition to that, bundling makes it impossible to differentiate whether thrown errors are originated from Flipper core or one of its plugins.

Why don't we remove plugin bundling at all? Because for "dev mode" it actually quite useful. It makes dev build start much faster and also enables using of Fast Refresh for plugin development (fast refresh won't work for plugins loaded from disk).

**Changes**
This diff introduces new option "no-bundled-plugins" for "yarn start" and "yarn build" commands. For now, by default, we will continue bundling default plugins into the Flipper main bundle, but if this option provided then we will build each default plugin separately and include their packages into the Flipper distributive as "pre-installed" to be able to load them from disk even without access to Marketplace.

For "yarn start", we're adding symlinks to plugin folders in "static/defaultPlugins" and then they are loaded by Flipper. For "yarn build" we are dereferencing these symlinks to include physical files of plugins into folder "defaultPlugins" of the produced distributive. Folder "defaultPlugins" is excluded from asar, because loading of plugins from asar archive might introduce some unexpected issues depending on their implementation.

Reviewed By: mweststrate

Differential Revision: D28431838

fbshipit-source-id: f7757e9f5ba9183ed918d70252de3ce0e823177d
2021-05-18 08:08:30 -07:00
Pascal Hartig
6e206fc054 Fix icon fetching
Reviewed By: nikoant

Differential Revision: D28505372

fbshipit-source-id: e0b001ae56cd9014bd830630ae354ad4d76c2588
2021-05-18 03:45:31 -07:00
Anton Nikolaev
e7670e4e42 Fix retrieving versions for release builds
Summary: Fixed release build version retrieval

Reviewed By: passy, cekkaewnumchai

Differential Revision: D28378502

fbshipit-source-id: 345e7fac327a072a5c84cfa92bf4af78b6829654
2021-05-12 07:49:14 -07:00
Anton Nikolaev
a8ca142c9a Load only compatible plugins on startup
Summary: We currently filtering out incompatible versions from marketplace. This diff also add filtering for incompatible installed plugins on Flipper startup to ensure we always load the latest compatible version.

Reviewed By: passy

Differential Revision: D28341891

fbshipit-source-id: 83afc14a3c07e1763e1bd146251e6d3b71a66248
2021-05-12 07:49:13 -07:00
Anton Nikolaev
252322f525 Fix a bug with duplicated device plugins in "Detected in App" list
Summary: When crash reporter plugin is not installed in Flipper, it can appear duplicated in "Detected in App" list. This diff fixes that.

Reviewed By: passy

Differential Revision: D28325072

fbshipit-source-id: 92011f1f10c6633fbd31ea886fe53f352057f4f8
2021-05-12 07:49:13 -07:00
Anton Nikolaev
00851c6b5d Fix bug with plugin re-installation after uninstallation
Summary:
Fixed a bug when plugin installation status wouldn't be saved between sessions when plugin uninstalled and then re-installed again. Before the fix, after Flipper restart, such plugin was uninstalled again because its package name was not removed from "uninstalledPlugins" state. This was because plugin id was used by mistake instead of name in few places.

To try avoiding this issue in future I've also renamed "uninstalledPlugins" to "uninstalledPluginNames" to make it more clear than package name should be used there rather than ID. As this field is persisted, I also added migration which moves data to the renamed field.

Reviewed By: passy

Differential Revision: D28314447

fbshipit-source-id: fbe3edc258b78fe7fbb0d966f93aabcdf3b66d4b
2021-05-12 07:49:13 -07:00
Anton Nikolaev
0dce247741 Fix bug with unnecessary plugin auto-update attempts
Summary: I've noticed that Flipper is trying to schedule auto-update for some plugins on every startup even though they are already updated. I found this happens because of a race condition when the auto-updater can be triggered before plugins initialised. This diff fixes that.

Reviewed By: passy

Differential Revision: D28312086

fbshipit-source-id: 66b0bd2aa9dfede1737d565b1e7e7845c940405e
2021-05-12 07:49:13 -07:00
Anton Nikolaev
28fd8da615 Install only compatible plugins
Summary: Currently, when user installs a new plugin which was not installed before that, Flipper always takes the latest available version of it. This is not correct, because the latest version might be incompatible with the currently running version of Flipper. To avoid that, instead of always using just the latest version we will be using the most recent version which is compatible with the current Flipper version.

Reviewed By: passy

Differential Revision: D28306505

fbshipit-source-id: 4258a456d6a5d92cbf48af55c0efb17ecf560b57
2021-05-12 07:49:13 -07:00
Anton Nikolaev
2b41fba704 Change Flipper version retrieving
Summary:
Changed retrieving of Flipper version. Now it will be always retrieved from package.json. Before this change we used "remote.app.getVersion()" API which instead returned electron version for dev builds, e.g. "11.2.3". This is not convenient, because we now use Flipper version to check plugin compatibility and unrelated Electron version here makes things more complicated. After this change, if version is not properly bumped then "0.0.0" will be used: 1) when running using "yarn start", 2) when local building with "yarn build --mac" without setting new version, 3) when running tests "yarn test".

In addition to that I added a new command-line argument and env var which allow overriding version number for Flipper. This is useful for testing plugin updates, because compatibility between plugins and Flipper is checked by comparing Flipper version with the min version set in the plugin metadata.

Reviewed By: passy

Differential Revision: D28287354

fbshipit-source-id: 2f9482080e3612b95a24300050d98150c6db6cb7
2021-05-12 07:49:13 -07:00
dependabot[bot]
674f71a426 Bump prettier from 2.2.1 to 2.3.0 in /desktop (#2300)
Summary:
Bumps [prettier](https://github.com/prettier/prettier) from 2.2.1 to 2.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/prettier/prettier/releases">prettier's releases</a>.</em></p>
<blockquote>
<h2>2.3.0</h2>
<p><a href="https://github.com/prettier/prettier/compare/2.2.1...2.3.0">diff</a></p>
<p>{emoji:1f517} <a href="https://prettier.io/blog/2021/05/09/2.3.0.html">Release Notes</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's changelog</a>.</em></p>
<blockquote>
<h1>2.3.0</h1>
<p><a href="https://github.com/prettier/prettier/compare/2.2.1...2.3.0">diff</a></p>
<p>{emoji:1f517} <a href="https://prettier.io/blog/2021/05/09/2.3.0.html">Release Notes</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="2afc3b9ae6"><code>2afc3b9</code></a> Release 2.3.0</li>
<li><a href="7cfa9aa89b"><code>7cfa9aa</code></a> Fix pre-commit hook setup command (<a href="https://github-redirect.dependabot.com/prettier/prettier/issues/10710">#10710</a>)</li>
<li><a href="c8c02b4753"><code>c8c02b4</code></a> Build(deps-dev): Bump concurrently from 6.0.2 to 6.1.0 in /website (<a href="https://github-redirect.dependabot.com/prettier/prettier/issues/10834">#10834</a>)</li>
<li><a href="6506e0f50e"><code>6506e0f</code></a> Build(deps-dev): Bump webpack-cli from 4.6.0 to 4.7.0 in /website (<a href="https://github-redirect.dependabot.com/prettier/prettier/issues/10836">#10836</a>)</li>
<li><a href="69fae9c291"><code>69fae9c</code></a> Build(deps): Bump flow-parser from 0.150.0 to 0.150.1 (<a href="https://github-redirect.dependabot.com/prettier/prettier/issues/10839">#10839</a>)</li>
<li><a href="164a6e2351"><code>164a6e2</code></a> Switch CLI to async (<a href="https://github-redirect.dependabot.com/prettier/prettier/issues/10804">#10804</a>)</li>
<li><a href="d3e7e2f634"><code>d3e7e2f</code></a> Build(deps): Bump codecov/codecov-action from v1.4.1 to v1.5.0 (<a href="https://github-redirect.dependabot.com/prettier/prettier/issues/10833">#10833</a>)</li>
<li><a href="9e09845da0"><code>9e09845</code></a> Build(deps): Bump <code>@​angular/compiler</code> from 11.2.12 to 11.2.13 (<a href="https://github-redirect.dependabot.com/prettier/prettier/issues/10838">#10838</a>)</li>
<li><a href="1bfab3d045"><code>1bfab3d</code></a> Build(deps-dev): Bump eslint from 7.25.0 to 7.26.0 (<a href="https://github-redirect.dependabot.com/prettier/prettier/issues/10840">#10840</a>)</li>
<li><a href="387fce4ed8"><code>387fce4</code></a> Minor formatting tweaks (<a href="https://github-redirect.dependabot.com/prettier/prettier/issues/10807">#10807</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/prettier/prettier/compare/2.2.1...2.3.0">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=2.2.1&new-version=2.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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)

 ---

<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)

</details>

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

Reviewed By: passy

Differential Revision: D28323849

Pulled By: cekkaewnumchai

fbshipit-source-id: 1842877ccc9a9587af7f0d9ff9432c2075c8ee22
2021-05-11 05:51:56 -07:00
Anthony Dubis
bb2342a2b9 Re-integrate bug report traces after Sandy Migration
Summary:
The migration to Sandy (D28060888) breaks the existing integration we have with importing Flipper traces from bug reports. Given that, I broke this diff out from that one just to highlight the changes.

`pluginStates2` appears to be the field to use for Sandy traces (rather than `store`, which we were using before)

Differential Revision: D28209561

fbshipit-source-id: 9803e1a60b1b1deba6403b50b4079aac2a19efa6
2021-05-05 07:39:43 -07:00
Michel Weststrate
01ea822341 Code shuffle
Summary:
Moved a lot of utility logic in separate files for Android and iOS, to make cleanup in next diffs easier by having a bit smaller files.

Purely a code shuffle, no functional changes

Reviewed By: passy

Differential Revision: D28102399

fbshipit-source-id: 2fd8f6669bdd2804fa8a7e1791c610ae7883eda6
2021-05-04 13:50:31 -07:00
Michel Weststrate
c005753018 Expose Panel and useLocalStorageState
Summary: Expose a Panel api from Sandy, which is quite similar to the old one, except that it uses Antd, and it will remember the users closed / open preference through sessions, a much requested feature.

Reviewed By: nikoant

Differential Revision: D27966607

fbshipit-source-id: 9b18df377215c1e6c5844d0bf972058c8c574cbb
2021-04-23 09:29:59 -07:00
Michel Weststrate
49c4e2f56d Remove Interaction tracker
Reviewed By: passy

Differential Revision: D27619537

fbshipit-source-id: 970a1661e2b4cafe5fb6a79082d04aa1f9644439
2021-04-07 07:55:13 -07:00
Mathis Gardon
f25d189aa5 Support custom metro ports (#2050)
Summary:
Based on issue https://github.com/facebook/flipper/issues/1509 I needed a custom port for the metro server to pass to flipper.

## Changelog

introduce `METRO_SERVER_PORT` env variable to be able to customize default 8081 port on startup.

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

Test Plan:
Tested with a locally built linux desktop app, this seems to work OK pour hermes debugging & RN logging.

React DevTools don't seem to find the running app, maybe there's a mapping to handle there too ?

Reviewed By: jknoxville

Differential Revision: D27339006

Pulled By: passy

fbshipit-source-id: b1700c4fe73f14bf4617e23583b2954012e0a5aa
2021-03-31 03:30:14 -07:00
Michel Weststrate
1b0d01ef38 Give clear messages on how to connect to physical devices
Summary:
Give clearer instructions when connection to (physical) device fails, rather than just logging errors.

Fixes https://github.com/facebook/flipper/issues/1942

Also removed throwing errors for known problems, as they can be remediated by users.

Reviewed By: passy

Differential Revision: D27360575

fbshipit-source-id: 311d27178d4d205dff725201c7c60f116f0eb319
2021-03-29 07:00:47 -07:00
Michel Weststrate
d5fbe9a5b9 Support physical device logging
Summary:
Changelog: Logs plugin now supports physical iOS devices

As reported in https://github.com/facebook/flipper/issues/262 and linked papercut.

This diff adds support for iOS device logs through idb. Since idb doesn't respect `--json` flag at the moment, we perform the parsing in Flipper itself.

Reviewed By: passy

Differential Revision: D27346262

fbshipit-source-id: 3b314716f48bb9a7fe709370303396a51893359c
2021-03-29 07:00:47 -07:00
Michel Weststrate
ba8232f30d Move DetailSidebar to flipper-plugin
Summary: This moves `<DetailSidebar>` component to `flipper-plugin` and documents it. No semantic changes.

Reviewed By: passy

Differential Revision: D27234575

fbshipit-source-id: 74640602d718f84ad999f5dac0420089796ed7fb
2021-03-23 12:56:17 -07:00
Pascal Hartig
2ae7d13a64 Strip application path from stack traces
Summary:
Stacktraces right now always contain the `/home/$USER/.cache/flipper-launcher/v1.2.3/...` (or equivalent)
which makes deduping and reading harder. This strips the paths.

Reviewed By: mweststrate

Differential Revision: D27130251

fbshipit-source-id: c0e8d5eb1575c6269d49a6aee0e8a5e93996d223
2021-03-19 07:31:34 -07:00
Anton Nikolaev
bb827f14ea Normalize import path
Summary: Just a small fix to normalise import path to make typescript happy when this code is located in "flipper" folder (e.g. after installing "flipper" package as dependency) rather than "app" folder.

Reviewed By: jknoxville

Differential Revision: D27156167

fbshipit-source-id: 24495d6b1a756b20fadf62eec18bfe6665eb78e2
2021-03-18 08:17:12 -07:00