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:
committed by
Facebook GitHub Bot
parent
142859f0ed
commit
4ad7a70ee3
@@ -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',
|
||||
|
||||
@@ -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}));
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user