Commit Graph

1408 Commits

Author SHA1 Message Date
Robin Giese
9699691eb6 Flipper: Fix exception in popup menus
Summary: When JavaScript fiction meets native interop reality, things get weird. Apparently some coordinates must be integer values.

Reviewed By: mweststrate

Differential Revision: D19606677

fbshipit-source-id: 88a6e8c465e59078b070b56b37eee571274c494a
2020-01-28 15:38:06 -08:00
John Knox
060e8c0e93 Fix 'Timed out waiting for device' error
Summary:
It looks like this timeout was firing every time, causing a misleading error.
Fixing by clearing it when the match is found.

Reviewed By: passy

Differential Revision: D19602640

fbshipit-source-id: b5d97e71a02a014b9498dd56371c1a48f8ae08eb
2020-01-28 11:28:16 -08:00
Pritesh Nandgaonkar
40ac443386 Deeplink support for graphql
Summary: This diff adds support for the deeplink of support form for graphql groups.

Reviewed By: mweststrate

Differential Revision: D19583680

fbshipit-source-id: fc4505dc5f46c701f1e43fc47ee094fb0aa15d42
2020-01-28 09:29:04 -08:00
Pritesh Nandgaonkar
e9dba5007a Update default plugin selection when selected group changes
Summary: This diff updates default plugin selected when group selection gets updated. This diff also makes sure that group selection is persisted when swtiching between different tabs.

Reviewed By: mweststrate

Differential Revision: D19578748

fbshipit-source-id: 6f401248fe32441e30cb5acbb9251e206866984a
2020-01-28 09:29:04 -08:00
Pritesh Nandgaonkar
0ffd080141 Group selection view
Summary:
Added a group selection view in the support form to select the group to post the support form in. Added two groups for GraphQL's android and iOS.
Also added a check to avoid selecting graphQL group unless GraphQL plugin is enabled.

Reviewed By: mweststrate

Differential Revision: D19538023

fbshipit-source-id: 022d592ae2aa17ed1e1b10a37b011ddc68df560a
2020-01-28 09:29:04 -08:00
Michel Weststrate
bdd4516dc4 Track how much time people spend waiting for queues to be flushed
Summary: Added stats, so that we know how much people have to wait when opening plugin after we open the queue GK

Reviewed By: jknoxville

Differential Revision: D19598730

fbshipit-source-id: f955123f2bae5b870eada8f787385d6c0450453e
2020-01-28 05:07:22 -08:00
Michel Weststrate
31df1db74f introduce FPS graph to visualize slow UIs
Summary:
This diff creates a small FPS graph to be able to see where we slow down the app. This visualizes two things

1. The amount of FPS we render at (from tracking.fps).
2. If we were not able to render at all (due to the main thread being blocked fully), we interpolate the graph and draw it in red.

Reviewed By: nikoant

Differential Revision: D19579115

fbshipit-source-id: 2421d724c6d514986759bc9d68b92a5e4f51e401
2020-01-27 07:34:01 -08:00
John Knox
33ad41c98c Update welcome screen links
Summary: The welcome screen links were a bit out of date.

Reviewed By: nikoant

Differential Revision: D19578769

fbshipit-source-id: 69fc7977bd75ca4256043698350381a5f9d7fdb8
2020-01-27 07:23:45 -08:00
Michel Weststrate
6218b00e15 Fix issue where file / link export accidentally included support request details
Summary: When doing a Flipper trace export through the app menu (not the support form), the export still contained a support request details section, with the default data of a bug report. That doesn't make any sense and is confusing, so this change makes sure the report is only included if it is supported through the supportRequestForm

Reviewed By: passy

Differential Revision: D19499408

fbshipit-source-id: ff7a5333f2045f2465966dffa0c5fb03aaeaceb8
2020-01-27 07:22:32 -08:00
Michel Weststrate
82e65c68dc Make sure plugin name selections are displayed consistently with sidebar, [Flipper] Make sure plugins have the same name everywhere
Summary:
Not all plugin names are created equal in flipper. For example, plugins would bear different names in the sidebar and in the plugin selection when making a support request / flipper trace. Fixed this and also introduced a `getPluginTitle` utility that produces this name consistently.

Plugin listview now also sort their items consitently with the sidebar.

