Commit Graph

917 Commits

Author SHA1 Message Date
Michel Weststrate
0d7864da4e Hide dark mode setting in OSS version
Summary: See https://github.com/facebook/flipper/issues/1755, we did hide the Sandy option in OSS, but not the dark mode option. I intend to enable & switch to Sandy in OSS after the holidays, to make it easier to deal with any possible fallout.

Reviewed By: nikoant

Differential Revision: D25460906

fbshipit-source-id: b80d751f2ff435775d08d17effb81e56db738d4d
2020-12-10 07:03:36 -08:00
Michel Weststrate
455b8c9316 Fix scroll into view and selection highlighting in Pluginlist
Summary: Noticed when testing `selectClient` logic, that if plugin selection is changed programmatically rather than interactively, the selection isn't updated, and the scrolling wasn't working nicely either (since `active` collided with a non-public Ant field it always got overriden).

Reviewed By: nikoant

Differential Revision: D25460681

fbshipit-source-id: 1854ee8b9e6b2a2580f2143cd834ac1eacd296a9
2020-12-10 05:34:25 -08:00
Michel Weststrate
52862f6083 Introduce isPluginAvailable and selectPlugin
Summary:
Introduced API to replace the deprecated `selectPlugin` in Sandy.

The API can be used to navigate from `device plugin -> device plugin`, or` client plugin -> device / client plugin`

Introduced `isPluginAvailable` as well, so that the user interaction an be fine tuned in case the plugin is not disabled.

Reviewed By: jknoxville

Differential Revision: D25422370

fbshipit-source-id: c6c603f1c68e6291280b3d0883e474448754ded1
2020-12-09 14:36:18 -08:00
Michel Weststrate
dc328ef3fd Fix checkbox not toggling
Summary: In the Sandy welcome screen, the `Don't show this dialog again` checkbox couldn't not be toggled back on after it was toggled off.

Reviewed By: passy

Differential Revision: D25421721

fbshipit-source-id: c58170bb9442d1114d1197655bc58f61e47da880
2020-12-09 05:33:08 -08:00
Michel Weststrate
2222a2b71c Add option to wipe local storage
Summary: This diff adds an option to wipe local storage to the settings dialog, to reset all preferences, table column widths, changelog and Nux state, etc. etc. in one go. This is primarily an self-fixing mechanism in case we mess up in the future, but useful during development / testing as well.

Reviewed By: passy

Differential Revision: D25421722

