Commit Graph

22 Commits

Author SHA1 Message Date
Michel Weststrate
9b4e7e873c Make client -> device connection synchronous
Summary:
devices not always being readily available is causes a lot of complication in the api,
figured to resolve devices first before construction clients,
since clients not attached to a device are shown uncategorized anyway, making them practically un-interactable.
For more background info, see following chat.

{F344388883}

This diff will make it possible to only expose a synchronous api in Sandy

n.b. didn't update Navigation plugin, as that is done in a next diff

Reviewed By: jknoxville

Differential Revision: D24858332

fbshipit-source-id: 8339f831fbbc9c219add56a199364fde67adafc7
2020-11-11 07:58:55 -08:00
Michel Weststrate
ecf4cff7cf Fix most lint warnings
Summary:
I noticed that after the typescript upgrade, I got several weird positives from ESLint (like unused parameters in a type definition, which are obviously always unused, e.g. `type onClick = (e: Event) => void`). After some investigation, it turned out these warnings are generated by eslint, but that those rules should be performaned by typescript/eslint instead. For future reference to which rules this applies:

https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/README.md#extension-rules

Updated the config, and while at it, fixed all warnings in our codebase, except for `react-hooks/exhaustive-deps` warnings, since those require semantic changes.

This reduces the amount of eslint warnings from 86 to 39.

Reviewed By: passy

Differential Revision: D23905630

fbshipit-source-id: 0557708fd9ec6b17840a3c191e7d3baf225bdf23
2020-09-28 01:42:48 -07:00
Timur Valiev
2b13899782 websocket connection - make it work with new js sdk
Summary:
we used to send plugins list with connect command, now we can respond to getPlugins request with new api.
we still support old clients

Reviewed By: jknoxville

Differential Revision: D23625139

fbshipit-source-id: 37a24d0c83cd879d93287dd3a3d4d5d2f9477b34
2020-09-10 08:18:14 -07:00
Pritesh Nandgaonkar
cf29bee5fa Add analytics for cert exchange step
Summary: This diff adds analytics for events like uploading certs, zipping certs.Also logs the payload data received in trusted and untrusted request handlers. It will be helpful to debug the issues through this events.

Reviewed By: jknoxville

Differential Revision: D23374024

fbshipit-source-id: 6fa709bbf05e1b99ed1882be953abbd968eefc6e
2020-08-28 07:18:42 -07:00
Pritesh Nandgaonkar
dc4e224bfb Show possible remediation steps for known errors in a notification
Summary: This diff fires a notification with a remediation suggestion when the client takes a long time to connect back, for both WW and FS_ACCESS case

Reviewed By: mweststrate

Differential Revision: D23321067

fbshipit-source-id: 17ab93974e9571a0ba78af05c624eeb0522637c6
2020-08-26 07:56:58 -07:00
Timur Valiev
ce12c4e3df Make self inspection available for all devs - internal and open source
Summary:
Flipper self inspection is being used by internal devs for a month now and peeple seems happy with it :) Let's make it available to open source devs!

changelog: Flipper Self inspection - Flipper Messages plugin added to dev builds to show messages sent/received from clients

Reviewed By: jknoxville

Differential Revision: D23345560

fbshipit-source-id: 95bac52b966a78fbfa8e4d4c4e15d9d45ca960f7
2020-08-26 07:54:06 -07:00
Pritesh Nandgaonkar
73e3cfe4a1 Minor Bug fixes
Summary: With this change, I verified that our enterprise wilde app is able to connect to Flipper.

Reviewed By: jknoxville

Differential Revision: D23318335

fbshipit-source-id: cc952297ead1e8afcb1d9f5062e593e51e8ce893
2020-08-25 09:37:45 -07:00
Pritesh Nandgaonkar
f626925443 Upload/Download certs zip from Flipper
Summary:
This diff adds upload and download logic for certs. It makes changes on both Flipper Client and Desktop side. With this we enable cert exchange through WWW.

Next Diffs:

1) Add Flipper state in cert provider for more debug data
2) Tests

Reviewed By: jknoxville

Differential Revision: D23092706

