Commit Graph

70 Commits

Author SHA1 Message Date
Michel Weststrate
f2d12f1025 Fixed a bunch of prettier errors after upgrading
Summary: prettier upgrade uncovered more errors

Reviewed By: passy

Differential Revision: D18474908

fbshipit-source-id: b1553000fb3386f2bbd9defdd3332618e4b9c867
2019-11-13 08:36:54 -08:00
Andres Suarez
0675dd924d Tidy up Flipper license headers [1/2]
Reviewed By: passy

Differential Revision: D17863711

fbshipit-source-id: 259dc77826fb803ff1b88c88529d7f679d3b74d8
2019-10-11 13:46:45 -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
Daniel Büchele
4e5ede6d37 Allow navigation to URI in Wilde via Flipper
Summary:
Here I add functionality to Wilde that allows navigation to internal deeplinks via Flipper. I beleive this was once a feature by allowing access to non whitelisted URL's but this has since been removed.

The Flipper plugin can now receive a navigate_to command which then emits a url over the navigateTo socket. This is picked up by the FBNavigationFlipperLogger plugin where it gets an instance of the NavigationCoordinator and opens the url.

Reviewed By: kolinkrewinkel

Differential Revision: D17282530

fbshipit-source-id: 0ba29aeac2a32d5464e8fa1dfa4e53af7cf94159
2019-09-23 06:41:32 -07:00
Daniel Büchele
ada2327520 refactor sidebar styles
Summary: Using styled components rather than class names to follow Flipper's guidelines

Reviewed By: jknoxville

Differential Revision: D17419665

fbshipit-source-id: 17e0a3bd9292327a4b34eb4e87e5271af8fa22c7
2019-09-17 10:18:26 -07:00
Daniel Büchele
108c49f572 Bookmark from TitleBar
Summary: Add action to bookmark current location

Reviewed By: passy

Differential Revision: D17419666

fbshipit-source-id: 69e845e802260c150ae2f17649cea05bea1ae4ec
2019-09-17 10:18:26 -07:00
Daniel Büchele
1666cf5ee5 Background events
Summary:
`this.client.subscribe` was used to listen for navigation events. This means, navigation events are not collected while the plugin is in background.
In this diff, this is changed to a persistedStateReducer, so the events are collected with the plugin not active.

Reviewed By: jknoxville

Differential Revision: D17419668

fbshipit-source-id: 88d9476cb7461ff6774d42a992d32b4c8948ac86
2019-09-17 10:18:26 -07:00
Daniel Büchele
a72eac27a7 add flipper-plugin keyword to package.json
Summary: For plugins to be discoverable through NPM, they need to have `flipper-plugin` as a keyword. This adds this keyword to all existing plugins (although they are currently not distributed via NPM) and the webside/docs.

Reviewed By: passy

Differential Revision: D17395079

fbshipit-source-id: e42dd31ca39c3754cf729052ee783687748bafe8
2019-09-17 06:21:29 -07:00
Benjamin Elo
99cfc14134 Display iOS patterns when iOS device is used
Summary:
Previously url's were displayed only for the Android app even if the user was using the iOS app.

This commit displays the url's for the iOS app if the user is using the iOS app.

Reviewed By: danielbuechele

Differential Revision: D17318175

fbshipit-source-id: 3bd8be4de55ea5b3ce634c2c6b713cba14ffcccd
2019-09-12 02:51:38 -07:00
Benjamin Elo
a90422bf2f Added additional parameters for logging
Summary:
The navigation plugin supports logging of a date and the class name. This addition adds that support.

I have kept the previoius method which I will remove once  I update the fb4a navigation plugin integration.

Reviewed By: danielbuechele

Differential Revision: D17202996

fbshipit-source-id: eac95328a6e2278c3a27ca608b9b675c8efe4528
2019-09-05 05:59:55 -07:00
Benjamin Elo
4e71d9b1ea Removed flow-types file
Summary: This completes the navigation plugin ts migration by removing the flow types file.

Reviewed By: passy

Differential Revision: D17181605

fbshipit-source-id: b4931d28664e990c37dea229a7fe3f52685e5ee7
2019-09-05 05:49:30 -07:00
Benjamin Elo
d7814b19da Migrate navigation tests
Summary: Migrated all the tests. I've put these in a single diff as there were only a couple of lines that had to be changed in each file.

Reviewed By: danielbuechele

Differential Revision: D17181587

fbshipit-source-id: cdcc20d71a47e786db4cefbebe9ea686d5e235e5
2019-09-05 03:33:09 -07:00
Benjamin Elo
be6a99c8f9 Migrated plugins/navigation/index to TypeScript
Summary: Migrated plugins/navigation/index.js to plugins/navigation/index.tsx

