Commit Graph

286 Commits

Author SHA1 Message Date
Andres Suarez
79023ee190 Update copyright headers from Facebook to Meta
Reviewed By: bhamodi

Differential Revision: D33331422

fbshipit-source-id: 016e8dcc0c0c7f1fc353a348b54fda0d5e2ddc01
2021-12-27 14:31:45 -08:00
Michel Weststrate
2b2cbb1103 Move offline icon storage to app/
Summary:
This diff splits Facebook management into a ui-core and electron part:

* Cleaned up code and introduces a uniform Icon type to describe a requested icon
* Computing icon urls is done in the ui-core
* Introduced a RenderHost hook that can transform the request icon into a different url, in this case, a url to load icons from disk in production builds

For the browser UI, the urls are currently no rewritten since we have only dev builds (which always used only FB urls already). We could do the same rewrite in the future and download the static assets during build time. But for now this means that in the browser implementation we depend on normal browser caching, with the biggest downside that icons might not appear if the user has no internet connections.

With this change we lost our last usage of staticPath computations in ui-core

Reviewed By: aigoncharov

Differential Revision: D32767426

fbshipit-source-id: d573b6a373e649c7dacd380cf63a50c2dbbd9e70
2021-12-08 04:30:57 -08:00
Michel Weststrate
7e50c0466a Move app/src (mostly) to flipper-ui-core/src
Summary:
This diff moves all UI code from app/src to app/flipper-ui-core. That is now slightly too much (e.g. node deps are not removed yet), but from here it should be easier to move things out again, as I don't want this diff to be open for too long to avoid too much merge conflicts.

