Commit Graph

187 Commits

Author SHA1 Message Date
John Knox
13e942f59a Add getStringFromErrorLike utility
Summary: I've found myself having to extract strings from things that *might* be Errors more than once. Centralising this so it's consistent and correct everywhere.

Reviewed By: danielbuechele

Differential Revision: D15536034

fbshipit-source-id: 8e054dd6122aff10f0aacdfaed65125df0aea99f
2019-05-30 04:02:39 -07:00
John Knox
076b52059e Fix index rendering
Summary: This hadn't been tested on any tables with indexes. It was using the wrong set of columns to index the rows. Fixed by using the right list.

Reviewed By: danielbuechele

Differential Revision: D15535864

fbshipit-source-id: 1842a0695715e947b7e28b59e65dcc1eb5b32695
2019-05-30 03:15:29 -07:00
John Knox
2221090037 Fix Select value/selected React warning
Summary:
React outputs the following error:
  Warning: Use the `defaultValue` or `value` props on <select> instead of setting `selected` on <option>.

This fixes it by using value instead of selected.

Reviewed By: danielbuechele

Differential Revision: D15535717

fbshipit-source-id: eb784ba2cdefe1c6744cc15592cd3e0191d237d0
2019-05-30 03:15:29 -07:00
John Knox
79902cd7cb Fix some react warnings
Summary: React is printing errors saying not to use "Span", and booleans in html properties

Reviewed By: danielbuechele

Differential Revision: D15535593

fbshipit-source-id: e074137c89abfa69625b370087c9c18b579ff279
2019-05-30 03:15:28 -07:00
John Knox
b78fb88dd7 Make 'Refresh' update database list
Summary: Previously it only reloaded the current page.

Reviewed By: danielbuechele

Differential Revision: D15535168