Probably also fixed an error in the flipper export screen, where a correct TS error was supressed.

Reviewed By: jknoxville

Differential Revision: D19499404

fbshipit-source-id: c5b23a170d41d96799eb7899e249f70778717d45
2020-01-27 07:22:32 -08:00
Angus Holder
ac8bd8638a Enable using Ctrl+Return to execute a query in the database plugin (#761)
Summary:
Having a key shortcut to execute the query you're typing helps to speed up the edit-run cycle.

## Changelog

In the database SQL execution tab, you can now execute queries with Ctrl+Return instead of pressing the 'Execute' button.
Pull Request resolved: https://github.com/facebook/flipper/pull/761

Test Plan:
I typed a query into the textarea, and while it was focussed, press Ctrl+Return, and the query executed.

Mousing over the 'Execute' button displays a tooltip informing you of this keyboard shortcut.

![image](https://user-images.githubusercontent.com/7407345/73128700-31860880-3fcb-11ea-9a7c-28a55b46a151.png)

Reviewed By: mweststrate

Differential Revision: D19578527

Pulled By: passy

fbshipit-source-id: be131e44e293caa578d48e324fc43b457edb1e4e
2020-01-27 06:07:57 -08:00
Michel Weststrate
434d75f362 Always process messages for navigation plugin
Summary: For the navigation plugin we want to opt-out from the "enabled" and "process messages later" optimizations, because it's events should be immediately processed to reflect the changes in the topbar for navigation purposes

Reviewed By: jknoxville

Differential Revision: D19554297

fbshipit-source-id: 4bd49b5d1327feea6dea52e86d9dbc9d54a5dbee
2020-01-27 04:04:20 -08:00
Michel Weststrate
cedb9617c4 Fixed issue where the location bar wouldn't be updated if there are multiple connected clients
Summary: The location bar doesn't update if there are multiple connected client, if the client we are interested wasn't the first one. The cause of that is that the location bar picked the state of the *first* navigation plugin found, rather than the navigation plugin connected to the selected device and client

Reviewed By: jknoxville

Differential Revision: D19554293

fbshipit-source-id: 46f2a66aa6ba07b510f1f615943eeb6ef8d52622
2020-01-27 04:04:20 -08:00
Michel Weststrate
e9ff9addc6 Fixed broken navigation plugin
Summary: The navigation plugin threw exceptions, as the defaultPersisted state was not mixed into the already stored state, making some fields unreadable

Reviewed By: jknoxville

Differential Revision: D19554291

fbshipit-source-id: 57f045aa1eae10682e44d479b9aecb51f0391b9e
2020-01-27 04:04:20 -08:00
Michel Weststrate
23625f7a89 Change star concept to enabled
Summary:
The 'starring' concept of plugins no longer covers the meaning of 'starring', as unstarred plugins will no longer receive data from background plugins, not be available in support request forms due to a lack of data etc. So this diff renames the feature to 'enabled'.

Also fixed an issue where selecting a non-enabled plugin wouldn't show it in the sidebar if the additional plugins are collapsed.

To make disabled plugins more clear, they are . now always rendered in gray.

The toggle button now delays its effect for better visual feedback

- [x] update side bar styling
- [x] remove bottom bar warning
- [x] details screen
- [ ] only open connection for active plugins (will be done in a next diff)
- [x] check archived / imported devices
- [x] make sure device plugins work correctly
- [x] check without GK's

Reviewed By: jknoxville

Differential Revision: D19470326

fbshipit-source-id: 9160a3434287561f56b1b741d5ba282ab6063ea8
2020-01-27 04:04:19 -08:00
Carmi Grushko
cbb8d97d86 Apply word-wrap:break-word; to detail values
Reviewed By: timur-valiev

Differential Revision: D19554394

fbshipit-source-id: c513c10c77420e74e8f8361440d4753bfc889248
2020-01-24 06:46:38 -08:00
Anton Nikolaev
aab004aa15 Allow disabling iOS development in Settings
Summary:
Currently Android development can be disabled in Settings, but iOS development not. Because of this Doctor always shows warnings to Android-only developers who has no iOS SDK installed. This change makes it possible to disable "iOS development" option in the same way as we already had for Android.

Additionally I changed Doctor warning to show more specific message if only iOS or only Android checks are failed with suggestion to disable the failing platform if it is not required.

Reviewed By: jknoxville

Differential Revision: D19538070

fbshipit-source-id: 234d2c6cf21083f9d6aebd63418aed7f9a78e922
2020-01-23 13:37:03 -08:00
Anton Nikolaev
b625efee3d Doctor complains Android SDK is not installed
Summary:
There are complaints about Android SDK being reported as "not installed" when it is actually installed. To address them, I changed the way how we detect SDK and also added some minimal actionable feedback for each check.

The problem with the previous implementation of Android SDK check via "envinfo" is that the library uses "sdkmanager" tool under the hood, and this tool doesn't work on Java 9+. To fix this I'm changing the way how we assume SDK is installed to simple check for "adb" tool existence.

Actionable feedback is shown on Doctor report when you click to an item.

Reviewed By: jknoxville

Differential Revision: D19517769

fbshipit-source-id: 1c21f1bdcd05c7c0ae3f97b9c3454efa2c861d26
2020-01-23 13:37:02 -08:00
Pritesh Nandgaonkar
f61d578b26 Show tooltip when no plugins are selected
Summary: Shows tooltip when no plugins are selected. Before it used to select all the plugins

Reviewed By: jknoxville

Differential Revision: D19537054

fbshipit-source-id: 567b90f981a2a2ddcf68a1dce902db0a9d6214d2
2020-01-23 10:05:04 -08:00
Michel Weststrate
dc60d33b3a Make sure device plugins show up even when loaded after creating devices
Summary: The device.devicePlugins collection was not updated if new plugins were registered after creating a device. This diff fixes that.

Reviewed By: jknoxville

Differential Revision: D19536777

fbshipit-source-id: 11ed3c3383ae692ce74fd7a21704332fb319b9c4
2020-01-23 08:37:33 -08:00
Pritesh Nandgaonkar
032b594221 Refactor Listview to solve a bug
Summary:
There was a bug in ListView where the selected items where not getting updated.

Bug

In the following video I have selected Inspector and logs plugin from export drop down. When I click on litho support form it should select the default plugins which is Inspector, Mobile Config and Logs. But it only shows Inspector and Logs selected

{F226900949}

To fix it:

I call the callback `onChange` when the listview's row get updated, which will updates the props of the ListView component and hence rerendering it with updated selected rows.

Reviewed By: mweststrate

Differential Revision: D19518762

fbshipit-source-id: 39367590cbdc1d6f88afb467b17b71e13703bde3
2020-01-23 07:40:20 -08:00
Michel Weststrate
a9f2b67874 Fix background plugin stats
Summary: Discovered that all gathered plugin stats where empty due to mis-using Object.entries. Fixed that. Also added a accumulated cpuTime metric, which should be great for a uniform trend line.

Reviewed By: jknoxville

Differential Revision: D19517279

fbshipit-source-id: a6df83eea000a5d59fe692a3795fd58ae6457821
2020-01-23 02:04:06 -08:00
Pritesh Nandgaonkar
d31ea742f5 Fix broken URL export
Summary:
Fixes broken export through URL.
Also fixes an issue where we suppress an exception

Reviewed By: mweststrate

Differential Revision: D19517066

fbshipit-source-id: c68b6a1bcbc8b0588e0db9032268033a42b43c61
2020-01-22 10:07:59 -08:00
John Knox
5a19004732 Only show outdated SDK warning for android devices
Summary: This exists to warn people about an incompatibility with old android sdk's, there's no need for the warning on other OS's even if the sdk is old.

Reviewed By: mweststrate

Differential Revision: D19499587

fbshipit-source-id: 5468fffcc0265bb122cf149f49b9af86ddd3c84e
2020-01-22 07:49:48 -08:00
John Knox
e47f6a4ebe Remove duplicated "total" time logging
Summary: This is useless as it's logged as key: total anyway.

Reviewed By: mweststrate

Differential Revision: D19501099

fbshipit-source-id: 08dcf76fbab8065356b34c6ed1524ef83703c46c
2020-01-22 07:46:58 -08:00
John Knox
06218b13f8 Remove NEW_CLIENT_SANITY_CHECK
Summary: This isn't needed anymore as it's taken care of by the Client class when it fails to find it's own matching device.

Reviewed By: mweststrate

Differential Revision: D19499929

fbshipit-source-id: e54dea6e680a9fa3cd3572cdd65434922d51c4ea
2020-01-22 07:46:58 -08:00
Michel Weststrate
a3a3db5363 Improve stats collection for plugins in the background
Summary:
This diff improves two things:
1. Stats are now gathered on every `trackUsage` tick, rather than only when there is a selection
2. The stats now include a delta to compare it with the previous tick

Reviewed By: passy

Differential Revision: D19514231

fbshipit-source-id: 1854c1dc03c63a03db8c7040c185d2629e1b9ea2
2020-01-22 07:10:52 -08:00
Anton Nikolaev
7c03366136 Setitngs: button to reset Android SDK path to default
Summary: Added button to reset Android SDK path to default + fixed default SDK path on Windows which I introduced in a previous diff and which before might be wrongly resolved to roaming data instead of local data folder

Reviewed By: jknoxville

Differential Revision: D19498899

fbshipit-source-id: e10865b528f55ea6b56873bdf9369c4b60dca89f
2020-01-21 10:28:38 -08:00
Timur Valiev
4f63d6435f JS app launcher ui bugfix
Summary: JS App launcher wasn't appearing when no android emulators are installed

Reviewed By: nikoant

Differential Revision: D19499107

fbshipit-source-id: d062d4781747b77b708306b592ea66a1a67b93e4
2020-01-21 09:03:35 -08:00
Mateo Silguero
b0caaa7254 persist favorites queries at localStorage. show parsed values from databases. (#738)
Summary:
on databases section, queries marked as "favorite", are not persisted. With this changes,  they will be saved at localStorage and persist from refresh.

Improves on parse json values from databases.

## Changelog
Pull Request resolved: https://github.com/facebook/flipper/pull/738

Reviewed By: mweststrate

Differential Revision: D19330218

Pulled By: passy

fbshipit-source-id: 673b2d0bbee9b3ef4544defaca0e3c5547a992a2
2020-01-21 08:37:53 -08:00
Anton Nikolaev
e178221f44 Default path to Android SDK is wrong on Windows
Summary:
Default path for Android SDK was set to "/opt/android_sdk" disregard the current OS.
On Windows it should be set to "%localappdata%\android\sdk" instead.

Reviewed By: passy

Differential Revision: D19496646

fbshipit-source-id: 86ce7df74b98eef5b7b0a556a5359bec8cb0dbc4
2020-01-21 08:04:50 -08:00
Anton Nikolaev
35d62e70cb Analytics: log both shown and suppressed warnings
Summary: A small enhancement for the Doctor usage report

Reviewed By: passy

Differential Revision: D19496887

fbshipit-source-id: 1f0efb0eb29e2efce60ba4fca3bd6fdc062406ea
2020-01-21 06:41:47 -08:00
Michel Weststrate
94e2230583 Animated chevrons in sidebar
Summary: Sidebar collapsing finally feels right! Also made the sidebar a little bit less cramped by widening it.

Reviewed By: passy

Differential Revision: D19496743

fbshipit-source-id: 8dd93afc8ef542781b1c1598623d1c9cef9b6b66
2020-01-21 06:29:41 -08:00
Michel Weststrate
02e02338e8 Fix Mac plugins not showing up
Summary:
Fixed a bunch of issue in the new sidebar navigation
1) Stop filtering out the host device (collapse it by default instead)
2) Show offline status in title for more clarity
3) Stop sorting devices by name, so that they are sorted in connection order, which feels more consistent
4) Group uninitialised clients together, rather than showing them under every device
5) Rename "device" section to "device plugins", and hide it if there are none
6) some minor margin fixes

