Commit Graph

116 Commits

Author SHA1 Message Date
Pritesh Nandgaonkar
0c0d595cbb Migrate WindowsDevice from js to tsx
Summary: As per the title

Reviewed By: jknoxville

Differential Revision: D16668705

fbshipit-source-id: 520981f2c1356a17561203f18e00f65a751ee8b8
2019-08-09 07:56:54 -07:00
Pritesh Nandgaonkar
2ed24c4a56 Migrate MacDevice from js to tsx
Summary: As per the title

Reviewed By: jknoxville

Differential Revision: D16668140

fbshipit-source-id: 109a7ce29a9dc3934673060e93741b96847dfa56
2019-08-09 07:56:54 -07:00
Pritesh Nandgaonkar
f408f3f949 Migrate the iOSDevice from js to tsx
Summary: As per the title.

Reviewed By: jknoxville

Differential Revision: D16668086

fbshipit-source-id: c246fcaf117802cf1d3c6b3959bf0d0c2761fdce
2019-08-09 07:56:53 -07:00
Pritesh Nandgaonkar
eb26a74327 Migrate AndroidDevice from js to tsx
Summary: As per the title

Reviewed By: jknoxville

Differential Revision: D16667269

fbshipit-source-id: d213f4ebacf8050ae55a8e3268909da8535f2d93
2019-08-09 07:56:53 -07:00
Pritesh Nandgaonkar
47a55b0f26 Migrate BaseDevice from js to tsx
Summary: As per the title

Reviewed By: passy

Differential Revision: D16687261

fbshipit-source-id: a9d85424fb0a08fada7edd0355c356907518d366
2019-08-09 06:56:54 -07:00
John Knox
18f43daa04 Convert server dispatcher to TS
Summary: Convert file to TS

Reviewed By: passy

Differential Revision: D16687921

fbshipit-source-id: 246f5ff58030463889f8f230d120477ff90f04c7
2019-08-09 04:58:27 -07:00
John Knox
bb7e3d4837 Convert tracking dispatcher to TS
Summary: Convert file to TS

Reviewed By: passy

Differential Revision: D16687919

fbshipit-source-id: a2fb8a0ba5e0d5c42765e80311b39868b1e78244
2019-08-09 04:58:27 -07:00
John Knox
8f7c817d56 Convert types dispatcher to TS
Summary: Convert file to TS

Reviewed By: passy

Differential Revision: D16687880

fbshipit-source-id: d3d8712fa4298f8124717ae98239ed63d3282b12
2019-08-09 04:58:27 -07:00
John Knox
cff023150e Convert user dispatcher to TS
Summary: Convert file to TS

Reviewed By: passy

Differential Revision: D16687861

fbshipit-source-id: 5aa88b169b915bc1abd71d312f510073ea78b0c7
2019-08-09 04:58:26 -07:00
Pascal Hartig
3c2d9973e5 Migrate iOSContainerUtility
Summary: TSC actually found a type error here in `safeExec` which is nice.

Reviewed By: danielbuechele

Differential Revision: D16666740

fbshipit-source-id: 28a1ad12190d2351a48323f23c3a69947503625d
2019-08-09 04:02:45 -07:00
Pascal Hartig
fc0966a133 Migrate GK
Summary: _typescript_

Reviewed By: jknoxville

Differential Revision: D16647882

fbshipit-source-id: a5a7053379cd9468e1da9ab0ac2098be3443dda7
2019-08-08 14:32:20 -07:00
John Knox
3bfb7faf0a Convert plugin.js to plugin.tsx
Summary:
* Deletes plugin.js
* Adds plugin.tsx
* Adds plugin flow-typed module that has the old flow types

Reviewed By: passy

Differential Revision: D16668067

fbshipit-source-id: b2f0ce47c4cf7125b4e352821e921b97675d12a9
2019-08-08 12:06:11 -07:00
Daniel Büchele
5f53087c7e client server
Summary: Migrating Server, Client and UninitializedClient to TypeScript

Reviewed By: passy

Differential Revision: D16687855

fbshipit-source-id: 402e4dbcd5d283d3e280d4d8b312662829457886
2019-08-08 11:00:38 -07:00
Daniel Büchele
64cefd0f84 migrate redux store
Summary: Migrating redux stores to TypeScript

