/**
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 */

import {Logger} from 'flipper-common';

export type OpenPluginParams = {
  pluginId: string;
  client: string | undefined;
  devices: string[];
  payload: string | undefined;
};

export type DeeplinkInteractionState =
  | 'INIT'
  | 'ERROR'
  | 'PLUGIN_LIGHTHOUSE_BAIL'
  | 'PLUGIN_STATUS_BAIL'
  | 'PLUGIN_DEVICE_BAIL'
  | 'PLUGIN_CLIENT_BAIL'
  | 'PLUGIN_DEVICE_SELECTION_BAIL'
  | 'PLUGIN_CLIENT_SELECTION_BAIL'
  | 'PLUGIN_DEVICE_UNSUPPORTED'
  | 'PLUGIN_CLIENT_UNSUPPORTED'
  | 'PLUGIN_OPEN_SUCCESS';

export type DeeplinkInteraction = {
  state: DeeplinkInteractionState;
  errorMessage?: string;
  plugin?: OpenPluginParams;
  extra?: object;
};

export function track(
  logger: Logger,
  query: string,
  interaction: DeeplinkInteraction,
) {
  logger.track(
    'usage',
    'deeplink',
    {
      ...interaction,
      query,
    },
    interaction.plugin?.pluginId,
  );
}

/**
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 */

import {Logger} from 'flipper-common';

export type OpenPluginParams = {
  pluginId: string;
  client: string | undefined;
  devices: string[];
  payload: string | undefined;
};

export type DeeplinkInteractionState =
  | 'INIT'
  | 'ERROR'
  | 'PLUGIN_LIGHTHOUSE_BAIL' // User did not connect to VPN/Lighthouse when asked
  | 'PLUGIN_STATUS_BAIL' // User did not install the plugin (has `extra` attribute with more information)
  | 'PLUGIN_DEVICE_BAIL' // User did not launch a new device
  | 'PLUGIN_CLIENT_BAIL' // User did not launch a supported app
  | 'PLUGIN_DEVICE_SELECTION_BAIL' // User closed dialogue asking to select one of many devices
  | 'PLUGIN_CLIENT_SELECTION_BAIL' // User closed dialogue asking to select one of many apps
  | 'PLUGIN_DEVICE_UNSUPPORTED' // The device did not match the requirements specified in the deeplink URL
  | 'PLUGIN_CLIENT_UNSUPPORTED' // The already opened app did not match the requirements specified in the deeplink URL
  | 'PLUGIN_OPEN_SUCCESS'; // Everything is awesome

export type DeeplinkInteraction = {
  state: DeeplinkInteractionState;
  errorMessage?: string;
  plugin?: OpenPluginParams;
  extra?: object;
};

export function track(
  logger: Logger,
  query: string,
  interaction: DeeplinkInteraction,
) {
  logger.track(
    'usage',
    'deeplink',
    {
      ...interaction,
      query,
    },
    interaction.plugin?.pluginId,
  );
}

Add comments for interaction events
Add comments for interaction events

Summary: Per title

Reviewed By: mweststrate

Differential Revision: D32171224

fbshipit-source-id: b7610e8c10674d56e75468f46a3fd0664d70b4aa
