Commit Graph

82 Commits

Author SHA1 Message Date
Lorenzo Blasa
1f53c167ab Dedicated connectivity troubleshoot notification
Summary:
There's a generic notification server event.

This change introduces a new notification server event dedicated for connection troubleshoot.

The difference is, this notification will have a button to troubleshoot the issue. Additionally, in the future, we may even be able to add a payload so that we can troubleshoot the exact problem.

Reviewed By: antonk52

Differential Revision: D47873697

fbshipit-source-id: 28843a08836d0054909f6b9ab7a88b14b8a1b868
2023-07-28 10:25:17 -07:00
Lorenzo Blasa
3bef18ff81 Server state error notification key
Summary: ^

Reviewed By: antonk52

Differential Revision: D47869306

fbshipit-source-id: 38a8170a87f1774b8cb421d1ca4145a8e86d4067
2023-07-28 07:22:21 -07:00
Lorenzo Blasa
4dc63261ff EADDRINUSE notification key
Summary: ^

Reviewed By: antonk52

Differential Revision: D47869281

fbshipit-source-id: 35982dbfd674762d2fcd8bd74b99c538307c23b1
2023-07-28 07:22:21 -07:00
Lorenzo Blasa
d64af25eac Server error notification key
Summary: Add key for server error notifications as to prevent duplicates.

Reviewed By: antonk52

Differential Revision: D47869240

fbshipit-source-id: 7c826ab07a8f92bd053200786ed990ad78bbfa67
2023-07-28 07:22:21 -07:00
Lorenzo Blasa
176301979a Open connectivity troubleshoot if unable to find device
Summary: If the notification is shown, allow engineers to switch to the connectivity troubleshooting view as it may highlight where the problem is.

Reviewed By: antonk52

Differential Revision: D47869154

fbshipit-source-id: f4154bb230d891dc4ac108b5acbe7e6541ffed1a
2023-07-28 07:22:21 -07:00
Lorenzo Blasa
63ed9d7324 Unable to find device notification key
Summary: Add a key such that the same notification does not appear again for the same device/app.

Reviewed By: antonk52

Differential Revision: D47835045

fbshipit-source-id: 78237b4102aa199ebea23b7c5726b567fc4de91e
2023-07-28 04:40:45 -07:00
Michel Weststrate
af5b9532ec Don't throw on timeouts during client connection.
Summary: Timeout exceptions while connection to new clients where rethrown but catched nowhere. Probably this warning should be handled more gracefully, but this at least moves it to warn rather than spawning our monitoring on transient issues

Reviewed By: passy, antonk52

Differential Revision: D47665050

fbshipit-source-id: ad51808d12e9f4de318d4426933ecb3787839b7c
2023-07-21 04:18:02 -07:00
Andrey Goncharov
ca009d1233 Ignoring errors from "send"
Summary: "send" returns "void" which means we do not care about the execution result, including errors

Reviewed By: lblasa

Differential Revision: D47398015

fbshipit-source-id: ef185575f6e91d69356ab88c7f3d213033759da8
2023-07-13 03:23:56 -07:00
Lorenzo Blasa
dac8c5b213 Usage track now internal to tracking
Summary:
Usage tracking comes from Electron's `main.tsx`. There's a timer that dispatches an IPC event every 60 seconds.

This is all good for Electron builds.

For non-electron builds, there's no such thing as IPC.

So, react to the IPC event whenever necessary but also handle the interval internally such that usage is tracked independently of explicit callers.

Reviewed By: antonk52

Differential Revision: D47053404

fbshipit-source-id: f17694e65eed18678b45a2e815813bafab69c3f1
2023-06-27 07:17:06 -07:00
Lorenzo Blasa
fe12a908fb Remove debugging comment
Summary: ^

Reviewed By: LukeDefeo

Differential Revision: D47053235

fbshipit-source-id: af17955a333059cce58a68a43ecdcb67a441d7b5
2023-06-27 04:28:04 -07:00
Lorenzo Blasa
cadf5a3656 starred-plugins removal
Summary: A transition period of 2 years should be enough.

Reviewed By: LukeDefeo

Differential Revision: D47053216

fbshipit-source-id: c9f9bfbff82a05942d408b325088095a6069cced
2023-06-27 04:28:04 -07:00
Lorenzo Blasa
6430403da0 Jest update v26.6.3 -> v29.5.1
Summary:
^

Basically, update Jest and fix any raised issues. Mainly:
- Update necessary dependencies
- Update snapshots
- `useFakeTimers` caused a few issues which meant that the way we hook into the performance object had to be tweaked. The main code change is: `//fbsource/xplat/sonar/desktop/scripts/jest-setup-after.tsx`
- `mocked` -> `jest.mocked`