fbshipit-source-id: b8252c24ffa74fdf22b2d4b6d5b7f99b40db8e47
2019-05-29 08:49:22 -07:00
John Knox
a630b50a8f Add databases plugin v0 (android) (#441)
Summary:
Adds a plugin for listing the databases, tables and contents of those tables in an android app.
Right now, works with sqlite, but it should be generic enough to work with other db types.

## Changelog

Add initial version of android databases plugin

Creating a PR, I may need to do some cleaning up, but this is to kick off that process.
Pull Request resolved: https://github.com/facebook/flipper/pull/441

Reviewed By: danielbuechele

Differential Revision: D15288831

Pulled By: jknoxville

fbshipit-source-id: 6379ad60d640ea6b0a9473acc03dd6ea81a3a8d4
2019-05-28 10:17:56 -07:00
Daniel Büchele
1d6399c1b5 remove console from layout inspector
Summary: We removed the console already from the client side. So this causes all calls to isConsoleEnabled to fail. This diffs removes these calls.

Reviewed By: passy

Differential Revision: D15449571

fbshipit-source-id: b702a8fbc80af002e1d8b7d37d5acc664ea5be99
2019-05-24 03:29:41 -07:00
Daniel Büchele
c1bff77f50 recursively invalidate nodes
Summary: When a node invalidates, all its children need to be updated. This was the case in v1 of Layout Inspector (3141b954bf/src/plugins/layout/index.js (L684-L692)) but got lost when writing v2.

Reviewed By: passy

Differential Revision: D15469096

fbshipit-source-id: 9ef5368387ccbce6e5c71de28c24f5790906cee9
2019-05-24 03:09:53 -07:00
Pritesh Nandgaonkar
914cbf6ccd Request all metadata for Images plugin before export
Summary:
Fresco plugin on the desktop side used to ask for all the image list along with the metadata when it was mounted. The mobile side never sent the image list and other information if not requested from it. That means, although Fresco plugin is a background plugin, there weren't any messages sent from the mobile side. Thus there was no trace available for Images plugin when the trace was exported. This diff, adds a hook which gets called before the export, where we request all the metadata from the mobile SDK.

BUG:

{F159305887}

Reviewed By: passy

Differential Revision: D15407962

fbshipit-source-id: 0012de2ab29d0f62e92d00f4926b04b1e394b62a
2019-05-23 05:48:04 -07:00
Pritesh Nandgaonkar
c7f3e4e588 Exports Wasted bytes metric for Images Plugins
Summary: Exports the `WASTED_BYTES` metric for the Images plugin. Currently its not possible to export the trace for Images Plugin, as all its listeners are setup in the init function of the component. Also it follows "pull" strategy, i.e Flipper asks for the data at component initialization. I will work on asking for the Fresco data when we terminate the headless, just like Layout Plugin.

Reviewed By: oprisnik

Differential Revision: D15393752

fbshipit-source-id: 4f0717ac5fb70a82aab5c803a4f92708d1faa9df
2019-05-20 02:44:09 -07:00
Daniel Büchele
d6ccf74c37 focus from context menu
Summary: Add option to focus a view from the context menu.

Reviewed By: passy

Differential Revision: D15294182

fbshipit-source-id: f03db136e8365833beee3b4883d2114e98a280bd
2019-05-10 06:19:28 -07:00
Daniel Büchele
ffea42e57f show/update focused element
Summary: This was already implemented in the old versin of layout inspector and got lost during the refactoring. When using talkback, the focused view is highlighted in green in the a11y inspector.

Reviewed By: passy

Differential Revision: D15294025

fbshipit-source-id: 92cc015e4bc726515e433b7b96f924246916972d
2019-05-10 06:19:28 -07:00
Pritesh Nandgaonkar
8684812907 check for the empty string
Summary:
Bug:

{F157985015}

Reviewed By: danielbuechele

Differential Revision: D15260689

fbshipit-source-id: c43cdc0fc0d3e624ad930af60a9c95996579acb6
2019-05-09 07:21:45 -07:00
Pritesh Nandgaonkar
38f3132b66 Fix the export metrics format
Summary: Fix the format of the export. Due to unknown reason the changes done in the D14933499 was [reverted back](https://our.intern.facebook.com/intern/diff/D14933499/?src_number=80619316) on the same diff. Thus this diff fixes the format of the metrics export

Reviewed By: passy

Differential Revision: D15239653

fbshipit-source-id: b9416f89e1b0022000d6201eb08ca1f456d5ed2e
2019-05-07 08:30:49 -07:00
Daniel Büchele
16ed255e2d merge persistedState by keys
Summary: Pushing all new rows into an array could result in duplicate entries. Now the data is stored in an object, using the row's id as a key. This deduplicates the data.

Reviewed By: jknoxville

Differential Revision: D15200794

fbshipit-source-id: 6afa2b7d02c1bdb796c250400938c38c51fdd207
2019-05-03 10:53:20 -07:00
Pascal Hartig
259adf1f36 Add missing yarn.lock
Summary: Per title.

Reviewed By: jknoxville

Differential Revision: D15198096

fbshipit-source-id: fcdc190a389351f08374de8e6dc984d39f04e8c9
2019-05-03 09:20:14 -07:00
Daniel Büchele
5afb148ffa Migrate to custom plugin
Summary: In this step, we want to visualize our mammals in a custom card view. For this reason, we need to replace `createTablePlugin` with a React component that extends `FlipperPlugin`.

Reviewed By: jknoxville

Differential Revision: D15183324

fbshipit-source-id: 329cdc5c6cbd7e1435538e8cdddf049d914ff221
2019-05-03 02:50:04 -07:00
Pascal Hartig
7dae5771d9 Add createTablePlugin-based counterpart to tutorial app
Summary: Per title. It's very basic, which is exactly the point.

Reviewed By: jknoxville

Differential Revision: D15182335

fbshipit-source-id: f70f8cd0510a605879dccb9f909f84971a4eedc3
2019-05-02 09:10:26 -07:00
John Knox
f00ff72211 Allow null TableRow sidebars
Summary: Makes the API a bit easier to use. Don't have to build an empty sidebar if you don't want one.

Reviewed By: passy

Differential Revision: D15064205

fbshipit-source-id: bd31c1aa97fd6d1c93717c10b268f49e44eb1299
2019-04-26 09:29:42 -07:00
John Knox
0a3805c0f4 Add types for native table plugin persisted state reducer
Summary:
I haven't done this at the platform level (plugin.js) because the persistedStateReducer method signature prevents it unfortunately.

We might want to add a different method type at some point, like this one so you don't need to do this unsafe casting in the plugin itself, but for now, just doing it here.

Reviewed By: danielbuechele

Differential Revision: D15080331

fbshipit-source-id: c51749ac84cd38559d85089557f44ace8ae6e08b
2019-04-26 04:08:55 -07:00
Pritesh Nandgaonkar
afd729deb6 Added metrics argument to headless inorder to export metrics
Summary:
This diff makes headless flipper accept `metrics` argument. Once this is passed. The headless flipper will terminate to export the metrics of the plugins, the type of the export looks like the following.

```
export type MetricType = {[metricName: string]: number};
type MetricPluginType = {[pluginID: string]: MetricType};
export type ExportMetricType = {[clientID: string]: MetricPluginType};

```

This diff, uses the store to export the metrics. I will modify the logic to accept the data which gets exported through `exportData`

Reviewed By: passy

Differential Revision: D14933499

fbshipit-source-id: dade5b7bc59ea4beb6d16c5ef471737e8597358a
2019-04-25 07:41:34 -07:00
Benny Wong
d9d1346c12 Add copy as cURL for network requests (#415)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/415

This diff adds a context menu item for network request rows that allows the user to copy the request as a curl command. The logic for the command generation was inspired by [`FLEXNetworkCurlLogger`](https://github.com/Flipboard/FLEX/blob/master/Classes/Network/FLEXNetworkCurlLogger.m)

Resolves #406

Reviewed By: passy

Differential Revision: D14973754

fbshipit-source-id: a57c31190d7615ca5377308e0bfad521b645b2e4
2019-04-23 07:05:19 -07:00
Benny Wong
01e4d694b5 Refactor types and util functions
Summary: Separating out the types and utils for work I'm doing on https://github.com/facebook/flipper/pull/415 / D14973754. This will make the request to curl utility function much cleaner

Reviewed By: jknoxville

Differential Revision: D14976747

fbshipit-source-id: cc15c10103ea75945d0a2ebaaa6d32a376192961
2019-04-17 12:23:51 -07:00
Pascal Hartig
6db83a7675 Use ToggleSwitches for binary options
Summary:
We've had a bunch of different options that were all binary
switches with very different ways of displaying them.

This consolidates them all to use ToggleSwitches. I think it
may still make sense to move them all to a sidebar as it's
the case for the Analytics plugin, but that's for another diff.

Reviewed By: danielbuechele

Differential Revision: D14933392

fbshipit-source-id: 7ef286b61142a564a7cde6de875266ac8641704b
2019-04-17 10:31:21 -07:00
Pascal Hartig
c244946be3 Catch malformed URI content
Summary:
As seen in https://our.intern.facebook.com/intern/bug/653953588368620/,
the network plugin can crash if content doesn't look like a URI.

Ideally, we'd be more granular in catching this, but for now skipping
that content seems better than crashing the entire plugin page.

Reviewed By: danielbuechele

Differential Revision: D14971610

fbshipit-source-id: 2708e5c0d4d1f584419d24c7dc38438009015565
2019-04-17 10:24:48 -07:00
Jiyue Wang
614f48dda3 Show server execution time in network plugin
Summary: the simpliest approach to render this metadata for debugging purpose

Reviewed By: bcuccioli

Differential Revision: D14974129

fbshipit-source-id: d816d1ef8dcd1bc333c4d0cdf70d6d9fb925bc03
2019-04-17 10:08:20 -07:00
Pritesh Nandgaonkar
5169d318de Fix the callstack sent from error reporting runnable
Summary:
The crash logged from `ErrorReporterRunnable` wasn't detailed. For example look at the following video.
Also for some reason the `FlipperConnection` interface doesn't have an argument for crash name. Thus I changed the js side of the plugin to accept `crash.name` to be undefined.

{F155526537}

Reviewed By: passy

Differential Revision: D14852561

fbshipit-source-id: 6daf9847535b4508fa312b4f940b014911aae2e5
2019-04-15 05:51:37 -07:00
Pascal Hartig
b276088f5f Refactor debug logging
Summary:
I dislike the sprinkled eslint ignores. Let's put this
in one place and just depend on isProduction().

Reviewed By: jknoxville

Differential Revision: D14913057

fbshipit-source-id: 2f5a98b7dba1ac1829eaeab24290d2f66820edf9
2019-04-14 02:29:42 -07:00
Zhang Qichuan
ffc6a5fe18 Fix issue 408 (#411)
Summary:
Fix https://github.com/facebook/flipper/issues/408
Pull Request resolved: https://github.com/facebook/flipper/pull/411

Reviewed By: danielbuechele

Differential Revision: D14802001

Pulled By: jknoxville

fbshipit-source-id: 5ce435c0c941a715f799c75a8e09dbf4983e9789
2019-04-11 04:38:52 -07:00
Daniel Büchele
1d3559c759 Remove beta bar from layout plugin
Summary: I though I already did this, when releasing it. Apparently not.

Reviewed By: jknoxville

Differential Revision: D14854810

fbshipit-source-id: 4da61866925e06a415bfaed0f48e5434e769ec39
2019-04-10 10:33:41 -07:00
John Knox
c198612303 Add top and bottom toolbars to table plugin
Summary: Adds ability to add things above and below the table when using native plugins.

Reviewed By: passy

Differential Revision: D14850839

fbshipit-source-id: cc7fa6d8055900c29f5af6f3460bc280c0a4a675
2019-04-10 06:17:51 -07:00
John Knox
287cad2f4b Inline createTablePlugin for native plugins
Summary: Before expanding what a table plugin can do, I'm extracting the createTablePlugin functionality into the native plugin component, so it can evolve independently without lots of forks in the code.

Reviewed By: passy

Differential Revision: D14800313

fbshipit-source-id: dbb34fe974c507663151daeb6631d1911b46f6df
2019-04-09 06:42:30 -07:00
Pritesh Nandgaonkar
2655d9b0ef Fix the reason getting truncated
Summary:
The reason was getting truncated, even though it had space to show the message. Look at the screenshot

BUG:

{F155254538}

Reviewed By: jknoxville

Differential Revision: D14775792

fbshipit-source-id: d18a458150c272c0c4e22cda9ea6459f96a70ea3
2019-04-04 08:17:38 -07:00
Pritesh Nandgaonkar
e19d6a723e Fix open log bug
Summary:
For the native crash, the crash log is logged as seperate messages. So crash reporter plugin merges them together and fires one notification. The merrging logic is timer based, so if multiple crash log message is posted in 50ms, it will be combined in one notification.

For the above case, the "Open in Logs" functionality was broken, as we used to compare the entire callstack in one entry rather than in the multiple rows. This diff fixes this issue.

Bug:

{F155167144}

Reviewed By: jknoxville

Differential Revision: D14748956

fbshipit-source-id: d24db6d47fa3cd633a9002ac77f37c267ca4924f
2019-04-04 04:39:48 -07:00
Pascal Hartig
b20d0a4c8b Add headless option to dump on disconnect
Summary:
This adds an optional exit strategy that reacts to the client disconnecting rather than a `SIGINT` which can be used for integration tests.

`MiddlewareAPI` is a subset of `Store` and required to work here.

Annoyingly, it's not quite clear to me why this does not work as part of an event loop cycle and requires a `setTimeout`. This doesn't have any negative effects and works in the same way that the SIGINT interruption works, but it's a bit of an eyesore.

Reviewed By: danielbuechele

Differential Revision: D14622111

fbshipit-source-id: e2caca056e478428d977565dc9bc09eefca4230c
2019-03-28 06:53:57 -07:00
John Knox
f6f00611d5 NativePlugins: Handle sidebar sections
Summary:
Adds ability to send sidebar sections from the mobile app.
Currently implemented sections are json blob, and toolbar (row of buttons).

Note that I have not tested the toolbar with more than one button. I'm currently implementing features as needed so this should be considered alpha support at the moment.

Reviewed By: passy

Differential Revision: D14642879

fbshipit-source-id: 84876935337741422242285dc48da79af3a1d5ee
2019-03-28 06:45:38 -07:00
JianyingLi
06e2379a78 Add contentType application/hal+json support
Summary: Pull Request resolved: https://github.com/facebook/flipper/pull/402

Differential Revision: D14663823

Pulled By: passy

fbshipit-source-id: 873a286f7d2e73c5cee4b9586adeadffa0292e43
2019-03-28 03:55:31 -07:00
Pritesh Nandgaonkar
153c75cfa9 Remove crashreporter GK
Summary: Remove the GK

Reviewed By: jknoxville

Differential Revision: D14596572

fbshipit-source-id: 09ef9359ce37c674ac7e1741b7d550716fca5156
2019-03-27 08:45:42 -07:00
Pritesh Nandgaonkar
9dbbae91d2 Provide the capability to copy crash name and reason
Summary: This diff allows user to copy crash name and crash reason in the clipboard

Reviewed By: jknoxville

Differential Revision: D14594212

fbshipit-source-id: 88a99af70e0e1aa5950e144a9072a8d96d7d3fc3
2019-03-27 08:45:42 -07:00
Pritesh Nandgaonkar
c422829beb Limit the message length in the notification
Summary:
Before this diff the notification fired for crash reporter had the entire callstack as its message, which is actually not required and it also makes a UI not good.

This diff just limits the message length

BUG:

{F154537911}

Reviewed By: passy

Differential Revision: D14594189

fbshipit-source-id: 663710e3e80be4367d0cc2a532fd4aa312cc0c1e
2019-03-27 08:45:41 -07:00
Pritesh Nandgaonkar
dd3f0fdfeb Parse Date from the crash and fix the date mismatch in the UI
Summary:
This diff parses the `Date` from the crash log, so that the `Date` shown on the UI matches with the actual crash log
Bug:

{F154301489}

Added test too

Reviewed By: danielbuechele

Differential Revision: D14563053

fbshipit-source-id: b9dc7de11d7f17d6c7aa2afe5106b8f85c0a535c
2019-03-25 04:53:40 -07:00
Pritesh Nandgaonkar
0adc2ef52e Multiple crash support
Summary: This diff adds support to show multiple crashes in the crash reporter plugin. You can also select crashes from the list of the dropdown.

Reviewed By: danielbuechele

Differential Revision: D14513401

fbshipit-source-id: 621d32c5971519e5046daec76ec2f9b32ba4d8ce
2019-03-25 04:53:40 -07:00
John Knox
57a24769e8 JS side of Native Plugins
Summary:
Native plugins are plugins that can be written in mobile code alone (java/objc), provided they conform to a template, currently table is the only implemented template.

This adds support to flipper for handling them.

Reviewed By: danielbuechele

Differential Revision: D14502188

fbshipit-source-id: a96be9b06de1cecf7977c4ef2fd05b168f7f1330
2019-03-22 07:07:31 -07:00
JianyingLi
2564bce5a0 Fix DataInspector Component diff some problems. (#397)
Summary:
1. In `diffMetadataExtractor` function, when the `data` or `diff` is `null`, it diff view does not display correctly.

```jsx

<Panel floating={false} heading={'Test'}>
  <ManagedDataInspector
    diff={{
      auth: null
    }}
    data={{
      auth: {
        user: {
          name: 'JianyingLi'
        }
      }
    }}
    expandRoot={true}
  />
</Panel>
```

Before:
![2561552808023_ pic](https://user-images.githubusercontent.com/3889523/54486986-db383b80-48ca-11e9-9869-a008f72f4324.jpg)

After:
![2551552807969_ pic](https://user-images.githubusercontent.com/3889523/54486992-ea1eee00-48ca-11e9-90b0-7fd043f1c2bd.jpg)

2. Status `added`(green) and `removed`(red) should be the opposite

```jsx
<ManagedDataInspector
  diff={{
    user: {
      name: 'Leo'
    }
  }}
  data={{
    user: {
      name: 'JianyingLi'
    }
  }}
  expandRoot={true}
/>
```

Before:
![2591552808195_ pic](https://user-images.githubusercontent.com/3889523/54487019-35390100-48cb-11e9-8c20-1526aeae52a1.jpg)

After:
![2581552808145_ pic](https://user-images.githubusercontent.com/3889523/54487022-3c600f00-48cb-11e9-9ea9-75a8c8490c22.jpg)
Pull Request resolved: https://github.com/facebook/flipper/pull/397

Reviewed By: danielbuechele

Differential Revision: D14505757

Pulled By: passy

fbshipit-source-id: 35ca1bf8721468fdde13f3a9ede75cb72a59caea
2019-03-19 17:04:15 -07:00
Pritesh Nandgaonkar
574ae7a3e8 Improve CrashReporter UI for the latest crash
Summary: I have updated the UI of the crash reporter. It doesn't show the multiple crashes now. I will work on that in other diff. This diff just updates the current UI that shows the latest crash, as per the [design](https://our.intern.facebook.com/intern/px/p/pJ11/)

Reviewed By: danielbuechele

Differential Revision: D14399400

fbshipit-source-id: f6f28c2c6d386f4cd99a257922993ef355b1059b
2019-03-19 08:18:13 -07:00
Daniel Büchele
a54b02b583 release v2
Summary:
- Moving the new layout plugin from `layout2` to `layout`.
- updating dependencies
- removed beta toolbar

Reviewed By: passy

Differential Revision: D14519490

fbshipit-source-id: d184767e767e1717368f66e2bda2af318b7e63c9
2019-03-19 06:47:06 -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
Pritesh Nandgaonkar
2f3678d6e3 Solve the bug when default state was not added
Summary:
Due to faulty condition default state was not being added in the persistedState, which casued the following bug.

{F153286217}

Reviewed By: danielbuechele

Differential Revision: D14425166

fbshipit-source-id: 557dc3717b650dae90dc44ad12970a684cecbf24
2019-03-13 05:28:36 -07:00
Pritesh Nandgaonkar
f2627dbc8b Hide target and alignment mode for archived device
Summary: As per title. Target mode and Alignment mode doesn't make sense for archived devices.

Reviewed By: danielbuechele

Differential Revision: D14407780

fbshipit-source-id: cf6f56456674ad8fec422d6f84d58c6d5b211c25
2019-03-12 07:08:24 -07:00
Pritesh Nandgaonkar
145addf1c9 Fix search for accessibility view
Summary:
Bug: On search, the accessibility views didn't used to expand.Look at the following video to understand the bug

{F153135892}

Reviewed By: danielbuechele

Differential Revision: D14407511

fbshipit-source-id: 011bf31b5bd10f5a7dad3d5d30703ec3bdeaf9c1
2019-03-12 07:08:24 -07:00