Reviewed By: passy

Differential Revision: D16579796

fbshipit-source-id: e3e507f17f1bdd57eb45e30cb0b28aaee6c4521c
2019-08-08 08:07:21 -07:00
Pascal Hartig
6a43b0cc88 Revert D16648356: Migration of Basedevice from js to tsx
Differential Revision:
D16648356

Original commit changeset: 12954532acf9

fbshipit-source-id: 76754f427e7ccac0f0b0030c3a0af02d036c1a8b
2019-08-06 08:50:32 -07:00
Pritesh Nandgaonkar
604e6d761f Migration of Basedevice from js to tsx
Summary: Converted BaseDevice from js to tsx

Reviewed By: passy

Differential Revision: D16648356

fbshipit-source-id: 12954532acf91930ab8c5f995bb94f6f9fe44015
2019-08-06 05:12:20 -07:00
John Knox
f7875002dd Add user ratings
Summary:
Adds a star rating to flipper internal.

Based on the nuclide behaviour:
We get an event emitted when a user changes their rating.
And we also get the rating with every ping event, which is fired every minute, if flipper is the primary window.

The only thing I don't like that much is that this doesn't actually say anywhere what the stars are for.

Reviewed By: passy

Differential Revision: D16420281

fbshipit-source-id: 69a52f64058955d7cd068215478e95c554cb9ed4
2019-07-24 00:14:46 -07:00
John Knox
5288c4ac93 Rename id in CLEAR_PLUGIN_STATE event
Summary:
There's been a bug here where the id was treated as a pluginId.
Renaming to make it clear.

Reviewed By: passy

Differential Revision: D16338884

fbshipit-source-id: 42c6c92653811d88cd37ebf4834346b1f0bb2c2a
2019-07-18 05:28:45 -07:00
John Knox
782c23393a Back out "[flipper] disconnect client instead of removing it"
Summary:
Original commit changeset: 650ef1344b8b

Backing this out until we can come up with a better way to do it.

The change was introduced so that when a device disconnects / crashes, we don't lose all plugin state, and you can still see what was on screen before the crash..

However, there are some problems with this solution, which get quite complicated. Putting them here for future reference:
* Closing an app results in the plugins staying there, and there's no way to tell it's not actually connected.
* If the app reconnects, the JS plugin doesn't get re-initialized. Even though the client plugin has been.

Reviewed By: bnelo12

Differential Revision: D16280931

fbshipit-source-id: 48e09b876e631aa87372054e706cdb9a2b3e2eb7
2019-07-16 08:39:05 -07:00
John Knox
a097e673d8 Back out "[flipper] fix reconnecting clients"
Summary:
Original commit changeset: 1d0e6ce17c89

Backing this out until we can come up with a better way to do it.

The change was introduced so that when a device disconnects / crashes, we don't lose all plugin state, and you can still see what was on screen before the crash..

However, there are some problems with this solution, which get quite complicated. Putting them here for future reference:
* Closing an app results in the plugins staying there, and there's no way to tell it's not actually connected.
* If the app reconnects, the JS plugin doesn't get re-initialized. Even though the client plugin has been.

Reviewed By: bnelo12

Differential Revision: D16280932

fbshipit-source-id: 92585cdd0dace2012924df4106327a1e21ab9f9b
2019-07-16 08:39:05 -07:00
Pascal Hartig
e831743132 Harden lint rules
Summary: Taking another stab at adding some lint rules to make it harder to shoot yourself in the foot. Hopefully nothing too controversial. Preferring spread and rest should lead is more readable and there's no downside when using ES6. The "useless" rules are just things like renaming imports to the original name which should only happen during refactors.

Reviewed By: jknoxville

Differential Revision: D16180453

fbshipit-source-id: 1cf6851b7726c0aee953ec7cf7dd6fa0aca32253
2019-07-10 12:06:39 -07:00
Pascal Hartig
c588b650ae Prefer const wherever possible
Summary:
Non-final identifiers make code harder to understand.
This is particularly true for JavaScript where even the *type*
can change as a value gets reassigned later.

This enforces to use `const` whereever possible, but doesn't
"outlaw" `let`. Mixed destructuring is also still allowed.