Changelog: Update Jest to v29.5.1

Reviewed By: antonk52

Differential Revision: D46319818

fbshipit-source-id: d218ca8f7e43abac6b00844953ddeb7f4e1010a2
2023-05-31 14:19:29 -07:00
Andrey Goncharov
b3307baafe Make isLoggedIn report user value instead of bool
Summary: It makes little sense to hide this info from developers. It was also requested by antonk52

Reviewed By: LukeDefeo

Differential Revision: D44631235

fbshipit-source-id: 1756c5ca2a95b2f815f8c4336621d3c057b704f2
2023-04-04 05:26:31 -07:00
Luke De Feo
e47d99a69e Remove unused plugin update command / redux action
Summary:
This command is never actually dispatched so removing to avoid future confusion.

When new plugins are downloaded a check is done here https://fburl.com/code/e3zedljb to see if pluginIsDisabledForAllConnectedClients, if so, load command is queued, which internally calls update (which resets state)

If the plugin is not disabled then a message appears asking user to manually reload.

Reviewed By: aigoncharov

Differential Revision: D44502476

fbshipit-source-id: b796b77f843218c07ee612d9f45cacba073362d3
2023-03-30 10:05:59 -07:00
Luke De Feo
5a6091f6f8 Left rail log in icon decided by atom, cache user profile
Summary:
Previously the left rail state was decided by prescense of user profile but we are moving to logged in state being based on the atom.

As a result we need to cache the user profile so we have something to display when user not on vpn on startup

Reviewed By: aigoncharov

Differential Revision: D44502477

fbshipit-source-id: 11462d24c773d6d364e844b4f606e124e5278348
2023-03-30 10:05:59 -07:00
Andrey Goncharov
35c145463a Limit notification length
Summary: See https://fb.workplace.com/groups/flippersupport/permalink/1593262167821102/

Reviewed By: antonk52

Differential Revision: D44459787

fbshipit-source-id: ef14e560c523fddf4f815d0faafa37e44dc416b8
2023-03-28 07:00:20 -07:00
Andrey Goncharov
b76c8a390c Add excessive logging for "deinit" method for Msys plugin
Summary: Debugging T141716711

Reviewed By: antonk52

Differential Revision: D44295078

fbshipit-source-id: 5269c7308e71d8b2ba7881747fcd5cbe37d81729
2023-03-22 07:34:39 -07:00
Michel Weststrate
3751d3c84c More elaborate error message when plugin download fails
Summary: See https://fb.workplace.com/groups/flippersupport/permalink/1586389021841750/. Flipper suggests that not connecting to VPN is the problem, while the problem can also not being logged in.

Reviewed By: antonk52

Differential Revision: D44164192

fbshipit-source-id: 993d2a4bdc6a9cb0c45f35856b83449cea294d45
2023-03-17 06:35:32 -07:00
Michel Weststrate
6196204a7b Plugin download failure is not an error
Summary: Plugin download failure is typical a transient error, no need to trigger monitoring for that

Reviewed By: ivanmisuno

Differential Revision: D43118116

