Commit Graph

37 Commits

Author SHA1 Message Date
Lorenzo Blasa
bdbf5794ee Remove [conn] from log
Summary: Not really a connectivity related log, so removed [conn] from it.

Reviewed By: passy

Differential Revision: D48266546

fbshipit-source-id: e384301d6301940366b594b4bc612349cc2264ce
2023-08-11 14:16:21 -07:00
Lorenzo Blasa
9e2615cd80 Better troubleshoot guide to kill existing running instance
Summary: Combine the two used commands as will make things easier for our users.

Reviewed By: passy

Differential Revision: D48266474

fbshipit-source-id: 1ee5c568ff001dc5ba3f11e21b09a2a6ab430ac7
2023-08-11 14:16:21 -07:00
Anton Kastritskiy
08371d3a6b Move troubleshooting guide into a modal
Reviewed By: aigoncharov

Differential Revision: D48066773

fbshipit-source-id: 05aca8c75aa30325e1a8c5f31301db1e89ec25af
2023-08-07 03:54:28 -07:00
Lorenzo Blasa
778eaf2038 Overdue refactor for TroubleshootingHub
Summary: It's troubleshooting in general, not only connectivity. So rename and refactor accordingly.

Reviewed By: antonk52

Differential Revision: D47914411

fbshipit-source-id: 658563bfd33427f11fe9f7660b0985fc3f013866
2023-07-31 07:02:16 -07:00
Lorenzo Blasa
aaa0a01c6b Notification refactor for consistency
Summary: ^

Reviewed By: aigoncharov

Differential Revision: D47873882

fbshipit-source-id: 9bfb17b1ecadc3489645b456d6760fc217af7759
2023-07-28 12:06:11 -07:00
Lorenzo Blasa
df374d4de2 Display connection troubleshoot notification
Summary: Reuse the function that was refactored on previous diff.

Reviewed By: antonk52

Differential Revision: D47873752

fbshipit-source-id: 71e12cd34d1826080487297e308450cb2a2a5c26
2023-07-28 10:25:17 -07:00
Lorenzo Blasa
9dea1266a7 Refactor connection notification
Summary:
Extract notification creation from inside the existing function.

This will be reused to display connection notifications from the server event.

Reviewed By: antonk52

Differential Revision: D47873728

fbshipit-source-id: c01dc93dfef28135ecf7e77e92d4d517af082125
2023-07-28 10:25:17 -07:00
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
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
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
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
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
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
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
Lorenzo Blasa
77ab722b52 Better notification messaging
Summary:
'Failed to start connection server' is a bit misleading. 'server-error' is used for both server and client errors.
Changelog: Better notification messaging

Reviewed By: aigoncharov

Differential Revision: D34269045

fbshipit-source-id: f51a28fc0e9ba394b464e5bfca4d0e497f740b1b
2022-02-16 05:22:35 -08:00
Michel Weststrate
b6c884f011 Make sure flipper server initialization errors are propagated properly
Summary:
This diff makes sure that errors are propagated similarly in flipper desktop and browser version, and that they are shown in either case.

Since in the browser version, the UI loads after the error happened, we'll store the error so that any client connecting in the future will read and report it.

Also added a `--failFast` flag to flipper-server, so that the process exits immediately if misconfigured, which is convenient in CI use cases and such

Reviewed By: nikoant

Differential Revision: D33348922

fbshipit-source-id: 0f584104f881141fde38da3f0031748415343ea2
2022-01-04 02:57:25 -08:00
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
0510786dec Fixed relilability issues in running health checks
Summary: Run doctor checks remained pending when the socket disonnected during a check. This

Reviewed By: aigoncharov

Differential Revision: D32984539

fbshipit-source-id: 277005e78803afaaa220cc5ca7fdc9cca6254453
2021-12-13 05:48:16 -08:00
Michel Weststrate
fa67c21def Fix bug where client plugins weren't always started
Summary:
Changelog: Fixed issue where occasionally a plugin wouldn't open after starting Flipper

This fixes a long standing issue where rarely Flipper wouldn't show the selected plugin. This turned out to be a raise condition, that was easy to reproduce in the Flipper browser version; if a client register before all the plugins are loaded, the plugins that are enabled for that client, but not loaded yet, will not instantiate and hence not show up. This diff fixes that

Reviewed By: timur-valiev, aigoncharov

Differential Revision: D32987162