Used `eslint --fix` to change all existing cases.

Reviewed By: jknoxville

Differential Revision: D16131329

fbshipit-source-id: 2eceaca7c603b71b36e005be5d135e1849f2518d
2019-07-10 03:28:25 -07:00
Pascal Hartig
662db20948 Disallow var
Summary: We're ES6 and `var`s scoping rules are weird. Let's block this.

Reviewed By: jknoxville

Differential Revision: D16131290

fbshipit-source-id: ba67d16bb8a185a4bb59a657a97b00230dbacafe
2019-07-10 03:28:25 -07:00
Daniel Büchele
af8fbf2b46 remove warning for GKs
Summary: As we are trying to clean the console from any non-important logs, I am removing the warnings about GK'd plugins. This information can be seen on the "Plugin not showing" panel.

Reviewed By: jknoxville

Differential Revision: D16148408

fbshipit-source-id: 5aeffa6e82524aacb050385ba86439654c07c741
2019-07-09 03:07:04 -07:00
Daniel Büchele
f2c8fe0205 fix reconnecting clients
Summary:
When an archived device reconnected, the clients from the architved device weren't removed and a new client was added. This caused a client to be shown multiple times after reconnecting a device.

In this diff, all clients and pluginStates from an archived device are removed once the device reconnects.

Reviewed By: passy

Differential Revision: D16075349

fbshipit-source-id: 1d0e6ce17c89bb75dd993466bca6bd64e2c63338
2019-07-02 03:11:06 -07:00
Daniel Büchele
468468a3bc Client fixes
Summary:
Event emitter was typed any. Therefore, Client extended any and thing went south.
removing the explicit any type and fixing flow errors.

Reviewed By: jknoxville

Differential Revision: D15987630

fbshipit-source-id: 9456149d46f839d9579fcc2671ab2a82935fc23a
2019-07-01 02:36:18 -07:00
Daniel Büchele
718939cd6b disconnect client instead of removing it
Summary: When an Android device disconnects, the device is marked as offline. In this diff, we want to make sure the client for the disconnected apps is not removed, but converted into a "disconnected" client. This makes sure plugins are still shown for the disconnected app.

Reviewed By: passy

Differential Revision: D15985424

fbshipit-source-id: 650ef1344b8be4411794b0344805cb75ceae4a83
2019-06-25 07:51:51 -07:00
Daniel Büchele
74d7359cbe archive disconnected Android devices
Summary:
Adding a `archive` method to Android devices, that returns a new ArchivedDevice with the same properties as the Android device. This method is called when an android device disconnects and the new ArchivedDevice is added to the devices list. When the device reconnects again, the archived device is removed.

Currently only logs are persisted. In following diffs we can:
- add support for iOS
- move the persisted pluginStates to the archived device as well

Reviewed By: passy

Differential Revision: D15942904

fbshipit-source-id: 07c5415994594abd630d0c4b458b76d1aac6ef02
2019-06-24 04:05:07 -07:00
John Knox
fdd75a123f Fix missing simulator bug
Summary:
Apple has changed the xcrun api in some cases, it seems.
Adding support for true instead of YES...

Reviewed By: danielbuechele

Differential Revision: D15940810

fbshipit-source-id: 94ba2733527e005b989fb5a62ffbab2f7a0243b9
2019-06-21 09:00:21 -07:00
Daniel Büchele
eb36e667d4 iOS CLI version mismatch detection
Summary:
Trying to detect version mismatches between the running Simulator and the version of Xcode's CLI tools.

What is done in this check:
- The running path of the running simulator is queries from `ps`
- The path of Xcode CLI tools is queried using `xcode-select -p`.
- The two paths are compared if they differ

Reviewed By: jknoxville, passy

Differential Revision: D15803238

fbshipit-source-id: 6638312505fc950ff7869fd55494984bfffb677b
2019-06-13 06:42:16 -07:00
John Knox
92edb82e13 Exit cleanly after flushing stdout
Summary:
Using `process.exit()` stops the node process without waiting for the event loop to finish, so when using async i/o, which is what happens when piped, if the output is buffered, the process can terminate before it finishes flushing the buffer.

This means you only get some of the output and the JSON is malformed.

