Differentiate enabled and disabled selected plugins in analytics

Summary: As we now allow selection of disabled plugins we need to track plugin usage a bit smarter. We'll add a new field "pluginEnabled" to the logged messages to indicate whether selected plugin is enabled or not.

Reviewed By: cekkaewnumchai

Differential Revision: D29455248

fbshipit-source-id: 32c79e0961653edc8f4cc89adecc2662b37cbd7b
This commit is contained in:
Anton Nikolaev
2021-06-29 13:00:18 -07:00
committed by Facebook GitHub Bot
parent 142859f0ed
commit 4ad7a70ee3
4 changed files with 36 additions and 28 deletions

View File

@@ -15,6 +15,7 @@ const layoutSelection: SelectionInfo = {
plugin: 'Layout',
pluginName: 'flipper-plugin-layout',
pluginVersion: '0.0.0',
pluginEnabled: true,
app: 'Facebook',
device: 'test device',
deviceName: 'test device',

View File

@@ -84,15 +84,8 @@ export default (store: Store, logger: Logger) => {
noTimeBudgetWarns: true,
runSynchronously: true,
},
(state) => ({
connections: state.connections,
loadedPlugins: state.plugins.loadedPlugins,
}),
(state, store) => {
const selection = getSelectionInfo(
state.connections,
state.loadedPlugins,
);
getSelectionInfo,
(selection, store) => {
const time = Date.now();
store.dispatch(selectionChanged({selection, time}));
},

View File

@@ -88,6 +88,7 @@ describe('info', () => {
"deviceType": "physical",
"os": "Android",
"plugin": "Network",
"pluginEnabled": true,
"pluginName": "flipper-plugin-network",
"pluginVersion": "0.78.0",
}
@@ -102,6 +103,7 @@ describe('info', () => {
"deviceType": "physical",
"os": "Android",
"plugin": "Inspector",
"pluginEnabled": true,
"pluginName": "flipper-plugin-inspector",
"pluginVersion": "0.59.0",
}

View File

@@ -29,6 +29,7 @@ export type SelectionInfo = {
plugin: string | null;
pluginName: string | null;
pluginVersion: string | null;
pluginEnabled: boolean | null;
app: string | null;
os: string | null;
device: string | null;
@@ -47,6 +48,7 @@ let selection: SelectionInfo = {
plugin: null,
pluginName: null,
pluginVersion: null,
pluginEnabled: null,
app: null,
os: null,
device: null,
@@ -66,12 +68,9 @@ export default (store: Store, _logger: Logger) => {
runSynchronously: true,
fireImmediately: true,
},
(state) => ({
connections: state.connections,
loadedPlugins: state.plugins.loadedPlugins,
}),
(state, _store) => {
selection = getSelectionInfo(state.connections, state.loadedPlugins);
getSelectionInfo,
(newSelection, _store) => {
selection = newSelection;
},
);
};
@@ -127,25 +126,38 @@ export function stringifyInfo(info: Info): string {
return lines.join('\n');
}
export function getSelectionInfo(
connections: State['connections'],
loadedPlugins: State['plugins']['loadedPlugins'],
): SelectionInfo {
const selectedApp = connections.selectedApp;
export function getSelectionInfo({
plugins: {clientPlugins, devicePlugins, loadedPlugins},
connections: {
selectedApp,
selectedPlugin,
enabledDevicePlugins,
enabledPlugins,
selectedDevice,
},
}: State): SelectionInfo {
const clientIdParts = selectedApp ? deconstructClientId(selectedApp) : null;
const loadedPlugin = connections.selectedPlugin
? loadedPlugins.get(connections.selectedPlugin)
const loadedPlugin = selectedPlugin
? loadedPlugins.get(selectedPlugin)
: null;
const pluginEnabled =
!!selectedPlugin &&
((enabledDevicePlugins.has(selectedPlugin) &&
devicePlugins.has(selectedPlugin)) ||
(clientIdParts &&
enabledPlugins[clientIdParts.app]?.includes(selectedPlugin) &&
clientPlugins.has(selectedPlugin)));
return {
plugin: connections.selectedPlugin || null,
plugin: selectedPlugin || null,
pluginName: loadedPlugin?.name || null,
pluginVersion: loadedPlugin?.version || null,
pluginEnabled,
app: clientIdParts?.app || null,
device: connections.selectedDevice?.title || null,
device: selectedDevice?.title || null,
deviceName: clientIdParts?.device || null,
deviceSerial: connections.selectedDevice?.serial || null,
deviceType: connections.selectedDevice?.deviceType || null,
os: connections.selectedDevice?.os || null,
archived: connections.selectedDevice?.isArchived || false,
deviceSerial: selectedDevice?.serial || null,
deviceType: selectedDevice?.deviceType || null,
os: selectedDevice?.os || null,
archived: selectedDevice?.isArchived || false,
};
}