fbshipit-source-id: 0cd0f87f0ed6123adcba28139308ecea92b1b508
2023-02-10 02:22:50 -08:00
Ranesh Saha
7a28ed1fe5 Pipe through --updater/--no-updater flag for flipper.exe (#4277)
Summary:
In our organization, Flipper is distributed in a version controlled way. As a result, we do not want users to manually update or receive prompts to update when a new version is available. There is already a `--updater` flag in the command line arguments for flipper.exe, but it isn't piped through. This change pipes it through and disables all update related UI when `--no-updater` is passed in.
## Changelog

Support --updater and --no-updater options for flipper.exe

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

Test Plan: Ran `yarn build --win` in flipper/desktop, and launched flipper.exe from flipper/dist/win-unpacked with the `--updater`, `--no-updater` and no flags and ensured the proper behavior was observed (update UI shows by default or when `--updater` is specified, and doesn't show when `--no-updater` is specified).

Reviewed By: passy

Differential Revision: D41298321

Pulled By: mweststrate

fbshipit-source-id: 5ddfede2700954f0fdd6a111b20d0836fab25565
2022-11-15 03:23:55 -08:00
Lorenzo Blasa
587f428cf8 Allow plugins to use css
Summary:
Flipper plugins fail when importing css from third-party dependencies. This diff tries to fix that.

Effectively, the plugin can import the css and export it when is bundled.

When we load the plugin, we check if there's a css file for it. If there's one, we return it and try to use it.

Reviewed By: aigoncharov

Differential Revision: D40758178

fbshipit-source-id: e53afffcc481504905d5eeb1aea1f9114ee2a86b
2022-10-27 22:50:30 -07:00
Luke De Feo
a520c422eb Improve waiting for new client for deeplinks
Summary:
There were some situations were we would hang waiting for new clients but one had connected.

Additionally the old approach would close and reopen the dialog every time a state update happened in the redux store which was a little jarring. Now the polling of the update is independant the dialog

The dialog still flashes  for other parts of the flow (when scanning for devices) and would be nice to fix this too in the future

Reviewed By: mweststrate

Differential Revision: D40477502

fbshipit-source-id: d1ff161f262493cf5b3fb74e22b49ed65de8c292
2022-10-24 08:07:01 -07:00
Luke De Feo
c6dbfc87a4 Wait for client to initliaze on startup deep link
Summary: We were incorrectly assuming a client did not support a plugin because it was not fully initialized. This issue was only apparant on start deep links

Reviewed By: mweststrate

Differential Revision: D40477503

fbshipit-source-id: 5fd9db765f559b8eb80cc3680ee694dfd2cf9a37
2022-10-24 08:07:01 -07:00
Andrey Goncharov
fbbd90e9f5 Suggest a quick fix for EADDRINUSE
Summary:
Show users a way to fix Flipper EADDRINUSE on their own without filing a support request

CHANGELOG: Better error message for EADDRINUSE

Reviewed By: mweststrate

Differential Revision: D40338164

fbshipit-source-id: ec0419c78983b55736aa773757775b5302da51e0
2022-10-13 03:14:06 -07:00
Luke De Feo
71ed2f6e25 Fix deeplinks when flipper desktop is closed
Summary: Previously opening a deep link would always fail with flipper thinking the plugin did not exist.  In this diff we wait for plugins to be initialized

Differential Revision: D40142275

fbshipit-source-id: 7894fc60a6df57e13395e05263b0905847b11ad3
2022-10-07 02:52:43 -07:00
Andrey Goncharov
9597e672a1 Provide @emotion/css to plugins
Summary: Changelog: Provide `emotion/css` to plugins

Reviewed By: antonk52

Differential Revision: D40057817

fbshipit-source-id: 1e931eb8527d62dd4312556a6d493fdf3e17b45a
2022-10-04 05:07:36 -07:00
Andrey Goncharov
31fb3dd5be Stop counting disabled and gatekeeped plugins as loaded
Summary: Without this change gatekeeped and disabled plugins are also counted as loaded, which results in plugin duplication in the UI

Reviewed By: lblasa

Differential Revision: D39695335

fbshipit-source-id: 759e2e0eaead1bee0f7d61e4ba3d1b8e4b6c0976
2022-09-22 04:17:24 -07:00
Ken Yee
fa9ba6f2d0 Adds a notifyAvailableUpdate flag to config.json to disable update (#3992)
Summary:
We would like to version control Flipper and some of our custom plugins that are installed on developers' systems.
Flipper by default prompts users to upgrade so they sometimes do the update and then all our custom plugins break because they were compiled for an older version.
See https://github.com/facebook/flipper/issues/3947 for feature request info.

## Changelog

Adds notifyAvailable flag to config.json to disable prompting for users that "an update is available"

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

Test Plan:
Tested by running locally.
Had to comment out the isProduction() check to confirm this it worked properly because this flag is false on dev versions.
Couldn't figure out how to manually test the handleOpenPluginDeeplink.tsx change but made a similar change there; happy to test that if you can tell me how to exercise that path.

Reviewed By: antonk52

Differential Revision: D39654481

Pulled By: antonk52

fbshipit-source-id: cef6b48d870915c48f620269c42d24b8ef1f4c29
2022-09-21 09:47:44 -07:00
Andrey Goncharov
8716761cb3 Fix require monkey-patching in electron build
Summary:
In D39311893 (094c5bdfdd) we started monkey-patching `require` to resolve global dependencies in the plugins. Apparently, patching `globalThis.require` did not work in the electron env. On my local machine it kept working because I had the experimental `flipper-server` feature enabled which embeds flipper-server into the electron build. In flipper-server we properly patch `require` via `Module.prototype.require` which affected the global require in electron.
With this fix we now properly patch require in electron via Module.prototype.require all the time

Changelog: Fix plugin loading with experimental flipper-server disabled

Reviewed By: nikoant

Differential Revision: D39633821

fbshipit-source-id: 9554f643c625620d116075ae87f573d8447850f6
2022-09-20 01:36:56 -07:00
Andrey Goncharov
fab4ee8c22 Unload stale modules from electron cache
Summary: `requirePlugin` in electron uses native `require` which has a built-in cache. Without this fix a stale version of the plugin loaded.

Reviewed By: lblasa

Differential Revision: D39542121

fbshipit-source-id: e6c4b65f9ea7b816803baaae537c234914fcb3d7
2022-09-15 10:02:19 -07:00
Andrey Goncharov
6b3298a29e Reload plugins with updated sources
Reviewed By: lblasa

Differential Revision: D39540173

fbshipit-source-id: 65f5d0f0a325d6ca3ed5e1213e689490c6b650b2
2022-09-15 10:02:19 -07:00
Andrey Goncharov
094c5bdfdd Provide external modules to plugins
Summary: esbuild references external modules via `require`. We wrap `require` to point the references to built-in modules to global variables

Reviewed By: lblasa

Differential Revision: D39311893

fbshipit-source-id: a99480161c082f4095d78c22271f114532f32c16
2022-09-15 10:02:19 -07:00
Andrey Goncharov
650ff4bcfb Remove plugin bundling
Summary: Remove the notion of bundled plugins

Reviewed By: lblasa

Differential Revision: D39308888

fbshipit-source-id: aa88ddbf2801ad1da95f89e4c761259b697b0d66
2022-09-15 10:02:19 -07:00
Andrey Goncharov
642a3ebf81 Remove default plugin entrypoints for hot-reloading
Summary: As we stopped bundling plugins in D39276249, we no longer need the entry points for the bundled plugins (these entry points are always going to be empty)

Reviewed By: lblasa

Differential Revision: D39307565

fbshipit-source-id: 43751fe31c8bd962677c226b27cfe52093d3f2d4
2022-09-15 10:02:19 -07:00
Andrey Goncharov
a888e6affa Simplify bundled plugin setup
Summary: Stop bundling plugins into Flipper Server bundles. In later diffs, we will start building all plugins even in dev mode which removes the need to bundle them.

Reviewed By: lblasa

Differential Revision: D39276249

fbshipit-source-id: 091405cfcf58aa7e1bd2b382da40f8d9841ae6b1
2022-09-15 10:02:19 -07:00
Feiyu Wong
ab49b17c7b Save logs that are shown in logs plugin if persisted logging is enabled
Summary:
This is the second part of the feature which enables data/log persistence by adding a global setting which controls whether the data is wiped when the same device is disconnected and reconnected.

Building on the previous diff, this diff uses the setting from the Redux Store to determine whether to "wipe" the data or not.

Changelog: Added option in Flipper settings to persist device data upon reconnection instead of wiping everything.

Reviewed By: mweststrate

Differential Revision: D38076567

fbshipit-source-id: 83658ac09bc88921a56517e1a1f624d4a4bbc2c5
2022-07-28 13:56:34 -07:00
Lorenzo Blasa
ea958b0b15 MarketplacePluginDetails into flipper-common
Summary: ^

Reviewed By: antonk52

Differential Revision: D37715921

fbshipit-source-id: 05d35c472e847a7891fd4af1e88a3425e1d55f13
2022-07-11 02:39:49 -07:00
Andrey Goncharov
572678c4aa Fix loading plugins from disk/marketplace
Summary: Good ol' dynamic this

Reviewed By: nikoant

Differential Revision: D37456434

fbshipit-source-id: 7a90f1b8e6492f41eb4096f7c976e17f6a98810e
2022-06-27 08:05:31 -07:00
Andrey Goncharov
3e72831699 Move most of plugin tests to flipper-frontend-core
Summary: See D37139129

Reviewed By: passy

Differential Revision: D37241829

fbshipit-source-id: d6bef24416e2b999d529fb6e275c64384c775c21
2022-06-20 12:18:40 -07:00
Andrey Goncharov
115a4b7997 Use AbstractPluginInitializer from flipper-frontend-core in flipper-ui-core
Summary: See D37139129

Reviewed By: passy

Differential Revision: D37238571

fbshipit-source-id: 39d6bb87d6beacc793ef5acd71097fcc4e82969d
2022-06-20 12:18:40 -07:00
Andrey Goncharov
68e2bc73c9 Use setGlobalObject from flipper-frontned-core in flipper-ui-core
Summary: See D37139129

Reviewed By: lblasa

Differential Revision: D37236905

fbshipit-source-id: aeb4c02cfc0e57d262fa59c045fa542819ee988c
2022-06-20 12:18:40 -07:00
Andrey Goncharov
17ab7a86ef Use getRenderHost from flipper-frontned-core in flipper-ui-core
Summary: See D37139129

Reviewed By: lblasa

Differential Revision: D37236435

fbshipit-source-id: 927e9f741bfedb65165f5d24f0acfb775925cdc7
2022-06-20 12:18:40 -07:00
Andrey Goncharov
fd380a4c1e Use BaseDevice from flipper-frontend-core in flipper-ui-core
Summary: Use BasDevice definition from flipper-frontend-core in flipper-ui-core and remove the redundant definition from flipper-ui-core

Reviewed By: lblasa

Differential Revision: D37234785

fbshipit-source-id: 6e768090a197c1d2c49cb1cd573acea12fb65d24
2022-06-20 12:18:40 -07:00
Andrey Goncharov
ef5fa275a3 Use AbstractClient from flipper-frontend-core in fliper-ui-core
Summary: This stack attempts to start using flipper-frontend-core from flipper-ui-core. Currently, flipper-frontend-core contains lots of copy-pasted code from flipper-ui-core.

Reviewed By: lblasa

Differential Revision: D37139198

fbshipit-source-id: 042db7492c550e10ea72c32fd15001c141bf53f9
2022-06-20 12:18:40 -07:00
Andrey Goncharov
ba9a80545d Support globally installed React DevTools
Summary:
- Support loading globally installed DevTools

Background:
1. Initially, I wanted to use react-devtools-core as before. react-devtools-core standalone contains quite a few imports of node.js APIs. After [a conversation with Brian](https://fb.workplace.com/groups/react.devtools/permalink/3131548550392044), I pivoted to react-devtools-inline
2. Technical design doc of react-devtools-inline integration: https://docs.google.com/document/d/1STUSUhXzrW_KkvqSu7Ge-rxjVFF7oU3_NbwzimkO_Z4
3. We support usage of globally installed devtools. Code of react-devtools-inline is not ready to be used by the browser as is. We need to bundle it and substitute React and ReactDOM imports with the globals.
4. As we can't pre-compile what users install globally, we need to bundle global devtools on demand,
5. I tried re-using our Metro bundling pipeline initially, but gave up after fighting it for 2 days. Included, `rollup` instead.
6. Size of a `tgz` archive with a plugin is 2.1MB

allow-large-files

Reviewed By: mweststrate

Differential Revision: D34968770

fbshipit-source-id: 352299964ccc195b8677dbda47db84ffaf38737b
2022-03-31 04:01:33 -07:00
Pascal Hartig
8372d07ae6 Demote "failed to find device" error
Summary:
This is not actionable for us as it includes changing device identifiers.
In this case it's better to rely on individual user reports if this is about
a particular device/app combo.

Reviewed By: lawrencelomax

Differential Revision: D34749996

fbshipit-source-id: 88c6c8b076b3f7d9808b6a2a9b08854d2d7cb39f
2022-03-09 07:40:39 -08:00
Anton Nikolaev
37ff34390a Enable Marketplace for Flipper (#3491)
Summary:
This is PR on top of: https://github.com/facebook/flipper/pull/3473

It adds an option to Settings to allow distribution of marketplace plugins.

Also includes a simple fetch function to retrieve data from external API/server.

## Changelog

Allow marketplace plugins

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

Test Plan:
1. Enable marketplace
2. Provide custom marketplace server (it will serve the list of internal plugins with downloadURL)
3. Test if can see Available plugins and can download/remove the plugin
4. If new update for the plugin, it should also allow auto update

Reviewed By: antonk52

Differential Revision: D34586339

Pulled By: nikoant

fbshipit-source-id: c887982aa0f0f9abd3b5360f22e8692a2445d345
2022-03-07 02:49:49 -08:00
Andrey Goncharov
5068c8273b Add deprecation notice notification
Summary: Add deprecation notice device icon and notification

Reviewed By: lblasa

Differential Revision: D34582475

fbshipit-source-id: 90fde15caf1925b42f50fbfc77dece88c82833cf
2022-03-02 09:18:15 -08:00
Andrey Goncharov
b4b9c0ab28 Implement receiving messages from add-on on the client
Reviewed By: mweststrate

Differential Revision: D34249101

fbshipit-source-id: 07297b84ed8640e3b41599726ba613b6b4e2b62e
2022-02-28 03:50:34 -08:00
Andrey Goncharov
9113006851 Make Client initialize server add-ons
Reviewed By: mweststrate

Differential Revision: D34044353

fbshipit-source-id: 99bcb1559787b2a904bdd796233666a7a4783ea4
2022-02-28 03:50:34 -08:00