This fixes it by calling `process.exit()` inside the flushed callback.

Reviewed By: passy

Differential Revision: D15624806

fbshipit-source-id: ea540ed5a40fb1811e5b705b190da96c8e54730d
2019-06-06 01:59:08 -07:00
Pritesh Nandgaonkar
873475405a Catch the exception thrown in xcrun
Summary: Catch the exception thrown in xcrun, which will occur for linux machines and in the cases when Xcode command line toolchain is not installed.

Reviewed By: passy

Differential Revision: D15621368

fbshipit-source-id: f3044cee6f7a4b5ba927a33003f9690c1fe31586
2019-06-05 11:41:31 -07:00
Daniel Büchele
72a39cb09d notification throttling
Summary:
Notification from plugins (especially network) could be very spammy. This diff introduces a throttle, so a plugin can only send a notification every 5 seconds. If a notification is sent earlier, it is not displayed and the counter is reset to 5 seconds from now.
In the notifications panel still all notifications are dispalyed.

Reviewed By: passy

Differential Revision: D15621427

fbshipit-source-id: ea5e3b39fdd5cdedff3fd5234e752800520a423b
2019-06-04 07:55:25 -07:00
John Knox
befaecbf7c Cleanup android client so tests exit without forcing them
Summary:
We've got some exit troubles, meaning we have to use process.exit() to stop the headless process. This isn't good because the output isn't necessarily flushed when the process forcefully exits this way.
The tests can check for this, so I've removed the forceExit flag, and fixed the case stopping them from cleanly exiting - the android adb client.

Reviewed By: passy

Differential Revision: D15602919

fbshipit-source-id: b4a9dbabf5d3c874bda6bf938e4acb7b5b7e901b
2019-06-03 10:44:08 -07:00
Pritesh Nandgaonkar
c94c2c8455 Add list-devices option to list the available devices.
Summary: This diff adds an option of `--list-devices` which will list the currently active devices on the machine. It will be later used to select a device by passing an `id` as an argument.

Reviewed By: danielbuechele

Differential Revision: D15524250

fbshipit-source-id: 7a79ceb1e431a25adcb4e05bc0cb68407c527806
2019-05-29 09:54:38 -07:00
Zoltán Gilián
d9bb1c5cf1 Add MacDevice
Summary:
Add a desktop device on MacOS similar to WindowsDevice (see D8861986).
This makes it possible to view Oculus Service Log files on MacOS too.

Reviewed By: danielbuechele

Differential Revision: D15147501

fbshipit-source-id: 8a076964e6111bf3786818b7cbd8bb7f81c1498d
2019-04-30 07:18:28 -07:00
John Knox
a4164c89a0 Fix emulator usage on linux
Summary: emulator isn't on the path in CI machines, but we already have ANDROID_HOME set so we can work out where it is.

Reviewed By: danielbuechele

Differential Revision: D15080422

fbshipit-source-id: 2c50a3de27909d2bfc82ea0210d06a0cc32357d7
2019-04-26 03:45:35 -07:00
Pritesh Nandgaonkar
25f82986ea Avoid triggering notification in headless
Summary:
There was a bug where headless version used to crash when crash reporter plugin used to get messages. So the problem was that it tried to trigger the notification in headless version, which obviously won't work.

