Commit Graph

2279 Commits

Author SHA1 Message Date
Pascal Hartig
04e12a28a0 Refactor PluginInstaller component
Summary:
- Made side-effecting elements injectable via props.
- Added default props so usage doesn't change.
- Added testing-library/react snapshot test that waits for test data to appear in the list.

One slightly annoying part here is that this now that we have an `autoHeight` prop which is only useful for testing it as it prevents a problem with a height-detection in the test runner. We could even change the default as it doesn't affect the display in prod, but this still feels slightly cleaner.

Reviewed By: jknoxville

Differential Revision: D17808510

fbshipit-source-id: 2ae70886c58282d5bdc98ba4215e8248e4c7f159
2019-10-08 08:45:06 -07:00
Pascal Hartig
3730c523ec Add explicit StubLogger option for tests
Summary:
A bit ugly to have test-only code in prod logic,
but we don't need any of the logger logic in tests
and by pulling out the `StubLogger`, we can avoid
loading Electron during tests.

Reviewed By: jknoxville

Differential Revision: D17808479

fbshipit-source-id: d2295d7bbca2f09c3f23389ad9443648757d8d03
2019-10-08 08:45:05 -07:00
Pascal Hartig
d86b8caa2d Add react testing library
Summary:
The existing rendering library doesn't work properly
with hooks. This one provides some pretty powerful
DOM-based testing APIs like waiting for elements to
appear and clicking, which we can use in various
areas.

Reviewed By: jknoxville

Differential Revision: D17787423

fbshipit-source-id: 9eb12f34ae2bc76b679fd28ee25262ce01a5e772
2019-10-08 08:45:05 -07:00
John Knox
13ac64e0b9 Sort icons
Summary: You can do this in VSCode by selecting the lines, Cmd-Shift-P, "Sort Lines Ascending".

Reviewed By: passy

Differential Revision: D17710137