Reviewed By: passy

Differential Revision: D17181195

fbshipit-source-id: da64547ff001cee2be2d728443a3c189785c51f3
2019-09-04 06:39:20 -07:00
Benjamin Elo
470c8ca65e Added a blue timeline line
Summary:
I've added in a timeline line. Getting the CSS for this to work perfectly was tricky, but in the end this result looks pretty good. I've opted for the unknown events to have a smaller circle.

Edit:

I have fixed the border radius issue with the img element:

{F206482232}

And Unknown events are better aligned:

{F206482255}

Reviewed By: jknoxville

Differential Revision: D17180819

fbshipit-source-id: c318d2721adde758494267095524961c796f7a54
2019-09-04 05:17:43 -07:00
Benjamin Elo
df667027df Navigation Timeline UI overhaul.
Summary:
This is a UI ovehaul for the Navigation plugin, taking inspiration from the Notifications page in Flipper.

We now display a timestamp, open page and bookmark are more clearly identified, screenshots are organized more neatly, and parameters are displayed in a table.

If the class name of the ViewController is available, that will also be displayed.

Edit:

Adding in some of the requested changes.

Improved UI:
https://pxl.cl/K0h9

Scroll on opening a page:
https://pxl.cl/K0hQ

Reviewed By: danielbuechele

Differential Revision: D17161734

fbshipit-source-id: e5e054bf87f540964e90da3a798fd0c23df86540
2019-09-03 10:11:58 -07:00
Benjamin Elo
ffb505ce4c Bookmarks UI overhaul
Summary: I've made some slight changes to how bookmarks are displayed in the app, and added the ability to remove them from the tab.

Reviewed By: danielbuechele

Differential Revision: D17154083

fbshipit-source-id: 587e1e0f6f79f461c92e4866f4a59608a6173ccb
2019-09-02 06:35:34 -07:00
Benjamin Elo
cfcd0f060c Migrated components/index to TypeScript
Summary: Migrated components/index.js to components/index.tsx.

Reviewed By: danielbuechele

Differential Revision: D17132215

fbshipit-source-id: 76e03f9b4a509ad9c8faac484dc5b0ba7d1574e1
2019-09-02 04:13:42 -07:00
Benjamin Elo
a615259961 Migrated SearchBar to Typescript
Summary: Migrated SearchBar.js to SearchBar.tsx

Reviewed By: danielbuechele

Differential Revision: D17132221

fbshipit-source-id: ce1728bf06ba2a314c027e92456f947ab4781660
2019-09-02 04:13:41 -07:00
Benjamin Elo
10e90f3f57 Migrated Timeline to TypeScript
Summary: Migrated Timeline.js to Timeline.tsx

Reviewed By: danielbuechele

Differential Revision: D17132222

fbshipit-source-id: ffe5b74459d1f3ec48873a94a95c40e855aa45da
2019-09-02 04:13:41 -07:00
Benjamin Elo
d3023946da Removed ScollableFlexColumn component
Summary: This functionality already existed in FlexColumn by adding the prop grow.

Reviewed By: danielbuechele

Differential Revision: D17132219

fbshipit-source-id: d284f2c5e219beff743525abd344a8b9d1955d0b
2019-09-02 04:13:41 -07:00
Benjamin Elo
cdd7793428 Migrated SaveBookmarkDialog to TypeScript
Summary: Migrated SaveBookmarkDialog.js to SaveBookmarkDialog.tsx

Reviewed By: danielbuechele

Differential Revision: D17132225

fbshipit-source-id: 34de69069197718055ec8cc31f539cd8e1aa5b2e
2019-09-02 04:13:40 -07:00
Benjamin Elo
0a9c4bdcf4 Migrated RequiredParametersDialog to TypeScript
Summary: Migrated RequiredParametersDialog.js to RequiredParametersDialog.tsx

Reviewed By: danielbuechele

Differential Revision: D17132223

fbshipit-source-id: a4a592ba58b8c8b94b3106c3a2c0916b2776697f
2019-09-02 04:13:40 -07:00
Benjamin Elo
d957f45314 Migrated AutoCompleteSheet to TypeScript
Summary: Migrated AutoCompleteSheet from AutoCompleteSheet.js to AutoCompleteSheet.tsx

Reviewed By: danielbuechele

Differential Revision: D17132216

