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
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
Summary:
Connections from VSCode and Kite would remain forever pending because they don't go through the secure connection handler. This diff fixes that. Also removed the separate event that existed for that, since registering a new client is already a 'success' signal, so it doesn't need a separate event.
It turned out that the VSCode pending connection is actually correct, as it never handles the `getPlugins` event, so apparently the handling is broken. Added timeouts to guard against that as well.
Applied several code simplications as well.
Introduced an explicit cert exchange medium 'NONE' so that in code it is a bit clearer where CSR negotiation is supposed to happen.
Changelog: Fixed an issue where Kite / Unity apps didn't connect anymore
Reviewed By: timur-valiev
Differential Revision: D30866301
fbshipit-source-id: 8bd214fd9eebcd9a7583f1b44ee283883002f62e
Summary: Made a start with decoupling JS device. Incomplete as there are still Electron deps.
Reviewed By: timur-valiev
Differential Revision: D30309257
fbshipit-source-id: b8002170cbbe8d68e1795ce7c12ffce4c8eac853
Summary: Decoupled metro 'device' from Redux store. Extracting some commonalities with Android device management up into FlipperServer
Reviewed By: timur-valiev
Differential Revision: D30309256
fbshipit-source-id: 1a9ac01e3f21d2d08761554d3644a7ae8d00a93e
Summary: See earlier diffs in the stack. This diff decouple android device management from the Redux store, replacing it with specific events.
Reviewed By: timur-valiev
Differential Revision: D30286345
fbshipit-source-id: 42f52056bf123b862e2fc087f2e7130c02bdd742
Summary: This diff moves the first small pieces of getting device detection up and running to `server/`, and the wiring between FlipperServer and flipper core / redux is setting up specific events and dispatch actions from there.
Reviewed By: timur-valiev
Differential Revision: D30276776
fbshipit-source-id: b30b996d03c27459815bebeb97b05b5fe5d24bec