Track device register and unregister

Summary:
Now we get one event for every time an android or iOS device is detected by flipper.
This is different from a successfull connection. E.g. it may not have any flipper-enabled apps running.

Reviewed By: danielbuechele

Differential Revision: D13377316

fbshipit-source-id: 80e42ab0ae1c2ab50d4bec732a0fa86fcd941991
This commit is contained in:
John Knox
2018-12-10 02:19:42 -08:00
committed by Facebook Github Bot
parent f7ddf3b496
commit 140f846797
2 changed files with 46 additions and 28 deletions

View File

@@ -51,7 +51,7 @@ window.addEventListener('beforeunload', () => {
portForwarders.forEach(process => process.kill());
});
function queryDevices(store: Store): Promise<void> {
function queryDevices(store: Store, logger: Logger): Promise<void> {
const {connections} = store.getState();
const currentDeviceIDs: Set<string> = new Set(
connections.devices
@@ -65,6 +65,12 @@ function queryDevices(store: Store): Promise<void> {
if (currentDeviceIDs.has(udid)) {
currentDeviceIDs.delete(udid);
} else {
logger.track('usage', 'register-device', {
os: 'iOS',
type: type,
name: name,
serial: udid,
});
store.dispatch({
type: 'REGISTER_DEVICE',
payload: new IOSDevice(udid, type, name),
@@ -73,6 +79,9 @@ function queryDevices(store: Store): Promise<void> {
}
if (currentDeviceIDs.size > 0) {
currentDeviceIDs.forEach(id =>
logger.track('usage', 'unregister-device', {os: 'iOS', serial: id}),
);
store.dispatch({
type: 'UNREGISTER_DEVICES',
payload: currentDeviceIDs,
@@ -123,10 +132,10 @@ export default (store: Store, logger: Logger) => {
if (process.platform !== 'darwin') {
return;
}
queryDevices(store)
queryDevices(store, logger)
.then(() => {
const simulatorUpdateInterval = setInterval(() => {
queryDevices(store).catch(err => {
queryDevices(store, logger).catch(err => {
console.error(err);
clearInterval(simulatorUpdateInterval);
});