fbshipit-source-id: 2ce269cbd5a77353002958650c25d7297cc4e99e
2019-09-02 04:13:40 -07:00
Benjamin Elo
7d0710a0c8 Migrated BookmarksSidebar to TypeScript
Summary: Migrated BookmarksSidebar.js to BookmarksSidebar.tsx

Reviewed By: danielbuechele

Differential Revision: D17132218

fbshipit-source-id: 0e95201b5fe7c17e4acc93926325e953d8859d6c
2019-09-02 04:13:39 -07:00
Benjamin Elo
434ed4ec7d Migrated NavigationInfoBox to TypeScript
Summary: Migrated NavigationInfoBox,js to NavigationInfoBox.tsx

Reviewed By: danielbuechele

Differential Revision: D17132217

fbshipit-source-id: 9a9cd3c186efdcf7a8efc5eeaec608ff8cb4d6f1
2019-09-02 04:13:39 -07:00
Benjamin Elo
4c68750058 Migrated FavoriteButton to TypeScript
Summary: Migrated FavoriteButton.js to FavoriteButton.tsx

Reviewed By: danielbuechele

Differential Revision: D17132220

fbshipit-source-id: af1a3de4b272a57975486233f699e390677784fb
2019-09-02 04:13:39 -07:00
Benjamin Elo
36a8dfc1f6 Migrate IconButton to TypeScript
Summary: Migrated IconButton.js to IconButton.tsx

Reviewed By: danielbuechele

Differential Revision: D17132224

fbshipit-source-id: d4f14050385c7c25900e9a9d01f3b9a0dcff3a31
2019-09-02 04:13:39 -07:00
Benjamin Elo
a0696692e2 Migrated hooks/requiredParametes to TypeScript
Summary: Migrated requiredParameters.js to requiredParameters.tsx

Reviewed By: danielbuechele

Differential Revision: D17133609

fbshipit-source-id: 8926921481bf587b51a09c18eca71ca6132ad89a
2019-09-02 04:13:38 -07:00
Benjamin Elo
5877c1df96 Migrated hooks/autoCompleteSheet to TypeScript
Summary: Migrated autoCompleteSheet.js to autoCompleteSheet.tsx

Reviewed By: danielbuechele

Differential Revision: D17133608

fbshipit-source-id: eba06c5add7687e013b8f0e2b430b359dbf1cb48
2019-09-02 04:13:38 -07:00
Benjamin Elo
950bbbf97d Migrate util/appMatchPatterns to TypeScript
Summary: Migrated appMatchPatterns.js to appMatchPatterns.tsx

Reviewed By: danielbuechele

Differential Revision: D17133610

fbshipit-source-id: 1a819e2b32a233372e08578352290eff1264ef43
2019-09-02 04:13:38 -07:00
Benjamin Elo
d5d0b0cd49 Migrate util/autoCompleteProvider to TypeScript
Summary: Migrated autoCompleteProvider.js to autoCompleteProvider.tsx

Reviewed By: danielbuechele

Differential Revision: D17133612

fbshipit-source-id: 7d4da17bd639fdd4fc7a79cc931abeab62be2086
2019-09-02 04:13:37 -07:00
Benjamin Elo
8269d128d6 Migrate util/indexedDB to TypeScript
Summary: Migrated indexedDB.js to indexedDB.tsx

Reviewed By: danielbuechele

Differential Revision: D17133611

fbshipit-source-id: 819eccc12c8cbacee5e9cdf8fbfce4f5fbb08813
2019-09-02 04:13:37 -07:00
Benjamin Elo
332821d315 Migrated util/uri to TypeScript
Summary: Migrated uri.js to uri.tsx

Reviewed By: danielbuechele

Differential Revision: D17133606

fbshipit-source-id: d278c293c6040a522f5cc0c5462c6682dc634328
2019-09-02 04:13:37 -07:00
Benjamin Elo
61ddbd9950 Added TypeScript types file
Summary: Luckily I put all my types in one file, so this was very easy to convert over.

Reviewed By: danielbuechele

Differential Revision: D17132226

fbshipit-source-id: cacd0d66e15504d6f82ccc4aaaa4e27339e513f1
2019-09-02 04:13:36 -07:00
Benjamin Elo
ec47c93ea0 Display class name of view if available
Summary: This commit provides the navigation plugin with more value, showing the ViewController of the rendered view.This allows the user to quickly start working on that view controller once they have the name. This works on nearly all views in the iOS app.

Reviewed By: passy

Differential Revision: D17071558