fbshipit-source-id: f3179cd9b6f2e4e79d05be1f2236f63acdf50495
2021-12-10 17:59:33 -08:00
Michel Weststrate
3c6668a8b9 Make sure devices and clients are registered on session startup
Summary: This diff makes sure that when the client starts, it fetches all known devices and clients first, as it might have missed the 'connect' events for those. For Electron this wasn't needed, since the server starts with the UI, but this makes sure that a browser reload or a second connection sees the same devices & apps

Reviewed By: aigoncharov

Differential Revision: D32881589

fbshipit-source-id: 7b1cb3d296044f83dedcf3f3d8d02864690b6666
2021-12-08 04:30:57 -08:00
Michel Weststrate
f9b72ac69e Move RenderHost initialisation to Jest
Summary:
This diff moves RenderHost initialisation to jest, which is thereby treated as just another 'Host' like flipper-ui, the electron app etc. A benefit is that it provides a mocked flipperServer by default that can be used to mock or intercept requests. See LaunchEmulator.spec as example.

Also made the jest setup scripts strongly typed by converting them to TS.

This change allows the test stub configuration, which was OS dependent, out of flipper-ui-core.

Reviewed By: nikoant

Differential Revision: D32668632

fbshipit-source-id: fac0c09812b000fd7d1acb75010c35573087c99f
2021-12-08 04:30:55 -08:00
Michel Weststrate
bca169df73 Move settings, launcherSettings, GKs to app / flipper-server-core
Summary:
This diff moves a lot of stuff from the client to the server. This diff is fairly large, as a lot of concept closely relate, although some things have split off to the earlier diffs in the stack, or are still to follow (like making intern requests).

This diff primarily moves reading and storing settings and GKs from client to server (both flipper and launcher settings). This means that settings are no longer persisted by Redux (which only exists on client). Most other changes are fallout from that. For now settings are just one big object, although we might need to separate settings that are only make sense in an Electron context. For example launcher settings.

Reviewed By: passy, aigoncharov

Differential Revision: D32498649

fbshipit-source-id: d842faf7a7f03774b621c7656e53a9127afc6192
2021-12-08 04:30:54 -08:00
Michel Weststrate
eed19b3a3d Move FlipperServer initialisation out of flipper-core
Summary: This diff makes sure flipper-ui-core no longer depends on flipper-server-core. Currently server config is still transferred from UI to server, which doesn't really make sense in future scenarios where server might start before client, but will address that separately

Reviewed By: timur-valiev, aigoncharov

Differential Revision: D32462835

fbshipit-source-id: 498a944256ba1aabbf963b896953e64d11e27214
2021-12-08 04:30:54 -08:00
John Knox
b7a29ac0b3 Fix disconnect during init logging
Summary:
When a client disconnects while it's still initialising, we get a critical error.
But this is expected to happen now and again, so adding a specific error for it, and handling it accordingly.
It doesn't change the control flow, just the logging.

Reviewed By: nikoant

Differential Revision: D32794062

fbshipit-source-id: cf27fb9c345aa6369d338838a46e75a6b7afde41
2021-12-03 06:28:19 -08:00
John Knox
2d948fe4f4 Dedupe server error notifications
Summary:
These notifications, when emit, don't get deduped, so if connection timeouts keep happening, like in [this](https://fb.workplace.com/groups/flippersupport/posts/1257144721432850), then you get tons of notifications.

This dedupes them if all the info is the same.

Reviewed By: mweststrate

Differential Revision: D32560073

fbshipit-source-id: beb4d67e2a97841bb91add7847157176dee4a5f4
2021-11-19 06:56:47 -08:00
John Knox
8af1e816bc Fix client-switching bug
Summary:
When a new client connects, we dispatch the NEW_CLIENT event.

The reducer of this event contains logic for determining if flipper should switch to display the newly connected client or not, and if so, it will dispatch SELECT_CLIENT.

For that reason, flipperServer always dispatching SELECT_CLIENT bypasses the "should switch?" logic and always switches whenever a new client connects. This is disruptive to working and not desired.

Removing this dispatch so that we rely on the NEW_CLIENT reducer to decide.

Bug report: https://fb.workplace.com/groups/flippersupport/posts/1255964631550859

Reviewed By: aigoncharov

Differential Revision: D32532942

fbshipit-source-id: 0ff2693745e37378362254053ae5fd6fc0d11de2
2021-11-19 03:36:51 -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