Skip to content

Commit 58ff83f

Browse files
authored
Merge pull request Expensify#75439 from callstack-internal/feat/sentry-search-modal-metric
[Sentry] Add telemetry spans for search router open event
2 parents c863f8c + fc63f1b commit 58ff83f

4 files changed

Lines changed: 22 additions & 0 deletions

File tree

src/CONST/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1659,6 +1659,7 @@ const CONST = {
16591659
TAG_ACTIVE_POLICY: 'active_policy_id',
16601660
SPAN_OPEN_REPORT: 'ManualOpenReport',
16611661
SPAN_APP_STARTUP: 'ManualAppStartup',
1662+
SPAN_OPEN_SEARCH_ROUTER: 'ManualOpenSearchRouter',
16621663
},
16631664
PRIORITY_MODE: {
16641665
GSD: 'gsd',

src/components/Search/SearchAutocompleteList.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import {
4444
} from '@libs/SearchQueryUtils';
4545
import {getDatePresets, getHasOptions} from '@libs/SearchUIUtils';
4646
import StringUtils from '@libs/StringUtils';
47+
import {endSpan} from '@libs/telemetry/activeSpans';
4748
import Timing from '@userActions/Timing';
4849
import CONST, {CONTINUATION_DETECTION_SEARCH_FILTER_KEYS} from '@src/CONST';
4950
import ONYXKEYS from '@src/ONYXKEYS';
@@ -120,6 +121,7 @@ const defaultListOptions = {
120121
const setPerformanceTimersEnd = () => {
121122
Timing.end(CONST.TIMING.OPEN_SEARCH);
122123
Performance.markEnd(CONST.TIMING.OPEN_SEARCH);
124+
endSpan(CONST.TELEMETRY.SPAN_OPEN_SEARCH_ROUTER);
123125
};
124126

125127
function isSearchQueryListItem(listItem: UserListItemProps<OptionData> | SearchQueryListItemProps): listItem is SearchQueryListItemProps {

src/components/Search/SearchRouter/SearchButton.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import useLocalize from '@hooks/useLocalize';
88
import useTheme from '@hooks/useTheme';
99
import useThemeStyles from '@hooks/useThemeStyles';
1010
import Performance from '@libs/Performance';
11+
import {startSpan} from '@libs/telemetry/activeSpans';
1112
import {callFunctionIfActionIsAllowed} from '@userActions/Session';
1213
import Timing from '@userActions/Timing';
1314
import CONST from '@src/CONST';
@@ -39,6 +40,10 @@ function SearchButton({style, shouldUseAutoHitSlop = false}: SearchButtonProps)
3940

4041
Timing.start(CONST.TIMING.OPEN_SEARCH);
4142
Performance.markStart(CONST.TIMING.OPEN_SEARCH);
43+
startSpan(CONST.TELEMETRY.SPAN_OPEN_SEARCH_ROUTER, {
44+
name: CONST.TELEMETRY.SPAN_OPEN_SEARCH_ROUTER,
45+
op: CONST.TELEMETRY.SPAN_OPEN_SEARCH_ROUTER,
46+
});
4247

4348
openSearchRouter();
4449
})}

src/components/Search/SearchRouter/SearchRouterContext.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ import React, {useContext, useEffect, useMemo, useRef, useState} from 'react';
22
import type {AnimatedTextInputRef} from '@components/RNTextInput';
33
import isSearchTopmostFullScreenRoute from '@libs/Navigation/helpers/isSearchTopmostFullScreenRoute';
44
import {navigationRef} from '@libs/Navigation/Navigation';
5+
import {startSpan} from '@libs/telemetry/activeSpans';
56
import {close} from '@userActions/Modal';
7+
import CONST from '@src/CONST';
68
import NAVIGATORS from '@src/NAVIGATORS';
79
import SCREENS from '@src/SCREENS';
810
import type ChildrenProps from '@src/types/utils/ChildrenProps';
@@ -92,6 +94,16 @@ function SearchRouterContextProvider({children}: ChildrenProps) {
9294
}
9395
};
9496

97+
const startSearchRouterOpenSpan = () => {
98+
startSpan(CONST.TELEMETRY.SPAN_OPEN_SEARCH_ROUTER, {
99+
name: CONST.TELEMETRY.SPAN_OPEN_SEARCH_ROUTER,
100+
op: CONST.TELEMETRY.SPAN_OPEN_SEARCH_ROUTER,
101+
attributes: {
102+
trigger: 'keyboard',
103+
},
104+
});
105+
};
106+
95107
// There are callbacks that live outside of React render-loop and interact with SearchRouter
96108
// So we need a function that is based on ref to correctly open/close it
97109
// When user is on `/search` page we focus the Input instead of showing router
@@ -104,11 +116,13 @@ function SearchRouterContextProvider({children}: ChildrenProps) {
104116
if (searchPageInputRef.current.isFocused()) {
105117
searchPageInputRef.current.blur();
106118
} else {
119+
startSearchRouterOpenSpan();
107120
searchPageInputRef.current.focus();
108121
}
109122
} else if (searchRouterDisplayedRef.current) {
110123
closeSearchRouter();
111124
} else {
125+
startSearchRouterOpenSpan();
112126
openSearchRouter();
113127
}
114128
};

0 commit comments

Comments
 (0)