ADd tracking for framework event debugging

Summary: ^

Reviewed By: lblasa

Differential Revision: D48645332

fbshipit-source-id: faf558c592b00a69586970edea407d8997a54699
This commit is contained in:
Luke De Feo
2023-08-24 08:14:31 -07:00
committed by Facebook GitHub Bot
parent c0347ec830
commit a275235a7c
4 changed files with 30 additions and 2 deletions

View File

@@ -56,14 +56,14 @@ type FrameworkEventAttribution = Stacktrace | Reason | UpstreamEvent;
export type FrameworkEvent = { export type FrameworkEvent = {
id: number; id: number;
treeId?: Id; treeId?: Id; //todo should be mandatory once ios implements this
nodeId: Id; nodeId: Id;
type: FrameworkEventType; type: FrameworkEventType;
timestamp: number; timestamp: number;
payload?: JsonObject; payload?: JsonObject;
duration?: number; duration?: number;
attribution?: FrameworkEventAttribution; attribution?: FrameworkEventAttribution;
thread?: 'main' | string; thread?: 'main' | string; //todo should be mandatory once ios implements this
}; };
export type InitEvent = { export type InitEvent = {

View File

@@ -27,6 +27,7 @@ import {eventTypeToName} from './sidebar/inspector/FrameworkEventsInspector';
import {startCase} from 'lodash'; import {startCase} from 'lodash';
import {Visualization2D} from './visualizer/Visualization2D'; import {Visualization2D} from './visualizer/Visualization2D';
import {getNode} from '../utils/map'; import {getNode} from '../utils/map';
import {tracker} from '../utils/tracker';
export function FrameworkEventsTable({ export function FrameworkEventsTable({
nodeId, nodeId,
@@ -45,6 +46,7 @@ export function FrameworkEventsTable({
); );
useEffect(() => { useEffect(() => {
tracker.track('framework-event-table-opened', {});
instance.uiActions.onSelectNode(undefined, 'tree'); instance.uiActions.onSelectNode(undefined, 'tree');
if (nodeId != null) { if (nodeId != null) {
managerRef.current?.resetFilters(); managerRef.current?.resetFilters();
@@ -77,6 +79,12 @@ export function FrameworkEventsTable({
const onSelectRow = useCallback( const onSelectRow = useCallback(
(event: FrameworkEvent | undefined): void => { (event: FrameworkEvent | undefined): void => {
if (event != null) {
tracker.track('framework-event-table-row-selected', {
eventType: event.type,
});
}
instance.uiActions.onFocusNode(event?.nodeId); instance.uiActions.onFocusNode(event?.nodeId);
}, },
[instance.uiActions], [instance.uiActions],

View File

@@ -37,6 +37,7 @@ import {FilterOutlined, TableOutlined} from '@ant-design/icons';
import {ViewMode} from '../../../DesktopTypes'; import {ViewMode} from '../../../DesktopTypes';
import {MultiSelectableDropDownItem} from '../../shared/MultiSelectableDropDownItem'; import {MultiSelectableDropDownItem} from '../../shared/MultiSelectableDropDownItem';
import {formatDuration, formatTimestampMillis} from '../../../utils/timeUtils'; import {formatDuration, formatTimestampMillis} from '../../../utils/timeUtils';
import {tracker} from '../../../utils/tracker';
type Props = { type Props = {
node: ClientNode; node: ClientNode;
@@ -97,6 +98,14 @@ export const FrameworkEventsInspector: React.FC<Props> = ({
{(showEventTypesSection || showThreadsSection) && ( {(showEventTypesSection || showThreadsSection) && (
<Dropdown <Dropdown
overlayStyle={{minWidth: 200}} overlayStyle={{minWidth: 200}}
onVisibleChange={(visible) => {
if (visible) {
tracker.track(
'framework-event-timeline-filters-adjusted',
{},
);
}
}}
overlay={ overlay={
<Layout.Container <Layout.Container
gap="small" gap="small"
@@ -179,6 +188,9 @@ export const FrameworkEventsInspector: React.FC<Props> = ({
onClick={(current) => { onClick={(current) => {
const idx = parseInt(current, 10); const idx = parseInt(current, 10);
const event = filteredEvents[idx]; const event = filteredEvents[idx];
tracker.track('framework-event-timeline-event-selected', {
eventType: event.type,
});
showExtra?.( showExtra?.(
'Event details', 'Event details',
<EventDetails <EventDetails

View File

@@ -30,6 +30,14 @@ type TrackerEvents = {
eventType: FrameworkEventType; eventType: FrameworkEventType;
monitored: boolean; monitored: boolean;
}; };
'framework-event-table-row-selected': {
eventType: FrameworkEventType;
};
'framework-event-table-opened': {};
'framework-event-timeline-filters-adjusted': {};
'framework-event-timeline-event-selected': {
eventType: FrameworkEventType;
};
'search-term-updated': { 'search-term-updated': {
searchTerm: string; searchTerm: string;
}; };