Reviewed By: jknoxville

Differential Revision: D19495950

fbshipit-source-id: 513d0a1171016bd3077641f614a6554a132f8180
2020-01-21 04:54:25 -08:00
Timur Valiev
ff26deedd7 Add default search term in Searchable
Summary: Add a way to provide default search term; similar to default filters

Reviewed By: mweststrate

Differential Revision: D19449561

fbshipit-source-id: 6845ae5d2e058fe68974ac7aa8fd7b45814c2002
2020-01-20 10:19:38 -08:00
greenkeeper[bot]
fd83a751c7 Update jsdom in group plugins to the latest version � (#753)
Summary:
## The devDependency [jsdom](https://github.com/jsdom/jsdom) was updated from `15.2.1` to `16.0.1`.
This version is **not covered** by your **current version range**.

If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update.

 ---

**Publisher:** [domenic](https://www.npmjs.com/~domenic)
**License:** MIT

<details>
<summary>Release Notes for Version 16.0.1</summary>

<ul>
<li>Fixed Node v10 and v11 support when <code>runScripts</code> was set.</li>
<li>Fixed the behavior when changing an <code>&lt;input&gt;</code>'s <code>type=""</code> attribute.</li>
<li>Fixed input validation behavior for <code>&lt;input type="range"&gt;</code> when <code>max=""</code> is less than <code>min=""</code>.</li>
</ul>
</details>

<details>
<summary>Commits</summary>
<p>The new version differs by 52 commits.</p>
<ul>
<li><a href="afc85c80df"><code>afc85c8</code></a> <code>Version 16.0.1</code></li>
<li><a href="6472db466a"><code>6472db4</code></a> <code>Fix Node v10 and Node v11 support</code></li>
<li><a href="16c9856649"><code>16c9856</code></a> <code>Improved "expected fail" messages for web platform tests</code></li>
<li><a href="e2dbad8183"><code>e2dbad8</code></a> <code>Add support for  reverse range validation</code></li>
<li><a href="94b40d3ebf"><code>94b40d3</code></a> <code>Implement  type state switch logic</code></li>
<li><a href="c292572cd7"><code>c292572</code></a> <code>Add comment about radio button activation muddiness</code></li>
<li><a href="52109d5b23"><code>52109d5</code></a> <code>Clean up  typeMismatch constraint validation</code></li>
<li><a href="4a374e5b99"><code>4a374e5</code></a> <code>Clean up _defaultStepBase in </code></li>
<li><a href="92e9adbf41"><code>92e9adb</code></a> <code>Consistently use ._value for constraint validation</code></li>
<li><a href="11664cabd4"><code>11664ca</code></a> <code>More consistent applicability checking for  attributes</code></li>
<li><a href="b097c0a000"><code>b097c0a</code></a> <code>Roll Web Platform Tests</code></li>
<li><a href="d240291edb"><code>d240291</code></a> <code>Remove unnecessary dependencies</code></li>
<li><a href="902b69e15a"><code>902b69e</code></a> <code>Version 16.0.0</code></li>
<li><a href="020539ed3f"><code>020539e</code></a> <code>Remove document.origin and add window.origin</code></li>
<li><a href="678141f58e"><code>678141f</code></a> <code>Use mutability as a measure for valueMissing constraint</code></li>
</ul>
<p>There are 52 commits in total.</p>
<p>See the <a href="c3f0f2756b...afc85c80df">full diff</a></p>
</details>

 ---

<details>
  <summary>FAQ and help</summary>

  There is a collection of [frequently asked questions](https://greenkeeper.io/faq.html). If those don’t help, you can always [ask the humans behind Greenkeeper](https://github.com/greenkeeperio/greenkeeper/issues/new).
</details>

 ---

Your [Greenkeeper](https://greenkeeper.io) bot 🌴
Pull Request resolved: https://github.com/facebook/flipper/pull/753

Reviewed By: nikoant

Differential Revision: D19469099

Pulled By: passy

fbshipit-source-id: 78de63ebb15843b27818dcbcbbe78ce5d5964ae9
2020-01-20 07:55:37 -08:00
Michel Weststrate
c8ebb7caaf Fix layout of clear icon
Summary:
Flipper clear icon was hidden, this fixes it

Also fixed a null pointer exception that would occur when clearing search with the keyboard, and no filters were active

Reviewed By: passy

Differential Revision: D19445833

fbshipit-source-id: 213c28dc8c1e295018e6318f86604d96d2a9b75c
2020-01-17 06:30:10 -08:00
Anton Nikolaev
73e0f9035a Pass plugins via ipc instead of env to fix loading of plugins on Windows
Summary: Fixed the issue with empty plugin list on Windows because of env var length limit

Reviewed By: passy

Differential Revision: D19411466

fbshipit-source-id: 7fa390f7dd342e23e965b2135fbeb8e88e5857ef
2020-01-17 03:50:13 -08:00
John Knox
2f3b9e1be9 Increase line height of markdown text
Summary: Lines were a bit squashed together. Taken the value from workplace, as that's the style we've been copying so far.

Reviewed By: priteshrnandgaonkar

Differential Revision: D19430279

fbshipit-source-id: 52cc8167d6acaa6af42caaa67a693b5fda492701
2020-01-16 09:39:52 -08:00
John Knox
ce96e5efc2 Use chevron-right for collapsed state
Summary: I find this much more intuitive that it's unexpanded, than a down arrow.

Reviewed By: mweststrate

Differential Revision: D19429007

fbshipit-source-id: 7b414aeee846a864641941b6837770252cb298de
2020-01-16 08:15:55 -08:00
John Knox
c17cd0f11e Add isForeground to ping events
Summary:
I want to make ping events fire when in background or foreground.
But doing that now could mess with some stats.
Setting this up so we have the data. If it comes to it, after this has been going a while,
we can add a filter to the existing queries for "isForeground=true" to preserve their behaviour.

Reviewed By: mweststrate

Differential Revision: D19428926

fbshipit-source-id: 7c175e9936dce52a59d17995dae61a82d23687f8
2020-01-16 08:15:54 -08:00
Michel Weststrate
e7780530df Fixed #647, urls are not editable in shared preferences
Summary:
As reported in https://github.com/facebook/flipper/issues/647 urls are not editable in our generic data inspector, as clicking an url will immediately open it, rather than going to edit mode.

This diff fixes that by appending an edit icon to URL previews.

Reviewed By: jknoxville

Differential Revision: D19428925

fbshipit-source-id: 428e8e4c10fb472792b61986d915658f7581c38d
2020-01-16 06:53:15 -08:00
Michel Weststrate
db9c41303d Introduce Flipper Tic Tac Toe example
Summary:
This Diff introduces an example for how to develop a React Native pure JS plugin and will be used in the docs. See the attached project as demo. The RN sources for the plugin component are:

```
import React, {useState, useEffect} from "react";
import {
  StyleSheet,
  View,
  Text,
  Button,
} from 'react-native';

import {addPlugin} from "react-native-flipper";

const initialState = {
  cells: [" ", " ", " "," ", " ", " "," ", " ", " ",],
  turn: ' ',
  winner: ' ',
}

export default function FlipperTicTacToe() {
  const [status, setStatus] = useState("Waiting for Flipper Desktop Player...")
  const [gameState, setGameState] = useState(initialState);
  const [connection, setConnection] = useState(null);

  useEffect(() => {
    addPlugin({
      getId() {
        return 'ReactNativeTicTacToe';
      },
      onConnect(connection) {
        setStatus("Desktop player present");
        setConnection(connection);

        // listen to updates
        connection.receive('SetState', (gameState, responder) => {
          if (gameState.winner !== " ") {
            setStatus(`Winner is ${gameState.winner}! Waiting for a new game...`);
          } else {
            setStatus(gameState.turn === "X" ? "Your turn...": "Awaiting desktop players turn...");
          }
          setGameState(gameState);
          responder.success();
        })

        // request initial state
        connection.send('GetState');
      },
      onDisconnect() {
        setConnection(null);
        setStatus("Desktop player gone...");
      }
    })
  }, []);

  return (
    <View style={styles.container}>
      <Text style={styles.title}>Flipper Tic-Tac-Toe</Text>
      <Text>{status}</Text>
      <View style={styles.board}>
        {gameState.cells.map((state, idx) =>
          <View
            key={idx}
            style={styles.cell}>
            <Button
              title={state}
              disabled={gameState.turn !== 'X' || state !== ' '}
              onPress={() => {
                connection.send('XMove', { move: idx });
              }}
            />
          </View>
        )}
      </View>
    </View>
  )
}

// Omitted styling

```

Reviewed By: passy

Differential Revision: D19410138

fbshipit-source-id: 93266a1ef7b86dcf043a744c3563dab0c585c8fd
2020-01-16 05:06:22 -08:00
Michel Weststrate
08e2d54f62 Make sure callbacks are not reused and reloading works
Summary:
This diff is part of the bigger task T60496135

This diff changes the RN support from crude to decent citizen, making sure we don't recycle callbacks over the bridge, use subscriptions were possible, and making sure connecting, disconnecting, etc works correctly

For example, connect and disconnect hooks should work.

Finally, throw in hot reloading into the mix, which causes the registerPlugin to be triggered another time, without the old one every been unloaded.
This should trigger a new 'onConnect' on the client, to make sure it can restore any state / subscriptions necessary, even though the never disappeared in the Java world.

These cases should all be handled well.

Reviewed By: jknoxville

Differential Revision: D19347330

fbshipit-source-id: de64a08f4043f01528c794430ccc3c717abf0180
2020-01-16 05:06:22 -08:00
Michel Weststrate
c7158f4517 Make it possible to write JS only plugins
Summary:
This diff is part of the bigger task T60496135

This diff is based on D18706643, extracting only the react native module parts

It implements the entire Android client api for JavaScript, so that there is feature parity. However this implementation is happy path only, and edge cases will be handled in separate diffs

Reviewed By: jknoxville

Differential Revision: D19310265

fbshipit-source-id: 589716fe059952bdde98df84ed250c5c6feaa118
2020-01-16 05:06:22 -08:00
John Knox
ce0d038420 Regularly report currently starred plugins
Summary: Gives us visibility on how many / which plugins, people are starring.

Reviewed By: mweststrate

Differential Revision: D19408420

fbshipit-source-id: cb08e2a5f9d1b31ea03e6f7df8fa61db26611e91
2020-01-15 08:07:30 -08:00
greenkeeper[bot]
d1ec9797bf Greenkeeper/@types/react 16.9.17 (#745)
Summary:
Close https://github.com/facebook/flipper/issues/669
Pull Request resolved: https://github.com/facebook/flipper/pull/745

Reviewed By: mweststrate

Differential Revision: D19408457

Pulled By: passy

fbshipit-source-id: 2cf380b48d80e719a36c6f9ea8c10410185eebb1
2020-01-15 05:05:28 -08:00
Michel Weststrate
03c1bcad11 Log users out if tokens have expired, force FB users to login on startup
Summary:
Currently there are several issues caused by internal users not being logged in. E.g. the rating button doesn't work, flipper traces can't be uploaded etc.

However, the fact that the user is not logged in, is not reflected in the UI if the user has an API key, which is outdated.

See also the scuba query in the linked tasks; this happens for quite some users.

This diff fixes two things:
1. If auth tokens are invalid, this is properly reflected in the UI
2. If at startup the profile can't be loaded, a popup will be shown to log in.

Differential Revision: D19392735

fbshipit-source-id: 2be7c577ead671df16c626c0636e89245cebab14
2020-01-15 04:34:35 -08:00
John Knox
a96931c43f Enhance time-spent tracking
Summary:
Previously, at 1-minute intervals, if the flipper window was focused on, it would report the currently active plugin.
We'd sum all those "ping" events and that would approximate the number of full minutes spent in total across all users.
It's quite coarse grained, if you're focused on the window for 30 seconds, there's a 50% change your ping will get used.
While being reasonable across many users, it doesn't allow analysis like how many plugins do people typically use in a session, because we probably won't see all the plugins they use.

New approach, for every minute flipper is open, report the focused and unfocused time spent in each plugin, as well as the total across all plugins.
This should give us the previous data but with much more precision.

Should be especially helpful for plugins with low numbers of users, you typically interact with emulators while using a plugin, so it's not continually in focus, so you miss a lot of usage events.

enhance_bladerunner

Reviewed By: nikoant

Differential Revision: D19392796

fbshipit-source-id: af9244e993edff9b381144ca587c3a77fdf8c98a
2020-01-14 10:27:17 -08:00
Michel Weststrate
7513d36689 Make sure sidebar detects fresh plugins
Summary: New plugins are not detected because the available plugins are stored in the mutable Client class, so we have to subscribe to the event emitter

Reviewed By: passy

Differential Revision: D19347654

fbshipit-source-id: 68af63bf9bbe6319b2994dc8d07ca5eb27bb33b4
2020-01-14 09:17:24 -08:00