Summary: This diff fixes the improper plugin id getting assigned to the variable which lead to notifications not getting shown. The client id has `#` so pluginId is no longer the second argument when one splits the string by `#`. This diff fixes this problem.
Reviewed By: passy
Differential Revision: D13176776
fbshipit-source-id: cd5bdc33c61485e3cdc2f2dbcc615980c39c8b8c
Summary: Retry up to 5 times with exponential backoff.
Reviewed By: passy
Differential Revision: D13138244
fbshipit-source-id: 94c68b87aa281cfc3239b0bb8bdd75a2e0d7edc7
Summary:
Eslint / prettier are unhappy with the formatting of the FlowFixMe
comment, but the suggested solution is really ugly. Let's disable
the lint for now and remove this once it's addressed.
Pull Request resolved: https://github.com/facebook/flipper/pull/332
Reviewed By: jknoxville
Differential Revision: D13156552
Pulled By: passy
fbshipit-source-id: 680d151ea1022912e0e4a83fa42dc51005631c30
Summary:
Some network requests are yielding error: e.getMessage() is not a function.
It shouldn't be .getMessage(), it should be .message
Reviewed By: priteshrnandgaonkar
Differential Revision: D13137334
fbshipit-source-id: 72c782376c8e62a05c5e9ce1b956566ce1fc5bf0
Summary: This was misusing promise.resolve by calling it before the result is produced, meaning there was a race condition. It would also resolve as success even if listDevices failed.
Reviewed By: passy
Differential Revision: D13121173
fbshipit-source-id: f120a1b199d1e3168059c537461f65a8dc125a94
Summary:
Finally tracked down this bug that's been annoying me.
If you start flipper while the adb daemon is not running, then flipper will start the daemon, but it won't wait for it to have finished starting before telling the client to watch for devices. This is a race condition, and in practice never seems to work.
To avoid this, I'm calling `adb devices` on the client and waiting for it to complete before doing anything else. This forces it to wait for the daemon to start up if it hasn't already, and if it has then it instantly returns.
Reviewed By: passy
Differential Revision: D13101963
fbshipit-source-id: b85bed24751ce5c8efdfc6e841400e4db2580ab0
Summary: Stops them from jumping around if they try to connect more than once.
Reviewed By: passy
Differential Revision: D13084056
fbshipit-source-id: 803538298c45b9c28e5116f072518e8632b0f1cf
Summary: Adds test for the plugin reducer and dispatcher
Reviewed By: jknoxville, passy
Differential Revision: D13082652
fbshipit-source-id: 4af2c7721c4d88abbd332d610ff71d5db78e721c
Summary: Adding two GKs (one failing, one passing) to allow the testing of gatekeeper functionality. This is used in the next diff.
Reviewed By: jknoxville
Differential Revision: D13082651
fbshipit-source-id: c6d8ef484564c8ae8b4c107de5643c700f696ad5
Summary:
Plugins were loaded in `/plugins/index.js` which was loaded once at launch of the app. This moves the list of available plugins to redux. This way, plugins can be dynamically added. The redux store keeps to Maps of plugins (devicePlugins and clientPlugins) with their ID as key:
```
devicePlugins: Map<string, Class<FlipperDevicePlugin<>>>,
clientPlugins: Map<string, Class<FlipperPlugin<>>>,
```
On launch of the app, all plugins bundled with the app and the one found in `pluginsPath` are dynamically added.
This changes now allows to add new plugins at any time. All components that need to know which plugins are available (e.g. the sidebar) are connected to the redux store. This way, they will automatically update, whenever a new plugin is added.
- add `plugins` to the redux store to keep the list of available plugins
- add a plugins dispatcher, responsible for loading the plugins on launch
- connecting all React components that imported `plugins/index.js` before to the redux store to get the plugins from there.
- moved the updating of the MenuBar to the plugins dispatcher as it needs to update whenever a new plugin is added.
Reviewed By: jknoxville, passy
Differential Revision: D12449236
fbshipit-source-id: 6ef3e243e2c80443614b901ccbfde485fcb4301c
Summary:
First step in visualising the connection setup process.
Just a spinner while cert exchange is happening, so it doesn't look like nothing is happening.
Reviewed By: passy
Differential Revision: D13062514
fbshipit-source-id: a0692821025f42f4fe4af86faf059d4719008f25
Summary: Puts the connection state into redux so we have more visibility on what's happening in bug reports and in general allowing us to display it on screen.
Reviewed By: passy
Differential Revision: D13060455
fbshipit-source-id: c79b4b7d6a1155d86128a5d8d1174ead9e4514ae
Summary:
This improves bug reports.
Adding serial into device.toJson() means you can now easily see which clients (apps) are from which device because they both contain the serial.
Changing client id to use # instead of - because the subcomponents of it already use -.
Reviewed By: passy
Differential Revision: D13058430
fbshipit-source-id: 02697ec623829423e667fd2acbd1abc369a6919b
Summary:
Now the BugReporter has access to the logs and the redux store, to submit more useful bug reports.
This isn't currently used in open source, unless you override / replace this file.
Reviewed By: danielbuechele
Differential Revision: D13058210
fbshipit-source-id: e52a3cb528693ab171843080685e5342e0b6a393
Summary: Searchbar didn't update the filters when new default filters were added. This adds the new filters when they are added to the searchbar. Existing filters are not touched.
Reviewed By: passy
Differential Revision: D12999885
fbshipit-source-id: 51d9a1579724be2098b54161b39a0769180fb343
Summary:
* adds a button to hide notifications by category
* adds a quick action to report notifications as not helpful
* fixes type of network plugin's notifications to be string instead of number
Reviewed By: jknoxville
Differential Revision: D12999883
fbshipit-source-id: 32be5bde5931cca4a27ab1ad34418300196452cc
Summary:
Allows filtering notification by category. Category filters are also persisted in redux.
Adds a test suite for notification reducer
Reviewed By: passy
Differential Revision: D12999884
fbshipit-source-id: 5f8d2357e52f091c17b726e1f89ed68f3b7294fb
Summary: This diff adds action buttons to the notifications. Notifications with actions can only be sent from the main process. This is why we need to send a message to the main process which then shows the notification. The action callbacks are sent back to the renderer process to handle the action and log the event.
Reviewed By: passy
Differential Revision: D12999886
fbshipit-source-id: b415fded3172582fad11d88cabf0cfc5b3b8d4f9
Summary: This is a re-do of D9720987. Now that the Litho version has been bumped to 20 in D12838684, this diff can land safely.
Reviewed By: danielbuechele
Differential Revision: D12969979
fbshipit-source-id: b12d14e3b292d8cd110967f84f770f3725a800de
Summary: Added JSON parsing to make tree structure for NT subsection in layout inspector
Reviewed By: danielbuechele
Differential Revision: D12938117
fbshipit-source-id: 43967d2e970ff2ce7e9b2e05a99d58a95a71b650
Summary: If one throws an exception, we'd skip all the other ones. I don't think that's the behaviour we want.
Reviewed By: passy
Differential Revision: D12958926
fbshipit-source-id: dd82b750197b6fc1380496be4147fe63454d39da
Summary:
Currently HTML renders as a blank response panel which is not helpful for seeing erros.
Adding a formatter for `text/html` so we can see error responses, or other HTML responses, correctly.
Note, this adds the xml beautifier package from npm.
Reviewed By: danielbuechele
Differential Revision: D12883274
fbshipit-source-id: c49b60984f10bba471b5bbb8aabcb385a171d0d6
Summary:
This is a collection of small UI fixes for the network plugin:
- image maxWidth is set to 100% to not cause vertical scrolling
- Panels now have horizontal scrollbars, if their content overflows
- fixing missing icon for failed network requests
- removing position sticky from table headers as it was not used and causing some rendering issues and performance problems
- Adding a `label` and `grow` option to the `Select`-component which is used in the sidebar of the network plugin.
Reviewed By: passy
Differential Revision: D12956336
fbshipit-source-id: 6e7e9cf97c058a2ff626576d4afdc6df65007ea1
Summary:
The QPL plugin is sending the current time on the device every second, this was causing state updates every second.
QPL: don't update the state, when we did not receive new traces.
Client: only dispatch the update event, when the new state is different from the current.
Reviewed By: passy
Differential Revision: D12956337
fbshipit-source-id: c006540097408ead8fb8c5aac3aaaa220c1a3951
Summary:
Implementing persistedState for createTablePlugin, so it doesn't lose its data when switching back and forth between plugins. When `runInBackground` is set to true on the native side, createTablePlugins are now also capable of receiving new data in the background.
Adds a test suite for createTablePlugin, to make sure it:
- returns a FlipperPlugin
- ID, title and icon are set correctly
- the resetMethod clears the data
- the persistedStateReducer correctly adds new data
Reviewed By: passy
Differential Revision: D12939848
fbshipit-source-id: 30048f3ce2bb98c83b0c165e48df72c8e28eadcd
Summary: This allows sidebar extensions to have more information as to whether they should be enabled or not
Reviewed By: danielbuechele
Differential Revision: D12930405
fbshipit-source-id: 649d3f01da1c535f7d60b7b525b012a888ea78e0
Summary:
The `DetailsSidebar` has a fixed width of 300px. For some plugins it makes sense to specify a larger width for the sidebar, to show more content in it.
Usage:
```
<DetailSidebar width={500}>...</DetailSidebar>
```
Reviewed By: passy
Differential Revision: D12924525
fbshipit-source-id: 889d799017a6d3d53f6d32510863b4838a928fba
Summary:
persist the state of the redux store of `blacklistedPlugins`, so we don't show notifications for them.
This also fixes a bug where defaultFilters were not shown in the filterbar.
Reviewed By: passy
Differential Revision: D12924356
fbshipit-source-id: ebc5d2f5d2d3acfb5ed63d4085b65b7a78a7b05a
Summary:
adding documentation for more of our UI components.
Deleted some unused components, which were not working anyways.
Reviewed By: jknoxville
Differential Revision: D12896109
fbshipit-source-id: 959c7864240883869ad67283f80a3c189b94bf00
Summary:
The bash file was running adb reverse on the oneworld devices.
Switching to use the real code to do this instead.
--forceExit is needed because the dispatcher keeps an open handle on the adb connection, and it doesn't expose a close() method to stop it. I'm not sure of the best way to fix that, but it's out of scope for this diff anyway.
Reviewed By: passy
Differential Revision: D10868563
fbshipit-source-id: fb44ff1353d5050bb7967cb6c4fa18c2e5d0d149
Summary: Completes D9667222 to allow force rendering of accessibility in litho when an accessibility service is not actually running.
Reviewed By: ikenwoo
Differential Revision: D9720987
fbshipit-source-id: 000a7413fcbe775a525ca3aca64443c3669cdf9e
Summary:
Making the runner apply the necessary oneworld fix patch before running the tests.
This can't be a long term solution, but at least means not getting that breaking change landed doesn't stop our tests from running.
Since that change is only necessary for the tests, maybe we'll get away with fixing the update process before having to land it.
Reviewed By: priteshrnandgaonkar
Differential Revision: D10852110
fbshipit-source-id: b53a6d0ae9cb51e62cafc0c0f2cfe359ee6aff46
Summary:
`flipper` does a lot of stuff at import time. I copied the `styled` reexport
to the UI module, so it's possible to just depend on that.
`remote` is another one of those pot holes that can easily ruin your journey
if you aren't careful navigating around it. Added some defensive fallbacks here
which ultimately allows the lint test to run (and pass) without Electron.
Reviewed By: danielbuechele
Differential Revision: D10507655
fbshipit-source-id: 6dad5665ba15b5cb73caa4ea46262cf337173eb8
Summary:
`INITIAL_STATE` is defined at import-time and relies on `remote.getCurrentWindow()`, which means that any import from the `flipper` module will require a display server + electron running.
Happy to take alternative suggestions to make this look a bit less intrusive.
Reviewed By: danielbuechele
Differential Revision: D10507539
fbshipit-source-id: 62b6bff0b4fd40638e54328613de4d3821b69dd6
Summary:
Flipper tracks devices on an adb connection. If the adb server gets killed, it deletes all devices, but doesn't attempt to reconnect.
This gets it to rety after 500ms.
Reviewed By: priteshrnandgaonkar
Differential Revision: D10526974
fbshipit-source-id: a2101067f2245b728f458fc5e06dc68833c5e772
Summary: This class already has an adb client. Instead of creating new ones, should just use that.
Reviewed By: passy
Differential Revision: D10231152
fbshipit-source-id: c9426a12f0f6baf94026da51a79131d07e58053c
Summary:
Added a basic communication flows and a button to trigger notification
{F142016937}
Reviewed By: jknoxville
Differential Revision: D10492428
fbshipit-source-id: b65fc46b3be695852f9197771a253d9e8596f328
Summary:
Let's the notification render any React node.
Particularly useful when including links or wanting to
format messages.
Reviewed By: jknoxville
Differential Revision: D10488157
fbshipit-source-id: 06d3c6b4477c78e8bef78e3a3dc0e05bc67a2ef4
Summary:
Gets a oneworld device (just android for now), installs an app. Checks it connects and stays connected for 5s.
The app installed is in an array, we just need to add more targets for further tests.
Reviewed By: danielbuechele
Differential Revision: D10231083
fbshipit-source-id: c33fb091c1b7914a33690398a79fd700c445c06c
Summary:
I feel like doing async stuff here isn't a good idea in general.
But more pressingly, it means you can't immediately call server.close() after new Server(), because the things to close haven't been created yet.
Reviewed By: danielbuechele
Differential Revision: D10488301
fbshipit-source-id: 76ebe91e0c09f353e0bdb9f2e4116757e757abb2
Summary:
We were using `fill={true}` as an attribute to make flexbox containers fill the entire available space.
However, `fill` is an HTML attribute (see: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill) This caused warnings printed to the console.
This diff renames the attribute to `grow` with is also more in line with the Flexbox terminology.
Reviewed By: priteshrnandgaonkar
Differential Revision: D10488389
fbshipit-source-id: ed8553c6203cdf6df94d26c731164ecec4c9fbd2