fbshipit-source-id: 22a22d4a0991e9f20bc85eb106a98a42214d4d0c
2019-08-28 05:05:34 -07:00
Benjamin Elo
d962bbbfb9 Added screenshots to the navigation plugin
Summary:
Here I've attempted to add screenshots to the nav plugin. This isn't the most elegant solution, but it might have to do due to limitations on the event handler for navigation being fired when the navigation occurs, and not when all remote content on the view has loaded. With this in mind, I added a 1 second delay for the screenshot. This has its own issues such as navigating within a second away from the page will display the wrong view.

If anyone has some suggestions I am open.

Another issue faced here was that incoming nav events are now impure as I need to go take a screenshot on each nav event. Therefore, I have removed the the tests which no longer work for the NavPlugin.

Reviewed By: danielbuechele

Differential Revision: D16915859

fbshipit-source-id: 95db0d1ded2084441d49e1f2e4712c55acf9f1b8
2019-08-22 05:28:34 -07:00
Benjamin Elo
0cc276dbea Removed navigation plugin gate keeper
Summary: Since I've published docs for the Nav Plugin, might as well remove the Gate Keeper. When integrating the Nav Plugin in our sample app, I've observed that the Plugin is stable.

Reviewed By: passy

Differential Revision: D16857344

fbshipit-source-id: c4b0b5828ae82f6e43cfcb000e7f003c5ccce568
2019-08-19 02:29:03 -07:00
Benjamin Elo
86f01d998f Recenter text in nav bar
Summary: I added the height css style to align the sheet. In this revision, I removed the height to recenter the text, but I've had to nudge the sheet up 3 pixels.

Reviewed By: danielbuechele

Differential Revision: D16855746

fbshipit-source-id: 14b4b83abeb74c01c3706c5b81921f30c8d7e2d3
2019-08-16 05:47:03 -07:00
Benjamin Elo
fc01f5536e Added boolean parameters to uri validation
Summary: Booleans must also be validated. These are denoted by {!boolParam}, as in they have a '!' symbol in front.

Reviewed By: danielbuechele

Differential Revision: D16802996

fbshipit-source-id: c03b858f0872dea0610e1d28aa9b48936f1117a6
2019-08-14 05:27:44 -07:00
Benjamin Elo
c40a88b117 Better form validation for required parameters plus live editing
Summary: Taking on the feedback from the demo yesterday, I've improved the required parameter's dialog by showing where specific errors occur in the form and adding live editing to the URI displayed.

Reviewed By: danielbuechele

Differential Revision: D16802921

fbshipit-source-id: 2e729549306a8efb79ca76d3da6f70632ccd9212
2019-08-14 05:27:44 -07:00
Benjamin Elo
1ae3b90019 Added LocationsButton when Navigation Plugin is active
Summary:
Here I've added the LocationsButton to the TitleBar in Flipper. This allows the user to navigate to saved bookmarks, or display the current page URI without ever opening the Navigation Plugin (Except to add bookmarks). The challenge of this diff was having a TitleBar child be controlled by a plugin.

The LocationsButton pulls bookmarks straight from the database whenever a mouseDown event is called on the button. (The Electron popup menu does not respond to props changes, so the menu is opened on mouse up and getting the bookmarks from the database occurs on mouse down... This seems to work fine).

The nav plugin on the Android side will now also send a welcome message alerting the app to created a persisted state for the navigation plugin, which shows the button in the TitleBar.

Let me know if I can answer any questions.

Reviewed By: danielbuechele

Differential Revision: D16786330

fbshipit-source-id: afc95348d9b7ec4ee041f42bb4d022f58c6bb969
2019-08-14 05:27:43 -07:00
Benjamin Elo
c4a89da960 Automatically filtler out optional parameters from uri
Summary:
When a user enters a uri with optional parameters in the nav bar, I chose to automatically filter these out, yet still show the parameters in the nav bar.

The device receive uri's with no optional parameters, but the user will still see the parameters in the UI.

Reviewed By: danielbuechele

Differential Revision: D16762529

fbshipit-source-id: e3bbdf886dca7fba793b140b5fb303c4a77926ba
2019-08-12 07:17:02 -07:00
Benjamin Elo
13fc0bec27 Minor improvements to Timeline view
Summary: Fixed issue with the timeline not having a key prop, and added some text when there are no navigation events.

Reviewed By: jknoxville, passy

Differential Revision: D16762034

fbshipit-source-id: 8f4618c8365c1a8b5a18b6176e1d80fc401f3ca5
2019-08-12 06:13:29 -07:00
Benjamin Elo
0d5850d723 Added URI validation functions and UI for correcting errors
Summary:
Some uris parsed from the device contain required parameters. Here we parse the uri and check if there is a required parameter on navigation. If there is we alert the user to correct the error.