fbshipit-source-id: e576253606b64b62848b70203db7e09a3bd77fd9
2020-08-17 06:51:52 -07:00
Pritesh Nandgaonkar
293de19c2b Add toggle in the settings for cert exchange medium
Summary:
This diff adds a toggle setting in wilde which will enable certificate exchange through www.
Right now it just sends the information about which medium to be used for cert exchange to Flipper JS and its client side. But its implementation is not done yet.

### Flow for Wilde

Whenever user changes the setting(or when user logs out) we set the state of exchange medium and accordingly set/reset authtoken. Note at no given point we remove already existing certificates.

### Context for OSS

With this diff we introduce another way to do certificate exchange. Before this diff, we did certificate exchange by accessing the file system of app. But it turns out it's not possible to do that in applications signed by enterprise certs. Thus with this diff one can write their FlipperKitCertificateProvider and fetch the certificate from WWW.

Reviewed By: jknoxville

Differential Revision: D22896320

fbshipit-source-id: 55aef7028a62e71ba9c02f9f79acaab41d09c0c6
2020-08-12 04:44:18 -07:00
Timur Valiev
d28e763cca Self inspection
Summary:
let's finally inspect flipper with flipper!
Here we have:
1) a self inspection client which implements FlipperClient interface from js sdk and FlipperClientConnection. It links back and front parts of self inspection
2) simple plugin (UI) to show messages
3) back part of that plugin - it sends all received messages to UI part via client
4) we initialize self inspection for dev builds only

P. S. filesystem dependency will be replaced with npm one before I ship it (need to publish to npm first)

Reviewed By: mweststrate

Differential Revision: D22524533

fbshipit-source-id: 5c77e2f7b50e24ff7314e791a4dfe3c349dccdee
2020-07-17 04:54:44 -07:00
Michel Weststrate
1dc9e899b8 Make sure Sandy plugis can be initialized
Summary:
This diff makes sure sandy plugins are initialized.

Sandy plugins are stored directly in the client for two reasons
1. we want to decouple any plugin state updates from our central redux store, as redux is particularly bad in handling high frequency updates.
2. The lifecycle of a plugin is now bound to the lifecycle of a client. This means that we don't need 'persistedStore' to make sure state is preserved; that is now the default. Switching plugins will no longer reinitialize them (but only run specific hooks, see later diffs).
3. PersistedState will be introduced for sandy plugins as well later, but primarily for import / export / debug reasons.

A significant difference with the current persistent state, is that if a client crashes and reconnects, plugins will loose their state. We can prevent this (again, since state persisting will be reintroduced), but I'm not sure we need that for the specific reconnect scenario. Because
1. we should fix reconnecting clients anyway, and from stats it looks to happen less already
2. reconnects are usually caused by plugins that aggregate a lot of data and get slower over time. Restoring old state also restores those unstabilites.

For the overview bringing back the archi picture of earlier diff:
{F241508042}

Also fixed a bug where enabling background plugins didn't enable them on all devices with that app.

Reviewed By: jknoxville

Differential Revision: D22186276

fbshipit-source-id: 3fd42b577f86920e5280aa8cce1a0bc4d5564ed9
2020-07-01 09:12:35 -07:00
Timur Valiev
896a90aa26 update js-client api (migrate to TS)
Summary:
JS/TS api:
- migrate to TS
- some refactoring (get rid of bridge, make client abstract)

Implementation isn't full yet, things to be implemented:
- let plugins connect on init command from Flipper
- implement Responder

Further plans:
- make fully compatible with react-native api without breaking changes

Reviewed By: mweststrate

Differential Revision: D21839377

fbshipit-source-id: 9e9fe4ad01632f958b59eb255c703c6cbc5fafe2
2020-06-11 08:45:35 -07:00
John Knox
397fb7413f Fix duplicate message issue in Websocket impl
Summary: Missed an else on the if statement, causing it to duplicate websocket messages.

Reviewed By: passy

Differential Revision: D21256794

fbshipit-source-id: ea4abb88723a052a3490b930420ee6b005447c81
2020-04-27 08:27:07 -07:00
John Knox
fcb89b94b5 Fix wss connection initialisation race
Summary:
The websocket server has a race condition where it only starts listening for messages after the client has finished setting up.
This lets it queue up messages if the client isn't ready.