fbshipit-source-id: 3b69653b2142a7178ef83e01d35309f3a971e2cf
2020-12-09 05:33:08 -08:00
Michel Weststrate
4832d6275b Fix activatePlugin measurements not completing
Summary:
`activatePlugin` events where not recorded correctly for Sandy plugins. Although the starting measuerments is fired the `connections` reducer, the completing event fires from `PluginContainer`. Since this is done as part of a ref-update (!!), see [here](https://www.internalfb.com/intern/diffusion/FBS/browse/master/xplat/sonar/desktop/app/src/PluginContainer.tsx?commit=65a625ea9941&lines=155), and the ref to the corresponding element is not set for Sandy plugins, the event was never marked as completed.
Fixed this by making it part of the `activate` life-cycle event of Sandy plugins.

Reviewed By: passy

Differential Revision: D25421537

fbshipit-source-id: 5cbfeb91cc12e4520fa271bab24034094d7ddb39
2020-12-09 05:33:08 -08:00
Michel Weststrate
4aff8c1bcf Introduce useLogger hook
Summary: In the Flipper chrome there is a lot of `logger={logger}` prop drilling. Let's not do that anymore in the future by using a proper hook, which is exposed from `flipper-plugin`.

Reviewed By: passy

Differential Revision: D25421304

fbshipit-source-id: 01ec8563c67f7e2fac359c2f8216eba722bff8d9
2020-12-09 05:33:08 -08:00
Anton Nikolaev
56361debb2 Differentiate insider builds from stable builds
Summary: Each build will have an embedded file specifying the target release channel for the build. This allows us to do some customisations, e.g. show "Insiders" label in the title and enable Sandy by default for insiders builds.

Reviewed By: jknoxville

Differential Revision: D25399045

fbshipit-source-id: 8e26d0754d0713ced823f86b30b54491d55b4d97
2020-12-08 12:38:02 -08:00
Michel Weststrate
244b6dc1be Fix Messenger not showing up in Sandy
Summary: Metro and Mac device were always hidden in Sandy, but they should only be hidden if they don't have underlying Clients. Fixes https://fb.workplace.com/groups/748354712423318/permalink/775342569724532/

Reviewed By: nikoant

Differential Revision: D25369492

fbshipit-source-id: fdc25c3646d8339ae029425b4c45d8631bbee762
2020-12-07 09:45:26 -08:00
Michel Weststrate
fa00575dec Fix unexpected end of JSON error
Summary:
This is the 6th most common error in our logging, and I just run into it after upgrading XCode. It happens when idb doesn't return any devices.

(because `''.split('\n')` results in `['']` not `[]`)

Reviewed By: jknoxville

Differential Revision: D25368759

fbshipit-source-id: 44b0e3a5dc4cf06ecdf2dff4a5692943e60d4b1d
2020-12-07 09:45:26 -08:00
Michel Weststrate
698df77553 Expose GK api on client
Summary: Make sure that GKs can be used in pure sandy plugins.

Reviewed By: jknoxville

Differential Revision: D25368358

fbshipit-source-id: c7c6aa4ecf0443cb3b5d90e22e8aca9a73a69389
2020-12-07 09:45:25 -08:00
Anton Nikolaev
2a091e682d Save launcher settings to the correct folder
Summary: Rust default configuration path changed recently which broke transferring of settings between flipper desktop and launcher. This diff fixes it.

Reviewed By: passy

Differential Revision: D25334963

fbshipit-source-id: d6ebea9e5cfa68858a9fc2a51102815d646ab319
2020-12-04 10:22:21 -08:00
Anton Nikolaev
139c6674f3 Update Flipper version on restart from settings
Summary: Delegate to launcher on restart after settings changed. This is required to update Flipper after changing release channel.

Reviewed By: passy

Differential Revision: D25331466

fbshipit-source-id: d98e272971b5782d3b9c46e6ba62d883ebbb804c
2020-12-04 08:10:54 -08:00
Anton Nikolaev
a7573139a2 Setting to choose release channel
Summary: Add possibility to choose release channel in Flipper Settings

Reviewed By: passy

Differential Revision: D25300775

fbshipit-source-id: 55fc86f0e12b9f3a4603bb40b038f5c0e5f30b3b
2020-12-03 07:23:08 -08:00
Michel Weststrate
dd7c2ab96d Fix plugin meta data
Summary:
See previous diff, if the plugin `id` on the class definition mismatches with the `package.json`, the navigation in Sandy will use the wrong id (from the meta data) causing the plugin not to open.

Since the `id` exposed on the class is the one that is used to setup the connect on the client, updated the ids in the `package.json` which have afaik no further meaning.

Pinging nikoant to verify that assumption. I can imagine this might impact historical data / plugin distribution?

Reviewed By: passy, nikoant

Differential Revision: D25302542

fbshipit-source-id: 43fe1667604eb7a28f6f9b7d260bc2a1e6e82dd3
2020-12-03 07:20:40 -08:00
Michel Weststrate
d8832aa78e Fix AdsManager plugin not loading
Summary:
FluxStores plugin of AdsManager didn't open on Sandy. The underlying reason is that in Sandy the list was based on the plugin id's as exposed in the `package.json`, while in the old left sidebar it was based on the `id` stored on the Plugin class. And apparently they can differ (will fix that in the next diff)

We can release an update of this plugin after it landed

Reviewed By: passy

Differential Revision: D25302357

fbshipit-source-id: 874aab263fad6a83f63edc4a8f7fa7ceceaef70f
2020-12-03 04:51:17 -08:00
Michel Weststrate
84c6e05b8a Wire up tracking to Sandy Chrome
Summary: Wired up tracking to all chrome sections and some import UI elements

Reviewed By: jknoxville

Differential Revision: D25219089

fbshipit-source-id: c75bed91894609dafc5fcc6423a5228211fb92d8
2020-12-03 04:15:45 -08:00
Michel Weststrate
dd6f39c2b3 Wire up Tracking to different ant.design elements
Summary:
This wires up tracking directly to the ANT component library for the following components:

1. `Button`
2. `Collapse.Panel`
3. `Tabs`

Other less commonly used elements can be connected in the future if needed.
I played a bit with different patterns, but in testing the patch-package patching give the most reliable results. Alternatives considered:

1. Expect users to explicitly wrap there components, e.g. `<Tracked><Button>Hi</Button></Tracked>`
    1. Didn't implement this because it would be very common to forget, and at the moment you want to make some analysis you'll discover there is no interesting data available. I think for tracking we want to have opt-out rather than opt-in
    2. The additional wrapping can cause some subtile layout issues due to static field inspection / forwarded refs (e.g. Ant often has an assumption that relevant children types are _directly_ nested under their parent element. For examle `<Tooltip><Tracked><Button>` does not work as expected
2. Expose our own `Button` / `Collapse` / `Tabs` that applies `Tracked` to an underlying Ant component.
    1. also suffers from 1.b.
    2. It is gonna be quite confusing for other devs that some elements would need to be imported from `flipper-plugin`, ant some from `antd`, and that this is likely to change over time. We could lint against it, but it will be still suboptimal

Reviewed By: jknoxville

Differential Revision: D25196321

fbshipit-source-id: b559356498c3191a283062a88daacb354b0f79f4
2020-12-03 04:15:45 -08:00
Michel Weststrate
3394f85fc7 Wire up usage tracking to Flipper core
Summary: Connect usage tracking to the Flipper core, individual elements will be wrapped in a next diff

Reviewed By: passy

Differential Revision: D25196284

fbshipit-source-id: 103e1d21d2f23fbbc21975fa85082811f6f53348
2020-12-03 04:15:44 -08:00
Michel Weststrate
b885ff3b9e Tracking interactions
Summary:
Set up basic primitives for user interaction tracking. I hope the docs and unit tests in this diff are self explanatory :)

In upcoming diffs:
* Wire up to scuba events
* Annotate all important parts of Flipper Chrome
* Investigate if we can wrap important interactions of ANT by default

Reviewed By: jknoxville

Differential Revision: D25120234

fbshipit-source-id: 9849d565d7be27e498cc2b4db33e7d6e6938ee06
2020-12-03 04:15:44 -08:00
Chaiwat Ekkaewnumchai
83777c9bc5 Add Blocklist Setting to Unhide Plugins And Categories
Summary: per title

Reviewed By: mweststrate

Differential Revision: D25216543

fbshipit-source-id: f57842a950caf356dc411200579ee94a8c398939
2020-11-30 02:12:45 -08:00
Chaiwat Ekkaewnumchai
21ad9ad433 Rename Notification Blacklist to Blocklist
Summary: per title

Reviewed By: mweststrate

Differential Revision: D25021786

fbshipit-source-id: 444e0959b5a4157171dad5c81b102abf105a99ed
2020-11-30 02:12:45 -08:00
Chaiwat Ekkaewnumchai
f68cef3046 Add Extra Action for Each Notification
Summary: Previously, notifications can be hidden by category or plugin. This diff ports that functionality to Sandy

Reviewed By: mweststrate

Differential Revision: D25021697

fbshipit-source-id: 28bdd1c169fcef4db79c2452db8cbb5f0bce6312
2020-11-30 02:12:45 -08:00
Chaiwat Ekkaewnumchai
04de290b27 Add Action Functionality
Summary: This diffs add removing all action and simple search (search by matching title and/or detail)

Reviewed By: mweststrate

Differential Revision: D24992828

fbshipit-source-id: 84e59e8de5a6cfd4c6cb4097350dbb87e17271db
2020-11-30 02:12:45 -08:00
John Knox
0f51ae4b82 Fix ITSR repeated requests bug
Summary:
I converted the rating button to a functional component, and mistakenly moved the effect in the constructor into the render function.

This puts it into an effect with no dependencies so it should only happen once, instead of every render.

Reviewed By: mweststrate

Differential Revision: D25185514

fbshipit-source-id: 48203b01bbd85f3b9ed4dbbb416768c0d5524f70
2020-11-26 04:34:59 -08:00
Michel Weststrate
8025c49768 Upgrade to TypeScript 4.1
Summary:
allow-large-files

Upgrade to TypeScript 4.1

Reviewed By: nikoant

Differential Revision: D25122073

fbshipit-source-id: 7d2bc6f97595c825c9527b0c6ecab07698d5f981
2020-11-26 04:22:05 -08:00
Michel Weststrate
58a53bd739 Increase device detection timeout
Summary:
Attempt to fix https://fb.workplace.com/groups/1489943347777350/permalink/3388159547955711/

Overview of failures: https://www.internalfb.com/intern/daiquery/workspace/612628209459766/385682425880686/

Seems to have regressed since introducing D24858332 (9b4e7e873c), although only a few users are significantly impact, and beyond that it seems mostly one-off errors, which might indicate that the timing is a bit too tight.

Reviewed By: nikoant

Differential Revision: D25121853

fbshipit-source-id: a1b08a1b433c3db1aca3c1e6c6cc29a4c5b50f26
2020-11-20 07:39:02 -08:00
Pascal Hartig
57745e0e98 Upgrade to Docusaurus 2 alpha 66
Summary:
Saw a new version came out. Only breaking change appears
to be that links are now required to be non-empty,
which sounds quite reasonable.

Reviewed By: nikoant

Differential Revision: D25119837

fbshipit-source-id: 758578d4f7f8045b59918f107438f3c8231bb790
2020-11-20 06:09:08 -08:00
Michel Weststrate
8b5220d8b3 Introduce Sandy welcome dialog
Summary: Added a welcome screen so that our users won't feel alienated / overwhelmed by the new Sandy design. With this in place we can start opening the GK to a subset of FB employees in the next release

Reviewed By: passy

Differential Revision: D25088630

fbshipit-source-id: 7337d670928f048a2c2fa60d98ac4bdcefb67c4d
2020-11-19 09:15:40 -08:00
Michel Weststrate
25158416ce Freeze incoming data
Summary:
This diff will enabling freezing (making immutable) of all data we receive from the device. This prevents dev mistakes causing components not to update or logic being hard to reason about. Also this makes Immer's `produce` faster in the typical case

Since this is potentially a risky change, that might break existing plugin logic, it has been put behind a GK https://www.internalfb.com/intern/gatekeeper/projects/flipper_frozen_data/

I did some quick exploratory testing on all plugins available for Facebook iOS / Android, and the only plugin that caused trouble was Fresco, which is fixed in this diff as well.

Reviewed By: nikoant

Differential Revision: D25055056

fbshipit-source-id: 8525511f4a8a0221740a6e1371ce7f2b757a203e
2020-11-18 08:51:15 -08:00
Michel Weststrate
2e5b52d247 batch for more efficient message processing
Summary: `unstablebatched_updates` should be used whenever a non-react originating event might affect multiple components, to make sure that React batches them optimally. Applied it to the most import events that handle incoming device events

Reviewed By: nikoant

Differential Revision: D25052937

fbshipit-source-id: b2c783fb9c43be371553db39969280f9d7c3e260
2020-11-18 08:51:15 -08:00
John Knox
53ba1a2ad2 Use ant star rating component
Summary: Part of converting ITSR to use ant design. Gets rid of some custom code.

Reviewed By: mweststrate

Differential Revision: D25055728

fbshipit-source-id: 451f8b0b7c2543eea59e74d5ea35761bc8ebeeba
2020-11-18 07:40:25 -08:00
John Knox
9d5ad7d8a8 Move ITSR popup into Sandy LeftRail
Summary:
The title bar is going away, so this needs to be moved somewhere when sandy is enabled.

This moves it into the left rail when sandy is enabled, and converts the icon to use a sandy icon and popover.
The contents of the popover haven't yet been converted to use sandy components.

Reviewed By: mweststrate

Differential Revision: D25055282

fbshipit-source-id: 259ed8312c0d4079433cfa7ffb88385184ae16b2
2020-11-18 07:40:25 -08:00
Michel Weststrate
f7c40c315c Update to Emotion 11
Summary: Per title

Reviewed By: passy

Differential Revision: D24994086

fbshipit-source-id: 84d83638ec518a39ea2d80f56b8c794c8b86a9d4
2020-11-18 06:52:03 -08:00
Pascal Hartig
008803b502 Don't redefine Tabs
Summary:
I don't quite know how this worked before but we had `Type` both as
a function and a type. I guess because types only exist in TS land it
was okay, but it was confusing nevertheless.

Reviewed By: nikoant

Differential Revision: D25026916

fbshipit-source-id: f4f0351bf7eeec33ef760433157b3713054d9dc7
2020-11-18 02:53:07 -08:00
Chaiwat Ekkaewnumchai
2c9219f99a Add State to Notification Component
Summary:
This diff covers notification items to show data stored in the state as well as add button functionality to plugins.

This diff doesn't cover notification search, clear, and setting, which will be covered in next diffs

Reviewed By: mweststrate

Differential Revision: D24986742

fbshipit-source-id: d42cfe8112881a7f0d2158cbce267a4d7c344305
2020-11-17 05:38:13 -08:00
John Knox
41c7e023a9 Enable limited use of iOS devices on non Mac devices
Summary:
Context: https://fb.workplace.com/groups/flippersupport/permalink/1005193786627946/

I believe we can land this without knowing that it works, because iOS support is still disabled by default for non mac devices - you have to enable it in settings to switch it on.

Reviewed By: passy

Differential Revision: D24893757

fbshipit-source-id: c9db515a7807c94a0d5e509017dd4e1796d24f6d
2020-11-17 04:03:43 -08:00
Michel Weststrate
17ff06c085 Minor padding fix
Summary: per title

Reviewed By: jknoxville

Differential Revision: D24993266

fbshipit-source-id: 42d1718a4f111505cf69d1accc7d7f7cee9285a9
2020-11-16 13:10:33 -08:00
Michel Weststrate
45db64f0d0 Make sure that limited top-level exports are exposed from flipper-plugin
Summary: This prefixes APIs of `flipper-plugin`, that are used by Flipper, but should not be used by plugins directly, with `_`. Also added tests to make sure we are always intentional when extending the exposed APIs

Reviewed By: passy

Differential Revision: D24991700

fbshipit-source-id: ed3700efa188fca7f5a14d5c68250598cf011e42
2020-11-16 13:10:33 -08:00
John Knox
797fd0517f Replace ITSR GK with a new one
Summary:
Michel discovered that the ITSR GK has been dialled down completely since the last bug.

Coming to re-enable it I discovered a bug that has been introduced since then, so have fixed that, but we can't just ramp up the original GK because the current version of flipper will crash if ITSR is used.

So instead, I'm leaving the current GK ramped down, and replacing it with a new one, which is safe to ramp up.

This will mean ITSR is only enabled on versions from the next release onwards.

Reviewed By: nikoant

Differential Revision: D24922822

fbshipit-source-id: 8a6990fd5130bd046c24b0da757492b37e4040f2
2020-11-13 01:20:49 -08:00
Michel Weststrate
dcdec2608e Start simulator app if not already started
Summary:
Before this change, launching a simulator would ony show the simulator if the simulator process itself was already running. This makes sure that opening a simulator also works from a closed state

Changelog: Automatically start an iOS simulator to launch a device when none is running yet

Reviewed By: nikoant

Differential Revision: D24919363

fbshipit-source-id: 45039330710cf81aa73222967d667964bb01f42a
2020-11-12 16:32:57 -08:00
Michel Weststrate
c9a278fb0f Use predefined icons for Facebook family apps
Summary:
Ideally, we want to fetch app Icons from the device, but for now, we can at least for Facebook owned apps we can use a hardcoded set of icons, which probably even looks better.

For ` Lite` apps, the colors of the icon and background are reversed, which makes both variations recognizable.

Reviewed By: jknoxville

Differential Revision: D24920161

fbshipit-source-id: 5220093fb3a443ae535faa4c346a2029de9cbbd5
2020-11-12 15:19:43 -08:00
Michel Weststrate
dca419ee24 Prompt for login by default
Summary:
This aligns behaviour with non-sandy behaviour of login: Prompt for login on startup if the user isn't yet signed in.

Logic is based on https://www.internalfb.com/intern/diffusion/FBS/browse/master/xplat/sonar/desktop/app/src/chrome/UserAccount.tsx?commit=1fc905fdd1cd&lines=94

Reviewed By: jknoxville

Differential Revision: D24922397

fbshipit-source-id: b4bab9c109a1054c0e260599d28320699c47dfda
2020-11-12 15:04:41 -08:00
John Knox
9d101263a0 Put PopoverProvider inside scope of Store Provider
Summary:
Many UI components (such as Button) rely on the redux store being present in the context.

So to use these components freely in popovers, the popover provider has to be within the store provider, not outside of it.

This moves it, along with the context menu and tooltip providers for the same reason.

Has the effect of fixing the ITSR dialog, which had a button inside a popover.

Reviewed By: mweststrate

Differential Revision: D24922493

fbshipit-source-id: e15540ac49795875b1cf86d6c66ec0591dc374ef
2020-11-12 10:03:59 -08:00
Michel Weststrate
229f7bd036 Add papercuts support to the support form
Summary: For groups that have a papercuts entry, the support form will now link to them. This will hopefully increase the amount of feedback we get.

Reviewed By: nikoant

Differential Revision: D24921296

fbshipit-source-id: c6d07a10838a7abb1c70e8d61197a7b339f611bc
2020-11-12 07:30:03 -08:00
Michel Weststrate
b66f452271 Keep Navigation plugin alive even when disabled
Summary:
Navigation plugin is a special cause that will remain connected and process messages directly even when disabled, this is to make sure the bookmarks feature keeps working even when the plugin is not enabled.

Changelog: [Sandy][Navigation] on Android, the currently active deeplink of the application will now be shown in the sidebar

Reviewed By: jknoxville

Differential Revision: D24890375

fbshipit-source-id: eb5e4141740e0436396cea5a7aae24337f2e903e
2020-11-12 04:17:29 -08:00
Michel Weststrate
273b895e30 Support auto completion on discovered bookmarks and filling out params
Summary:
This diff adds support for finding appPatterns (not sure how the feature is called) in the device, and auto completing on it.

Also improved the styling of bookmark sections.

This diff also adds support of showing a dialog in which params an be filled out if needed.

The behavior around optional arguments seems buggy, as in, no dialog will show up, but since I didn't want to change the logic around this unilaterally, left it as-is for now.

Updated the dialog to Ant so that the renderReactRoot utility could be used safely

Reviewed By: cekkaewnumchai

Differential Revision: D24889855

fbshipit-source-id: 6af264abec2e9e5b921ef7da6deb1d0021615e9e
2020-11-12 04:17:29 -08:00
Michel Weststrate
5118727cb7 Add bookmarks section to AppInspect
Summary:
This diff adds support for the navigation plugin bookmarks to the appinspect tab.

Support for path discovery, and path params will be added in a next diff.

Features:
* click a bookmark and navigate to it
* sync bookmark state and uri with navigation plugin
* manually enter a path and navigate to it by using <ENTER>

Reviewed By: cekkaewnumchai

Differential Revision: D24620250

fbshipit-source-id: 14b393a5456b4afeef69444d2120c8f01686e602
2020-11-12 04:17:29 -08:00
Michel Weststrate
661bea1d5b Convert Navigation plugin to Sandy
Summary:
Converted the Navigation plugin to Sandy, and updated Locations bookmark accordingly.
This is a prerequisite step of supporting the bookmarkswidgetin the new AppInspect tab.

Updated LocationsButton accordingly, and overal simplified implementation a bit; locationsbutton now reuses the logic of the NavigationPlugin, rather than reimplemting it. This reduces code duplication and also makes sure the state between plugin and location button stays in sync.

Made sure that search providers are derived and cached rather than stored, again simplifying logic

That being said, the navigation plugin is buggy, but all these things failed before this diff as well:
* No events happening when using iOS, despite the plugin being enabled. But these seems to be a long time know issue, looks like it was never implemented
* Not sure if the parameterized bookmarks is working correctly
* screenshots not always happening at the right time (but fixed a race condition where the wrong bookmark might get updated)
* Locations button doesn't show up if the navigation plugin is supported but not enabled (will try to fix in next diff)

Would be great if bnelo12 could do some exploratory testing to verify what ought to be working, but currently isn't.

Reviewed By: cekkaewnumchai

Differential Revision: D24860757

fbshipit-source-id: e4b56072de8c42af2ada0f5bb022cb9f8c04bb47
2020-11-12 04:17:29 -08:00
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