* But at least flipper-ui-core is Electron free :)
* Killed all cross module imports as well, as they where now even more in the way
* Some unit test needed some changes, most not too big (but emotion hashes got renumbered in the snapshots, feel free to ignore that)
* Found some files that were actually meaningless (tsconfig in plugins, WatchTools files, that start generating compile errors, removed those

Follow up work:
* make flipper-ui-core configurable, and wire up flipper-server-core in Electron instead of here
* remove node deps (aigoncharov)
* figure out correct place to load GKs, plugins, make intern requests etc., and move to the correct module
* clean up deps

Reviewed By: aigoncharov

Differential Revision: D32427722

fbshipit-source-id: 14fe92e1ceb15b9dcf7bece367c8ab92df927a70
2021-11-16 05:29:21 -08:00
Andrey Goncharov
ed5c2bd39f Add plugin actions menu
Summary: See D32311662 for details

Reviewed By: mweststrate

Differential Revision: D32329804

fbshipit-source-id: 26670353fdf8580643afcb8bc3493384146f5574
2021-11-12 07:13:56 -08:00
Andrey Goncharov
2591d1629e Add import/export left rail menu
Summary: See D32311662 for details

Reviewed By: mweststrate

Differential Revision: D32316987

fbshipit-source-id: c2d173f981cce1b148f463d981977e23258ffc02
2021-11-12 07:13:55 -08:00
Pascal Hartig
72c886e91f Fix reading of launcher settings
Summary:
Noticed in a bug report that the read value was `[object Promise]`.

This wasn't a huge issue before because the worst case was that when writing settings, it would replace them again with the defaults, but still not great.

Reviewed By: mweststrate

Differential Revision: D32181718

fbshipit-source-id: cf6cd7aa3bd823845d6657c5466fbcdef6adac28
2021-11-05 05:03:02 -07:00
Michel Weststrate
2e7015388c Remove remaining Electron imports from product code: paths & env
Summary:
This diff removes most remaining Electron imports, by storing env and path constants on the RenderHost. As nice side effect those paths are all cached now as well.

To make sure RenderHost is initialised before Flipper itself, forced loading Flipper through a require. Otherwise the setup is super sensitive to circular import statements, since a lot of module initialisation code depends on those paths / env vars.

Reviewed By: nikoant

Differential Revision: D31992230

fbshipit-source-id: 91beb430902272aaf4b051b35cdf12d2fc993347
2021-11-03 07:01:21 -07:00
Michel Weststrate
25590e14b9 Move Electron stuff to separate folder, decapitate restart
Summary: Per title

Reviewed By: passy

Differential Revision: D31991715

fbshipit-source-id: 9ca58cdd26c1f540fbe09dcfc7b7f5e7a319ea7d
2021-10-28 07:41:00 -07:00
Pascal Hartig
2525a5efd4 Fix Flipper lints #9
Summary:
This introduces a few more lints in fact because I renamed the icon functions
to make clear that they use sync methods under the hood.

Reviewed By: timur-valiev

Differential Revision: D31964701

fbshipit-source-id: d0beb58b5b301f5428fdbfe8c65784df0d86eaad
2021-10-28 05:47:40 -07:00
Pascal Hartig
366c8f2681 Fix Flipper lints #9 1/n
Summary: Mostly ignoring things in this one because it's tests.

Reviewed By: timur-valiev

Differential Revision: D31955716

fbshipit-source-id: f799bf2b3eaae6753f41121264c777fdeda03165
2021-10-27 11:10:52 -07:00
Michel Weststrate
9763af4c96 Decouple open/save dialogs, reload, shouldUseDarkColors from Electron
Summary: Per title. Less imports from Electron.

Reviewed By: timur-valiev, aigoncharov

Differential Revision: D31923504

fbshipit-source-id: dc7557cf7c88c0c8168ba22f7dca7b3e2d339a09
2021-10-26 12:07:22 -07:00
Michel Weststrate
d88b28330a Move app/server to flipper-server-core
Summary: moved `app/src/server` to `flipper-server-core/src` and fixed any fallout from that (aka integration points I missed on the preparing diffs).

Reviewed By: passy

Differential Revision: D31541378

fbshipit-source-id: 8a7e0169ebefa515781f6e5e0f7b926415d4b7e9
2021-10-12 16:00:52 -07:00
Michel Weststrate
3e7a6b1b4b Move metrics / tracking / error analysis to flipper-common package
Summary:
what else can I say

move_complexity

Reviewed By: passy

Differential Revision: D31483414

fbshipit-source-id: 1692c792121a3aae0843eb238040cae0445cdf54
2021-10-12 16:00:52 -07:00
Michel Weststrate
51bfc8f05d Cleanup logger
Summary: Some cleanup around Logger, like renaming `getInstance` -> `getLogger`

Reviewed By: aigoncharov

Differential Revision: D31480828

fbshipit-source-id: d2fa9dc2b45bc34d846d45e396a74b80906d3ad5
2021-10-12 16:00:52 -07:00
Michel Weststrate
91d96774f6 Move files to flipper-common
Summary: Moved Logger, sleep, timeout and server contract types to flipper-common packages.

Reviewed By: passy

Differential Revision: D31475790

fbshipit-source-id: 42d2147698875f9e919ad5250f9953f3bff3ec2d
2021-10-12 16:00:52 -07:00
Michel Weststrate
cfd44b592a Further decouple server from UI
Summary: Further decoupling of `server/` from the rest of the code base. Also fixed a problem with promise chaining causing promises to create unhandled rejection errors.

Reviewed By: passy

Differential Revision: D31474919

fbshipit-source-id: 027cccbe9b57d856c94d63c093d39b6cb3e53312
2021-10-12 16:00:52 -07:00
Anton Nikolaev
64ce2e6f69 Show all plugins in the list even if there is no selected device / app
Summary: Just a small fix to ensure all plugins are shown in the list even if no device / app is connected to Flipper. We show them under "Unavailable plugins" with  explanation why they not available. This allows user to check plugin documentation even without connecting anything to Flipper.

Reviewed By: passy

Differential Revision: D31532732

fbshipit-source-id: 4e481b3d6923bb073a1478b2bd283db25a374c72
2021-10-12 07:19:41 -07:00
Anton Nikolaev
5e3bddc08e Fold warnings about plugins in legacy mode into a single message
Summary: As we now send warn logs to server - it better to reduce their count. This diff folds all the warnings for plugins using the legacy API into one warning.

Reviewed By: passy

Differential Revision: D31532559

fbshipit-source-id: 0621a170e11e9d9645964dd8ecf2f9e753273225
2021-10-12 07:19:41 -07:00
Michel Weststrate
d56375970d Cleaning up sheet abstraction to use Ant/flipper-plugin dialogs instead
Summary:
This diff cleans up order remaining dialogs, the ones involved in exporting to file or url. Includes some legacy component cleanup boyscouting, but not too much.

This removes a lot of code where state of the wizard was stored globally, and makes it locally instead.

Other code that was removed involves interaction with the old UI, which allowed import / export to be running in the background as well. (which is no longer needed since we optimised the process)

Reviewed By: timur-valiev

Differential Revision: D30192000

fbshipit-source-id: 13be883c5bf217a3d58b610b78516359e9bd0ebc
2021-10-06 09:10:19 -07:00
Pascal Hartig
37529af074 Track plugin selection steps
Summary: Sets up some logging for the various drop-out points when going through the deeplink flow.

Reviewed By: lblasa

Differential Revision: D31345623

fbshipit-source-id: a06ca97c1e687e39ea97a1f47fd8bb614149056f
2021-10-05 11:41:58 -07:00
Michel Weststrate
026f8fc308 Store clients as Map rather than array
Summary: Refactor clients storage: array -> map. A lot of logic looks up clients by their id, which is currently done with an array.find operation, which is pretty inefficient. This diff changes it to a map, that is pretty important, as in the next diff the decoupled client message handing will need to find the client again for every message that arrives.

Reviewed By: timur-valiev

Differential Revision: D31303536

fbshipit-source-id: ca3f540a3de7665930d2354436d37cb0fbfd5546
2021-10-04 07:27:24 -07:00
Michel Weststrate
c9a34d3cc2 Fix inconsistent handling of app id and name
Summary:
Changelog: Improved plugin / device / app selection handing.

During some refactorings I discovered that the `connetions.selectedApp` field contained sometimes an application id, and sometimes just the name. This caused inconsistent behavior especially in unit tests.

I've cleaned that up, and renamed it to `selectedAppId` where applicable, to make the distinction more clear.

And, in contrast, userPreferredApp now always has a name, not an id.

During refactoring our existing selection update logic was quite in the way, which was overcomplicated still, since during the sandy chrome migration, the reducers needed to be able to handle both the old UI, and the new application selection UI. That logic has been simplified now, and a lot of tests were added.

As a further simplification the preferredApp/Device/Plugin are now only read and used when updating selection, but not when running selectors.

Reviewed By: timur-valiev

Differential Revision: D31305180

fbshipit-source-id: 2dbd9f9c33950227cc63aa29cc4a98bdd0db8e7a
2021-10-04 07:27:24 -07:00
Michel Weststrate
816720d708 Stop reporting 'Failed to fetch' errors
Summary: Failed to fetch promise rejections should not be reported

Reviewed By: passy

Differential Revision: D31266851

fbshipit-source-id: ce3c15db5504c01d66b44e032c2b7fb752ec2ec3
2021-09-29 06:56:37 -07:00
Michel Weststrate
b539f4d870 Fix startLogging / stopLogging for ArchivedDevice
Summary:
Unit test would fail on trying to emit server commands when creating a ArchivedDevice. But archived devices can silently ignore log start commands, which fixes the failing test as well.

Example failing run: https://github.com/facebook/flipper/runs/3685776120

I'm not sure why the test wasn't _always_ failing

Reviewed By: lblasa

Differential Revision: D31142584

fbshipit-source-id: 57106ecdace9f72444eaf68ee9fa024c84556a1c
2021-09-27 02:16:45 -07:00
Michel Weststrate
3882357579 Factor out realDevice [7/n]
Summary: `device.realDevice` was the escape hatch used in Sandy plugins to give access to device specific features like taking screenshots, clearing logs or accessing `adb`. Since in decapitated Flipper that won't be possible anymore (since plugins run in the client but device implementations on the server), all escape hatches have been bridged in this stack, and we can get of the `realDevice` interaction, by explicitly exposing those cases, which makes it type safe as well.

Reviewed By: passy

Differential Revision: D31079509

fbshipit-source-id: c9ec2e044d0dec0ccb1de287cf424907b198f818
2021-09-22 09:03:33 -07:00
Michel Weststrate
2d838efd4d Separate device in server and client version [2/n]
Summary:
This stack takes care of handling care of moving all device interactions over the (possible) async channel FlipperServer. The FlipperServer interface (see previous diff) allows listening to specific server events using `on`, and emit commands to be executed by the server by using `exec` (e.g. `exec('take-screenshot', serial) => Promise<buffer>`).

FlipperServerImpl implements this interface on the server side.

The device implementations are split as follows

```
server / backend process:

ServerDevice
- iOSDevice
- AndroidDevice
- MetroDevice
- DummyDevice
- Mac/Windows Device

frontend / ui:

BaseDevice: a normal connected, device, implements device apis as they already existed
- ArchivedDevice (note that this doesn't have a server counterpart)
- TestDevice (for unit tests, with stubbed backend communication)

```

All features of devices are for simplicity unified (since the deviations are small), where specific device types might not implement certain features like taking screenshots or running shell commands.

To avoid making this diff unnecessarily big, some open Todo's will be addressed later in this stack, and it shouldn't be landed alone.

Reviewed By: timur-valiev

Differential Revision: D30909346

fbshipit-source-id: cce0bee94fdd5db59bebe3577a6084219a038719
2021-09-22 09:03:32 -07:00
Michel Weststrate
845d0755f1 Move common types to flipper-plugin [1/n]
Summary: This is the first diff in a stack of many where server and UI logic is further decoupled to be only communication through an event listener / emitting commands, where all data going over these media is json serializable. In this diff we extract the common interfaces that are to be used by both server and UI layer.

Reviewed By: passy

Differential Revision: D30899609

fbshipit-source-id: dc3c783707d47671f1d0f5dbf99cde17a8f69062
2021-09-22 09:03:32 -07:00
Ananya Arun
0816f73d07 Start abstractions for the guide
Summary:
This is the third diff for M3

- Started abstractions to remove repetitive code as a part of M3
- Implemented a new abstracted component in GuideAnserScreen and removed PluginErrored.tsx to integrate it here.
- Using a map object that maps a string to function. Here I have used helper functions to get each screens context as first class members.
- The map is global and is populated globally (as discussed) and we invoke the required function based on the state we are at from GuideAnswerScreen.

Reviewed By: mweststrate

Differential Revision: D30772236

fbshipit-source-id: f8fc175c6d308e2f72c5f6ce826f70245ad46797
2021-09-10 06:28:07 -07:00
Pascal Hartig
47099cfd31 Fix Flipper lints #16
Summary: Larger list of fixes. Adding another package to the flipper export is a bit nasty but it unblocks us for now and centralises `remote` access which seems like a win for FAAS.

Reviewed By: mweststrate

Differential Revision: D30785421

fbshipit-source-id: 931297e8566b5d8a213b69ae87d0cda7648b3ed4
2021-09-08 08:44:19 -07:00
ZHANG Qichuan
9a4d94c971 Add option for automatic dark theme (#2759)
Summary:
Add an setting option to allow automatic dark theme

A feature requested by swrobel https://github.com/facebook/flipper/issues/2708

## Changelog

### UI change
Replace the `Enable Dark Theme` Toggle button with a Radio group containing three Radio buttons.

The available options are `Dark`, `Light` and `Use System Default`, of which `Use System Default` is the default value

<img width="548" alt="Screenshot 2021-08-31 at 3 32 44 PM" src="https://user-images.githubusercontent.com/410850/131462798-4e74f757-41fc-4a3f-ba28-53d00fc1cf03.png">

### Data structure change

The `darkMode` property of [Settings](c0cd32564a/desktop/app/src/reducers/settings.tsx (L20)) is changed from `boolean` to `string`, the available values are `dark`, `light` and `auto`

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

Test Plan:
### Test 1
- Step: Choose `Dark` in the Settings page and click on `Apply and Restart` button
- Expect: The application is displayed in Dark mode
### Test 2
- Step: Choose `Light` in the Settings page and click on `Apply and Restart` button
- Expect: The application is displayed in Light mode
### Test 3
- Step: Choose `Use System Default` in the Settings page and click on `Apply and Restart` button
- Expect: The application is displayed in System Default mode

Reviewed By: mweststrate

Differential Revision: D30666966

Pulled By: passy

fbshipit-source-id: a63e91f2d0dbff96890e267062cb75bffd0007f4
2021-09-08 03:28:35 -07:00
Pascal Hartig
e25103291a Fix Flipper lints #4
Summary: Fixing 10 lints.

Reviewed By: lblasa

Differential Revision: D30769155

fbshipit-source-id: 5841ef7403dfff5fc7779789106b9bdc3719ce49
2021-09-07 07:31:29 -07:00
Pascal Hartig
fce7c7a32a Disable flaky test (#2711)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/2711

See failure in T98765066. Disabling for now.

Reviewed By: nikoant

Differential Revision: D30481963

fbshipit-source-id: 555295bbab33629250b53a194de37038fea2198a
2021-08-24 08:49:45 -07:00
Michel Weststrate
a2644b4a2e handle device / client absence for deeplinks
Summary:
This diff makes the new deeplink format feature complete, make sure VPN connection, plugin installation, client & device selection are now all handled. See the test plan for examples.

Changelog: Flipper now supports a richer protocol for opening deeplinks: https://fbflipper.com/docs/extending/deeplinks#open-plugin

Reviewed By: timur-valiev

Differential Revision: D30423809

fbshipit-source-id: e6cf4bf852b2c64e9a79a33ef0842eb27f68f840
2021-08-20 02:24:03 -07:00
Michel Weststrate
bf65da0e72 Check if plugin status before opening
Summary:
This diff takes care of current plugin status when handling deeplinks. It checks:
1. if the plugin failed to load
2. if the plugin is behind GK
3. if the plugin is installable from bundle
4. if the plugin is installable from marketplace

Reviewed By: passy

Differential Revision: D29875483

fbshipit-source-id: 8dac1aab63822f43a0d002b10efa5b4a756fce41
2021-08-17 04:44:39 -07:00
Michel Weststrate
5e8c968222 Move devices to server folder
Summary:
This is the first of many diffs that extracts the connection, device, client detection out of the flipper core, to create a reusable flipper-server library that can be used in e.g. flipper-dump.

To keep diffs a little smaller, the current connection logic is first moved to the `server/` directory, and decoupled manually from the rest of the core, before moving it over to a separate package.

This first diffs moves the `comms/`, `devices/` and certificate utilities to the `server` directory.

Further untangling will follow in next diffs

Reviewed By: timur-valiev

Differential Revision: D30246551

fbshipit-source-id: c84259bfb1239119b3267a51b015e30c3c080866
2021-08-12 05:43:43 -07:00
Pascal Hartig
eb27796571 Fix Windows test (#2682)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/2682

Run path-specific tests only on Unix-like OSes. We could
easily change the path to Windows, but honestly it's enough
to confirm this on one platform.

Reviewed By: timur-valiev

Differential Revision: D30255014

fbshipit-source-id: 7db36bc1738d721625e3c86c210d46dfaf8f0ab8
2021-08-11 14:35:12 -07:00
Pascal Hartig
7df77e2620 Asyncify screenshot helper
Summary: Suggested by mweststrate. Much more readable now!

Reviewed By: mweststrate

Differential Revision: D30251322

fbshipit-source-id: 269fefce3f63fa4eababb4c541ff09a660cc5cc0
2021-08-11 11:03:45 -07:00
Pascal Hartig
757ba91bf6 Simplify bridge types
Summary: This turns the bridge type into a simpler struct with always-present methods so you don't need to add additional null check to the calling logic which are hard to deal with.

Reviewed By: mweststrate

Differential Revision: D30248628

fbshipit-source-id: cdaee44efcbb19dcbb301099b4a7d0eb0c350e67
2021-08-11 11:03:45 -07:00
Pascal Hartig
52b3edc5ad Move screenshot to iOSBridge
Summary:
In order to support IOS cloud devices, we need to abstract
over the direct uses of idb/xcrun so we can switch them
out based on more than the device type.

Note that there's a bit of a type weirdness in there. I'll
clean this up with the next diff.

Reviewed By: mweststrate

Differential Revision: D30248036

fbshipit-source-id: ec8571429e04abe059850ef334a6645ae4a5e034
2021-08-11 11:03:45 -07:00
Pascal Hartig
4e17fb9c48 Extract temp path util
Summary:
`electron.remote` access is slow so we can cache this
like we do in other places. Also means one fewer `electron`
import which is gonna add up for Flipper Decap.

Reviewed By: mweststrate

Differential Revision: D30247431

fbshipit-source-id: 90f0e8df99af8bed40fbebcfd445abaca2965b7c
2021-08-11 11:03:45 -07:00
Pascal Hartig
8223051905 Mute eslint rule
Summary:
A few drive-by changes ahead of the sustainathon.
(More to come.)

Reviewed By: mweststrate

Differential Revision: D30247395

fbshipit-source-id: e707377a1169eb634a42f08c3d27fe3e065b63bb
2021-08-11 11:03:45 -07:00
Lorenzo Blasa
204c075782 Move BrowserClientFlipperConnection to a better location
Summary:
Move BrowserClientFlipperConnection to a better location.

All communication types should be located inside the comms/ directory.

Reviewed By: jknoxville

Differential Revision: D29937942

fbshipit-source-id: 7fbf92c60d53a8f4f16d738bcbd6c451ce367ff1
2021-07-27 10:00:52 -07:00
Lorenzo Blasa
1f1f41c81e Rename websocketClientFlipperConnection
Summary:
At the moment Flipper spawns a WebSocket server which can be used to debug Web applications in the Browser i.e. Kite.

This diff renames websocketClientFlipperConnection to BrowserClientFlipperConnection.

Renamed to make it clearer what type of connection it really is. WebSocket connections will no longer have the same meaning once RSocket is removed and WebSockets are used instead.

Reviewed By: jknoxville

Differential Revision: D29937656

fbshipit-source-id: 99d55fcfe256865add1ba3aada2c23f935f5cabe
2021-07-27 09:22:24 -07:00
Lorenzo Blasa
c1496f621e FlipperClientConnection no longer redefines the RSocket Socket interface
Summary:
FlipperClientConnection used to define an interface which closely matched the Socket interface defined in RSocket.

Presumably it tried to 'decouple' RSocket from consumers of the client socket connection. It also limited the amount of actions that could be triggered on said socket connection.

This diff does two things:
- Renames FlipperClientConnection to ClientConnection.
- Changes the interface so that it no longer matches the RSocket Socket interface. The new interface doesn't use RSocket reactive types either.

As a result, current implementations of the interface will act as a proxy to the RSocket Socket type. The change allows the usage of other implementations such as WebSocket.

Reviewed By: fabiomassimo

Differential Revision: D29934090

fbshipit-source-id: 02742e50cd6e801310698969c81b3bf1ef0fa2a2
2021-07-27 08:30:21 -07:00
Lorenzo Blasa
8bb47a38a1 Rename server as ServerController
Summary:
In the file server.tsx was defined the Server type.

Server is being renamed to ServerController and the new file is ServerController.tsx

This is the last diff where things are being moved or renamed in a way that will make harder to review future changes.

Reviewed By: fabiomassimo

Differential Revision: D29912626

fbshipit-source-id: ae583671d98823a10f7efceeefd8215621f59dcf
2021-07-27 02:25:10 -07:00
Lorenzo Blasa
3e334e1a0e Create a new comms directory and move the server type inside
Summary:
A new comms/ directory is introduced which will contain all the communication code between client and server.

This change just moves server.tsx to its new location, it will make the next changes easier to follow.

Reviewed By: fabiomassimo

Differential Revision: D29911904

fbshipit-source-id: ae319dc8f9fd7af9d8b5b5c0ee87b56102cc0a18
2021-07-27 02:25:10 -07:00
Michel Weststrate
a78b6124d7 Add option to jest to run tests only locally, or on linux (#2609)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/2609

Make it possible to mark some tests to run on non-CI, or unix only

Reviewed By: nikoant

Differential Revision: D29813506

fbshipit-source-id: 140f8a4eaed5af3282ab9d139b46a52818be0934
2021-07-21 05:43:11 -07:00
Michel Weststrate
57d00e0bab One sleep to rule them all. Zzz
Summary: Boyscouted some code duplication away.

Reviewed By: jknoxville

Differential Revision: D29731016

fbshipit-source-id: d5f1677a667f032f6e7e031da296be26e1976932
2021-07-16 03:43:36 -07:00
Michel Weststrate
d23ccfcd44 Restore copy on text
Summary:
Some folks were missing the copy as text ManagedTable used to have, so introduced both the options to either copy as text (visible columns or custom copy handler) or as JSON

Changelog: It is now possible to both copy as text or as JSON from data tables

Reviewed By: jknoxville

Differential Revision: D29712096

fbshipit-source-id: 27bd2e869a247bd0896ce2774c08651123fd531d
2021-07-16 03:43:36 -07:00
Michel Weststrate
5dbd3bd414 Make getFlipperLib generally available, and use it to decouple opening links from Electron
Summary:
This stack reduces our direct dependency on Electron, for example by exposing our own API to open links.

Also exposing `getFlipperLib` as API from `flipper-plugin`, so that these utility methods are available outside plugin contexts as well.

Reviewed By: timur-valiev

Differential Revision: D29661689

fbshipit-source-id: 0c0523326eeb0d9d8fbe3e03c4609327bb53596b
2021-07-15 01:54:20 -07:00