fbshipit-source-id: 3cef628b24dd86d4e307bd30761049c30cbc8f68
2019-10-08 06:22:20 -07:00
s1rius
86eb24b02c Work with custom SharedPreferences implementation (#571)
Summary:
see https://github.com/facebook/flipper/issues/450
If we want to control a custom SharedPreferences, we can create a Class as SharedPreferencesDescriptor's Subclass, override the getSharedPreferences() function to return a custom SharedPreferences instance.

## Changelog
add getSharedPreferences() function in SharedPreferencesDescriptor Class
Pull Request resolved: https://github.com/facebook/flipper/pull/571

Test Plan: No

Reviewed By: jknoxville

Differential Revision: D17738675

Pulled By: passy

fbshipit-source-id: d227e7d6461194f7a01ae7b2ba53434dd71fc0d2
2019-10-08 01:51:21 -07:00
Pascal Hartig
8f719b17e3 Add instrumentation, fix typo
Summary:
- plugns -> plugins
- Report platform failures from second invocation.

Reviewed By: jknoxville

Differential Revision: D17787179

fbshipit-source-id: 041325f572dd839bd268612269f3774518a409b2
2019-10-08 00:23:29 -07:00
Pascal Hartig
4d1e7dc80f Add comment about error handling
Summary:
Added some notes to T55169042.

Also limited the acceptable result types.

Reviewed By: jknoxville

Differential Revision: D17787130

fbshipit-source-id: 19cefdde5ab195080281e9f2e26f5a236dd59629
2019-10-08 00:23:29 -07:00
Pascal Hartig
ca8df6d680 Remove "no file" error dialog
Summary:
This is a programming error, not something that users
should ever be exposed to. This logs an error instead
and just doesn't show anything.

The big benefit is that the component no longer
needs to deal with `file` potentially being undefined.

Reviewed By: jknoxville

Differential Revision: D17786913

fbshipit-source-id: 32a357381e64cd9237ad4a0112c346d7121634ef
2019-10-08 00:23:28 -07:00
Pascal Hartig
36abf6e38c Add tests for pending dialog
Summary:
The benefits of having things nicely encapsulated.
Not super sophisticated, but better than nothing.

Reviewed By: jknoxville

Differential Revision: D17786832

fbshipit-source-id: 0b321e8a4e56188b0eab86515bd777ed3e3e8cb7
2019-10-08 00:23:28 -07:00
Pascal Hartig
03dd7a5981 Add types for react test renderer
Summary: Per title

Reviewed By: jknoxville

Differential Revision: D17786831

fbshipit-source-id: 4db054dcbe239653094a87b16f14c08fe0e24789
2019-10-08 00:23:28 -07:00
Pascal Hartig
5f5c80bee5 Factor out pending sheet as separate component
Summary: It's copied apart from the status message, so let's centralise it.

Reviewed By: jknoxville

Differential Revision: D17786691

fbshipit-source-id: d5f7a5dccf56b96a58a9c1fc61652d7f9d1786d3
2019-10-08 00:23:27 -07:00
Pascal Hartig
8346cedc77 Rename ShareSheet
Summary:
From the name it's not clear that this is actually a fork off the "Share File"
variant of this. I'm planning to bring the two together as they share most of
the code, but for now this makes it a bit clearer.

Reviewed By: jknoxville

Differential Revision: D17786570

fbshipit-source-id: 8def3301ee4f79741391dc7e0b6a33a5fd7aa2c3
2019-10-08 00:23:27 -07:00
Pascal Hartig
b6df1d1d6d HIG for export share sheet
Summary:
Following https://developer.apple.com/design/human-interface-guidelines/macos/buttons/push-buttons/,
the primary button should be highlighted and the affirmative action be to the right.

Clicked a few times on the wrong one myself.

Reviewed By: priteshrnandgaonkar

Differential Revision: D17762516

fbshipit-source-id: 6be35cfde26ca10142c2c98df30672c0f739c17e
2019-10-08 00:23:27 -07:00
Pascal Hartig
f110ed2db7 Show export numbers
Summary:
As discussed on an earlier diff, the percentage alone
is a confusing indicator as the number of items to be
serialised can grow over time, causing the percentage
to go down.

This shows the raw numbers in addition to the percentage.

Reviewed By: priteshrnandgaonkar

Differential Revision: D17762477

fbshipit-source-id: 8911b520b2ea74542bc64e6a6662bed7d4f81860
2019-10-08 00:23:27 -07:00
Pascal Hartig
1a56371f3f HIG for cancelation buttons
Summary:
- Make sure it's "cancel" in all cases.
- Move cancel buttons to the left.
- Rename the callback to clarify purpose.

Reviewed By: jknoxville

Differential Revision: D17762466

fbshipit-source-id: 0f6a9d83ff0cab139f926fb5a512be4618471ee8
2019-10-08 00:23:26 -07:00
Pascal Hartig
a41625e176 Refactor ShareSheetExportFile
Summary:
Wanted to make a small change and found it a bit difficult to
follow, so I tried to make it a bit more TypeScript-y.

Logic should be unchanged.

Reviewed By: priteshrnandgaonkar

Differential Revision: D17762346

fbshipit-source-id: d0d8b2e25b532b7b10079907d6da86bdd878a75c
2019-10-08 00:23:26 -07:00
Pritesh Nandgaonkar
7f2f2febcf Make MobileConfig plugin exportable
Summary: As per title, this diff makes the Mobile config plugin exportable. This involves moving the important property from `State` to `PersistedState`. Also had to implement the `exportPersistedState` function to fetch the experiments information for the Universes, configs and gatekeeper information.

Reviewed By: danielbuechele

Differential Revision: D17633986

fbshipit-source-id: 604225ba47112620bee0a6c704416b3ac350de9c
2019-10-07 09:57:31 -07:00
John Knox
44ab23557e Disable settings "Apply" button when no changes have been made
Summary: It's a bit nicer to be able to see if there are any changes made, and save restarting flipper when nothing has changed.

Reviewed By: passy

Differential Revision: D17738036

fbshipit-source-id: 3d7cdc5be1bf948094c3df54439625e5052a9a2f
2019-10-07 08:51:07 -07:00
John Knox
8e5b69164a Grey-out disabled buttons
Summary:
For "primary" and "danger" buttons, you previously couldn't see any difference between disabled and enabled ones.
This fixes that by greying them out when disabled.

Reviewed By: passy

Differential Revision: D17738031

fbshipit-source-id: 82e16b8881f3d404aafae8a7837151090bb6bbee
2019-10-07 08:51:06 -07:00
John Knox
b50aef8f15 Restart after changing settings
Summary:
Gets flipper to restart when settings are updated.

In theory most settings should not need this, but the current only one does (android home) because the path is set at startup only, and this modifies the input to it.
It would be a bit awkward to modify the path more than once, but doable.

Reviewed By: passy

Differential Revision: D17737582

fbshipit-source-id: d4669dcc7acc95469f15783fc6a5ba6794750234
2019-10-07 08:51:06 -07:00
John Knox
729e74f2fc Switch to using settings for android sdk location
Summary: A settings screen has been added where android home can be set. This changes the downstream code to use this value rather than the `env.PATH` variable.

Reviewed By: passy

Differential Revision: D17713288

fbshipit-source-id: 51551652c9c2f468e1117c18785123348e4b4576
2019-10-07 08:51:06 -07:00
John Knox
85c0ec0d13 Persist settings in ${XDG_CONFIG_HOME}/flipper/settings
Summary:
Moves the settings state from electron local storage into a json file in the users configured config location.
Unless modified by the user, this will usually be `~/.config/flipper/settings.json`

Settings will now persist across re-installs, and can now be easily inspected and backed up.

Reviewed By: passy

Differential Revision: D17712687

fbshipit-source-id: 1e778063e41d0a1a86145817b9797bf0458121da
2019-10-07 08:51:05 -07:00
John Knox
7775e82851 Add JsonFileStorage for redux-persist
Summary:
This will be used for the settings file.
It results in normal JSON, as opposed to json where the value of every key is an escaped string.

Reviewed By: passy

Differential Revision: D17712688

fbshipit-source-id: d37ed93707c7352719fa72a05bf51953611f52c0
2019-10-07 08:51:05 -07:00
John Knox
eb64ff0832 Add settings UI
Summary:
Adds a simple UI for editing settings, a reducer and persistance config for the data.
These values aren't yet used for anything.

Reviewed By: passy

Differential Revision: D17684490

fbshipit-source-id: e76ac43ffa17d3606e59f4a1ccb940e8d9fbd9e8
2019-10-07 08:51:05 -07:00
John Knox
8c15547597 Add explicit dismiss button to feedback prompt
Summary:
You can already click the star icon in the title bar to dismiss, but according to feedback this isn't obvious: https://our.intern.facebook.com/intern/itsr?start_date=1561849200&end_date=1570402800&tab=4&all_tools=true

So adding an explicit dismiss button.

Reviewed By: passy

Differential Revision: D17788570

fbshipit-source-id: b0995e5abdaafc5bd6f93edb27dad703c81b8f2b
2019-10-07 08:37:15 -07:00
Arnaud Frugier
57e8f8e235 Updating documentation for new version of database plugin
Summary: ^^

Reviewed By: jknoxville

Differential Revision: D17770002

fbshipit-source-id: f2aa1a0fbdea0f2f794261f77dfe2557def2aef0
2019-10-07 08:19:41 -07:00
Pascal Hartig
e074898d46 Basic error handling
Summary:
Adds some very basic error handling. It's not great
because once you hit an error, you're basically stuck
and there's no retry yet, but it's still strictly
an improvement over being stuck with the looping
spinner, so I think it's worth shipping it in this state.

Reviewed By: jknoxville

Differential Revision: D17763467

fbshipit-source-id: b5b7996554dd1dce682fba87f96e3806432a475a
2019-10-07 08:12:10 -07:00
Pritesh Nandgaonkar
d310027d88 Fix toggle switch bug when Flipper's width is small
Summary:
Bug:

{F214979227}

Reviewed By: passy

Differential Revision: D17763781

fbshipit-source-id: 21890caee796ac0df6f39e618a762c44955dd647
2019-10-07 07:43:58 -07:00
Pascal Hartig
ff76b17a5b Add metrics
Summary:
Add some usage and failure rate stats to the PluginInstaller. Small
typo fix and added a helper to the metrics utils to make simple
usage tracking a little more intuitive.

Reviewed By: jknoxville

Differential Revision: D17760511

fbshipit-source-id: 957031d428f3124435925415619b1555a0c2dc2a
2019-10-04 08:26:26 -07:00
Pascal Hartig
a3f7e6aa59 Make documentation xplat aware (#572)
Summary:
Update the docs to include Windows and Linux.
Pull Request resolved: https://github.com/facebook/flipper/pull/572

Test Plan: eyes

Reviewed By: jknoxville

Differential Revision: D17738803

Pulled By: passy

fbshipit-source-id: 8e556fb6b3e57de6f3334286e83a59a48dbdd982
2019-10-04 08:17:46 -07:00
LAgagggggg
0ba47d9a71 Fix crash of iOS FlipperNetworkPlugin (#563)
Summary:
Flipper's network plugin may cause crash on a frequency of about one time per 1~2 days(I think it depends on how many network request we send).
![IMG_3095](https://user-images.githubusercontent.com/24563710/65739973-cc540080-e119-11e9-9e6e-e4a925ecc63c.JPG)

  I assume the crash is caused by part of the code of HTTPParser is not thread-safe, and invoke it asynchronously may cause double-free crash. So I manually ask for HTTPBody synchronously, make the HTTPParser parse the request and cache them in advance, before any possible asynchronous invoking.

## Changelog
  Fix potential crash cause by network plugin.
Pull Request resolved: https://github.com/facebook/flipper/pull/563

Test Plan:
1. Run our App with Flipper integrated
2. Make sure FlipperNetworkPlugin is active
3. It may take days to reproduce the crash

Reviewed By: passy

Differential Revision: D17739327

Pulled By: priteshrnandgaonkar

fbshipit-source-id: e814145c346bd2da1d2f5f87b6a2f7e200f0bf2d
2019-10-04 05:38:05 -07:00
Pritesh Nandgaonkar
6e6873a4f6 Pass idler and statusupdate callback as an argument to the export persisted state function
Summary: This diff passes the idler and statusUpdate arguments to the export persisted state, as it is being used in the MobileConfig's export function

Reviewed By: passy

Differential Revision: D17715815

fbshipit-source-id: 98a0f0f5950254de2139c4aaa52cb73401c86c3c
2019-10-04 05:33:44 -07:00
Pascal Hartig
485898f5c7 Set key for SelectPluginSheet row
Summary: Getting a React warning because it previously didn't.

Reviewed By: jknoxville

Differential Revision: D17736486

fbshipit-source-id: 422e023abe0501804d5b447e365ff014969d6286
2019-10-03 09:14:26 -07:00
Pascal Hartig
22f8d26c33 Use explicit cast in plugin.tsx
Summary:
Marginally safer than ignoring the entire line, which
makes type-checking weaker on subsequent references.

Reviewed By: jknoxville

Differential Revision: D17736479

fbshipit-source-id: 13afcb5f08e53016b7a6cdc7ea135e726586a67b
2019-10-03 08:47:26 -07:00
Pascal Hartig
83ad3b956a Upgrade website dependencies
Summary:
Got a warning during `yarn start` that the caniuse database
was out of date so I updated it along with the rest.

allow-large-files

Reviewed By: jknoxville

Differential Revision: D17715099

fbshipit-source-id: 8ff705afbaa0f2be272f85e2996d8e32c1f6ab05
2019-10-03 07:47:34 -07:00
John Knox
957427d740 Fix startup race condition
Summary:
Currently Flipper.init is called as soon as the script loads.
However, if the store takes a bit longer than usual to get rehydrated, then this init call can get called before it has been set.

Fixing it by using a specific event instead of the generic `onload`.

Reviewed By: passy

Differential Revision: D17711399

fbshipit-source-id: fcaf9e5943bfd15359038b8e3722f11d7e06379b
2019-10-03 07:17:49 -07:00
Bartol Karuza
b3a98dc5e5 chore(docs): typo (#566)
Summary:
## Changelog
Pull Request resolved: https://github.com/facebook/flipper/pull/566

Differential Revision: D17737731

Pulled By: passy

fbshipit-source-id: f2aac8d7b256b3d2849942c42581046944bc11c9
2019-10-03 06:57:26 -07:00
Pascal Hartig
975b52d26b Build with static libc++
Summary:
This avoids having to perform gymnastics like in
https://github.com/facebook/react-native/pull/26697

Reviewed By: jknoxville

Differential Revision: D17735954

fbshipit-source-id: 507548aab89309beeb228b104a24af8acd10ce9a
2019-10-03 04:39:20 -07:00
Hilal Alsibai
447e918607 Make copying an element list out its attributes instead of a useless id
Summary: When copying elements from the layout inspector its much more useful to copy all associated attributes rather than just the name and an implementation detail id.

Reviewed By: jknoxville

Differential Revision: D17727520

fbshipit-source-id: 8ac1828059cc10f7f9faf0bdc72eb3d57c881121
2019-10-03 03:40:51 -07:00
Pascal Hartig
9bce894b71 Add publishing/installing docs
Summary:
Adding publishing and installation procedure docs to
our tutorial to round things off.

Reviewed By: jknoxville

Differential Revision: D17711800

fbshipit-source-id: 57c848c559208eb2a0ca790a72bcd493730baf16
2019-10-02 08:56:38 -07:00
Pascal Hartig
1de1bbaf8a Prepare for TypeScript 3.7
Summary:
These are the only four errors currently happening when upgrading to the 3.7 beta.
Luckily, these are all forwards-compatible changes.

Reviewed By: jknoxville

Differential Revision: D17711797

fbshipit-source-id: 429036e90300c81848cc3252b67bb89871ff2e32
2019-10-02 08:35:39 -07:00
Kfir Schindelhaim
52976f1ee3 Introduce CKMountable protocol
Summary:
- Introduce new base protocol `CKMountable`
  - Contains Layout & Mount methods that have been extracted from `CKComponent`
  - This will allows us to introduce a new lighter version of `CKComponent`, which doesn't rely on Scope/State/Controllers/etc
- Refactor `CKComponentLayout` to work with `CKMountable` instead of `CKComponent`, which will allows us to interop between `CKComponent` and a new type of components.
- Refactor the codebase to support this change

Reviewed By: kevin0571

Differential Revision: D17668253

fbshipit-source-id: 13db5ff4acb37b338e291ca2dd7d67cd25dbc6d2
2019-10-02 08:20:00 -07:00
Pritesh Nandgaonkar
9bad9ba976 Add status messages for the Support Form
Summary: Shows status messages for the Support Form

Reviewed By: passy

Differential Revision: D17601944

fbshipit-source-id: a2a8ad392dfbaf467625eb809020d687d066da57
2019-10-02 05:48:03 -07:00
Pritesh Nandgaonkar
05328167c6 Add support for status bar
Summary:
This diff adds a status bar, which can be used to show the status messages, for example for Litho Support Form.
The logic for the status bar is as follows:

It maintains the array of the messages. At any point it shows the last pushed message. It will keep showing that message until it is being removed, once removed it will show second last message. The messages will be removed as and when its corresponding task/Promise is fulfilled.

Reviewed By: danielbuechele

Differential Revision: D17551495

fbshipit-source-id: 96b2f401599b9ee8a472607e6a2f027e63b3b807
2019-10-02 05:48:03 -07:00
Mateo Silguero
4ec8ffcf53 Update images-plugin.md (#562)
Summary:
the name of the plugin into documentation is not correct.

## Changelog

chore: plugin-name
Pull Request resolved: https://github.com/facebook/flipper/pull/562

Differential Revision: D17709629

Pulled By: passy

fbshipit-source-id: ce6233ce9cac67c42b0501bd969c46114d74365a
2019-10-02 01:51:45 -07:00
Mateo Silguero
4c3028bd91 Update databases-plugin.md (#564)
Summary:
## Changelog
Pull Request resolved: https://github.com/facebook/flipper/pull/564

Differential Revision: D17709625

Pulled By: passy

fbshipit-source-id: fe62f8958872893b04e12527ef338b6140a82a68
2019-10-02 01:46:41 -07:00
Pascal Hartig
b80e18762e Bump some dependencies manually to avoid security alerts
Reviewed By: jknoxville

Differential Revision: D17666660

fbshipit-source-id: 114379d1b8edb833417cf72253ddb18a3be593c6
2019-10-01 12:24:17 -07:00
Pascal Hartig
c6d5b8ccb5 Fix screen recording on Android
Summary:
There were two issues with the previous approach:

1) We didn't block the shell process, so we would immediately
    start pulling the video from the device as soon as we **started**
    recording it. This meant, you'd usually get the previous recording
    or just an empty file.
2) The stop side doesn't know when it's actually safe to start displaying
    the video as pulling takes time. So we need access to the process
    promise there.

Reviewed By: jknoxville

Differential Revision: D17687827

fbshipit-source-id: 6ad5da52442f1888dd491b2a4c7f7a6b5a7885dd
2019-10-01 11:23:30 -07:00
Pascal Hartig
25cdca1d6f Explicit cast instead of ts-ignore
Summary: Slightly safer.

Reviewed By: jknoxville

Differential Revision: D17686947

fbshipit-source-id: 2c478707e20a1475427be4a652283960e4515cf9
2019-10-01 08:48:11 -07:00
John Knox
be72debf99 Improve headless test running script
Summary: Now emits a warning if api version doesn't match expected one.

Reviewed By: cekkaewnumchai

Differential Revision: D17685261

fbshipit-source-id: 2a01d64e2e160d411d7a58125b5bb45437476f8f
2019-10-01 07:47:04 -07:00