Reviewed By: passy

Differential Revision: D21256218

fbshipit-source-id: fa8481e11225cc473f03f3afbf4d0c50a48cec91
2020-04-27 07:14:46 -07:00
Michel Weststrate
a5e5ed5b7b Added some additional error handlers to get a better grip on connection issues
Summary: I think it is good to have error handlers where-ever possible, so that there is historical data in our monitoring when we need it, and can track from which point of the code it originates :)

Reviewed By: jknoxville

Differential Revision: D21040059

fbshipit-source-id: 1c07fbfa65379739554bc98f83761ae97870ba82
2020-04-17 05:02:34 -07:00
John Knox
2d68006e3f Use device name instead of Web Browser
Summary: Unity is using this, and I noticed it was showing up as Web Browser which is a bit misleading.

Differential Revision: D21067698

fbshipit-source-id: 93d6a598824e61490e0eadd1b2c9fb3ebc12d01c
2020-04-17 03:10:15 -07:00
Roi Becker
36f1b0e9c2 Allow localhost to connect to websocket
Summary: Accept websocket connections from any localhost origin, in addition to the existing chrome extensions support.

Reviewed By: jknoxville

Differential Revision: D20792131

fbshipit-source-id: d3991aa375bfb4e6f492c02dfab9bf72b1f8c412
2020-04-06 04:50:15 -07:00
Anton Nikolaev
2e88936a29 Import ws package
Summary: Import ws package in a usual way instead of importing it as source code

Reviewed By: jknoxville

Differential Revision: D20724584

fbshipit-source-id: 39cad6e544b71e66560a9351f1e5a0c89be2c152
2020-03-31 02:45:07 -07:00
Timur Valiev
64bfc91ea6 websockets import fix
Summary: somehow normal require brings us non-expected version, so let's import from node_modules

Reviewed By: jknoxville

Differential Revision: D20625706

fbshipit-source-id: 4748bcbaa15d1e6d400fc6d2153bb541a3dd129e
2020-03-26 04:08:29 -07:00
Pascal Hartig
fc9ed65762 prettier 2
Summary:
Quick notes:

- This looks worse than it is. It adds mandatory parentheses to single argument lambdas. Lots of outrage on Twitter about it, personally I'm {emoji:1f937_200d_2642} about it.
- Space before function, e.g. `a = function ()` is now enforced. I like this because both were fine before.
- I added `eslint-config-prettier` to the config because otherwise a ton of rules conflict with eslint itself.

Close https://github.com/facebook/flipper/pull/915

Reviewed By: jknoxville

Differential Revision: D20594929

fbshipit-source-id: ca1c65376b90e009550dd6d1f4e0831d32cbff03
2020-03-24 09:38:11 -07:00
Michel Weststrate
aa2879d6e8 Remove double async wrapping
Summary:
Our usage of requestIdleCallback (probably) causes more trouble than it solves:

1. It makes sure everything is processed asynchronously. But since everything is arriving over a network stack, that is already the case without wrapping it again to run on a separate event loop tick
2. The timeout we set before `500` forces the app to give _more_ priority to message processing instead of less
3. In a next diff (D20151700) in this stack we will make sure that messages are not processed immediately, but simple stored, which should not be significantly more expensive (probably even cheaper) than scheduling another tick on the event loop

Reviewed By: jknoxville

Differential Revision: D20557104

fbshipit-source-id: 6cc10ba537e3cb5f31e6c32e1fdeb57c20f06f17
2020-03-23 06:45:59 -07:00
Anton Nikolaev
863f89351e Yarn workspaces
Summary:
1) moved "sonar/desktop/src" to "sonar/desktop/app/src", so "app" is now a separate package containing the core Flipper app code
2) Configured yarn workspaces with the root in "sonar/desktop": app, static, pkg, doctor, headless-tests. Plugins are not included for now, I plan to do this later.

Reviewed By: jknoxville

Differential Revision: D20535782

fbshipit-source-id: 600b2301960f37c7d72166e0d04eba462bec9fc1
2020-03-20 13:37:41 -07:00