Solves this [bug](https://our.intern.facebook.com/intern/sandcastle/log/?instance_id=88210824&step_id=773963185&step_index=5&name=Get+headless+and+run+it)
Bug:

{F155634920}

Reviewed By: jknoxville, danielbuechele

Differential Revision: D14874122

fbshipit-source-id: 2614b16665a354be7a75844a372dbea7a59d7e55
2019-04-11 04:08:59 -07:00
John Knox
bf9be74ad2 Remove RecurringError type
Summary:
This was originally introduced so we could squash multiple instances of the same error at the client side and only report one instance of them.
Now we've moved to doing the aggregation server side, which is more powerful, so this is no longer necessary. We've also seen a case of these Error objects appearing opaque making it hard to see the underlying problem, so removing it entirely.

Reviewed By: passy

Differential Revision: D14576715

fbshipit-source-id: b285dcb5249e209f9008a14ac6a2f226f3aa82d7
2019-03-22 06:52:05 -07:00
Pascal Hartig
3141b954bf Run prettier fix
Summary: Should also fix the build.

Reviewed By: jknoxville

Differential Revision: D14477777

fbshipit-source-id: 01fcfb2321c9b7a12acdf079473d91b6805d4dda
2019-03-15 05:13:30 -07:00
John Knox
fac138ded3 Use full emulator path when running it
Summary: This is required on linux or it isn't found. It's already done elsewhere this way.

Reviewed By: passy

Differential Revision: D14303606

fbshipit-source-id: 8b3fca776d43076cdc2f814de19b0b381350dcc9
2019-03-05 10:26:49 -08:00
Pritesh Nandgaonkar
c098269533 Added telemetry for import and export
Summary: Adding telemetry for import and export feature

Reviewed By: jknoxville

Differential Revision: D14267533

fbshipit-source-id: 1a5e041d0dc8c59c325e7d80dc83f6135f479161
2019-03-04 05:08:19 -08:00
Daniel Büchele
79124891a9 url handler downloads
Summary:
Adding support for downloading archived Flipper data using a URL handler.
A URL looks like `flipper://import/?url=` and will download the file specified in the url param. While downloading the file, a spinner is shown in the app's titlebar.

Reviewed By: jknoxville

Differential Revision: D14262763

fbshipit-source-id: 6538fc78c07a48cef7b71b3f7bdbcb712d054593
2019-03-01 04:30:22 -08:00
Daniel Büchele
ff0de8caaa user reducer
Reviewed By: jknoxville

Differential Revision: D14224403

fbshipit-source-id: 8341dd8af03148c4b1f648641bda522804acb22d
2019-02-28 07:28:25 -08:00
John Knox
99bb43fe32 Move adb client creation into it's own file
Summary: Allows the created client to be reused.

Reviewed By: passy

Differential Revision: D14241449

fbshipit-source-id: 6bbb64eeb708dce9c24e4581e8480d19af998e47
2019-02-27 05:42:24 -08:00
John Knox
6bdbb4f763 Wait 2s before checking for matching devices for connected clients
Summary:
Currently when a client connects, if there's no matching device we know of, it emits an error.

The problem is that there's a race between clients connecting and devices being detected, if the client connects first, then we'll emit this error, even though the device is displayed shortly afterwards.

Fixing this by waiting 2 seconds after a client connects, and then if it's still connected, checking for a matching device. This should be enough time to make this error more reliable.

Reviewed By: passy

Differential Revision: D14126315

fbshipit-source-id: c81b2c6d9a6e0639a656d1a4d7a8f999f715bfbf
2019-02-19 03:46:55 -08:00
John Knox
e33e2d4d06 Unify Logger interface usage
Summary:
Unified all imports of Logger. Some were called LogManager before.
Now the fb-stub and the fb variants use the same interface.
Constructor of Logger is no longer exposed so it can't be initialized twice, unless in the case you're explicitly using the fb variant, which has extra functionality.

Reviewed By: danielbuechele

Differential Revision: D14083929

fbshipit-source-id: 9b61a06e1264d5f142b5a9188465c99deaf18193
2019-02-14 09:23:41 -08:00
Pritesh Nandgaonkar
029377a849 Change the export file extension type
Summary: This diff imports and exports data in a `.flipper` file extension. This diff also adds the support to open flipper app by double clicking on the `.flipper` file.

Reviewed By: danielbuechele

Differential Revision: D14042846

fbshipit-source-id: 17e6b55bf2796d9abdf985411fce799600f7792b
2019-02-12 06:48:06 -08:00
John Knox
ce5f739d81 Add sdkVersion to ping events
Summary: So we can see usage of old sdks.

Reviewed By: passy

Differential Revision: D14022623

fbshipit-source-id: 22f0681cbf4374e2cf3256e1049d154789e1959e
2019-02-11 14:06:56 -08:00
Daniel Büchele
c98047bbcf support DEVICE_SET_PATH env var
Summary: support for DEVICE_SET_PATH as used by 1W

Reviewed By: passy

Differential Revision: D14007285

fbshipit-source-id: 79f40355020c67efcb439f470af2fc35ec7fea7e
2019-02-11 02:57:19 -08:00