In the next diff, I will strip away non-required parameters if they are present but not filled in.

Reviewed By: danielbuechele

Differential Revision: D16710944

fbshipit-source-id: ea32cfe60e2bb5e4f395caebf585ba1b220dcefe
2019-08-12 03:17:22 -07:00
Benjamin Elo
fe5df63d41 Added AppMatchPatterns provider to nav bar
Summary:
This commit adds the match patterns that were parsed from the app into the nav bar.

Planned for next commit: Alerting the user if they havn't filled in required parameters, and automatically excluding non-required parameters if not filled in.

Reviewed By: danielbuechele

Differential Revision: D16646774

fbshipit-source-id: 0f9130d659b6b635bfa1240dbd05c5956c6756ce
2019-08-06 03:10:47 -07:00
Benjamin Elo
c3b266c925 Parse match patterns from static directory into Flipper
Summary:
Here I parse in the match patterns belonging to the Facebook app into Flipper. In order to keep things generalized, we can add match patterns for other apps here also e.g. Instagram.

These functions are internal only, but I cannot hide them as we do not have dynamic imports. Instead, the match patterns file is hidden, and I plan to have the file read fail silently for external use.

Reviewed By: danielbuechele

Differential Revision: D16646444

fbshipit-source-id: c7978f61e5e9cfc137552777a9ed53b264184293
2019-08-06 03:10:47 -07:00
Benjamin Elo
5aadbde4b9 Added missing key props
Summary: This was an error appearing in the console that was bugging me. About how arrays of React nodes should have a key prop.

Reviewed By: passy

Differential Revision: D16646487

fbshipit-source-id: b61841c001eb4a93f0a071557b921ca7365e2ac3
2019-08-05 09:39:06 -07:00
Benjamin Elo
ea8a6546c9 Added providers to the auto complete sheet
Summary:
Okay so the main changes here are integrating the providers into the auto complete sheet and getting the search bar to work with it also.

For instance, in the search bar, I want to update the value string to whatever the user has highlighted in the auto complete sheet, without executing a new query. So thus, I had to create a new state variable in the search bar component for this.

I've also moved the custom hook into its own file to keep the component short in size. It had to be mainly rewritten to support providers instead of only bookmarks. Same goes for the entire AutoCompleteSheet component.

The bookmarksProvider is stored in the persisted state as to not regenerate every-time on render. It is only updated if the bookmarks are updated which are also now stored in the persistedState for the same reason.

Lastly, a DefaultProvider object was also made for the initial persisted state object.

Reviewed By: danielbuechele

Differential Revision: D16581644

fbshipit-source-id: 88723a4081d96250f723a4cd7b1ade101bf3e8f3
2019-08-02 01:58:02 -07:00
Benjamin Elo
7a55fbc8dd Added auto complete provider utility functions
Summary:
These are a series of utility functions for the auto complete system in the nav bar.

Essentially, the auto complete system will gather information from Providers. Providers provide auto complete information from various sources i.e. bookmarks, recently viewed, or uri match patterns from the build.

There are two main functions in this commit. The first is to turn the bookmarks Map into a Provider (bookmarksToAutoCompleteProvider). This runs in O(n) time where n is the number of bookmarks. A provider has an associated icon and matchPatterns to match what the user types to a uri. Here I concatenate the commonName and the uri of the bookmark together for the match pattern so that the user can search for both.

filterProvidersToLineItems takes an Array of providers and returns line items. These are objects that will be displayed by the nav bar auto complete system. This has a little bit of a longer running time. O(mnop). Where m is the number of providers, n is the number of items in the largest provider, o is the length of the query and p is the length of the line items. This may seem bad, but I've tested the performance using 364 entries and it completes the function in less than a millisecond.

The Providers will have precedence in the final auto complete box. With the most recent provder taking the most precedence, followed by bookmarks, followed by match patterns.

Reviewed By: danielbuechele

Differential Revision: D16568500

fbshipit-source-id: 00b043d51051ee86b3dbe18564e6f582b19e5359
2019-07-31 10:18:55 -07:00
Benjamin Elo
0609811224 Added dropdown sheet for nav bar
Summary:
Here I've added a drop down sheet for the nav bar. Currently it only supports showing the first five bookmarks with no filtering.

I use a custom hook to handle navigation with the keyboard in the nav bar, so that works well.

So you can use the arrow keys to select a uri from the dropdown, or by using the mouse.

Reviewed By: danielbuechele

Differential Revision: D16542218

fbshipit-source-id: 4c242fd3097297fc599b36523bb4821bbc172f88
2019-07-29 10:13:37 -07:00