Skip to content

Commit c382002

Browse files
committed
Add reasonAttributes to ActivityIndicator usage sites
1 parent 9ba3c5d commit c382002

9 files changed

Lines changed: 45 additions & 6 deletions

File tree

src/components/AddPlaidBankAccount.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import useThemeStyles from '@hooks/useThemeStyles';
88
import {handlePlaidError, openPlaidBankAccountSelector, openPlaidBankLogin, setPlaidEvent} from '@libs/actions/BankAccounts';
99
import KeyboardShortcut from '@libs/KeyboardShortcut';
1010
import Log from '@libs/Log';
11+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
1112
import {handleRestrictedEvent} from '@userActions/App';
1213
import CONST from '@src/CONST';
1314
import ONYXKEYS from '@src/ONYXKEYS';
@@ -229,9 +230,13 @@ function AddPlaidBankAccount({
229230
}
230231

231232
if (plaidData?.isLoading) {
233+
const reasonAttributes: SkeletonSpanReasonAttributes = {context: 'AddPlaidBankAccount', isLoading: !!plaidData.isLoading};
232234
return (
233235
<View style={[styles.flex1, styles.alignItemsCenter, styles.justifyContentCenter]}>
234-
<ActivityIndicator size={CONST.ACTIVITY_INDICATOR_SIZE.LARGE} />
236+
<ActivityIndicator
237+
size={CONST.ACTIVITY_INDICATOR_SIZE.LARGE}
238+
reasonAttributes={reasonAttributes}
239+
/>
235240
</View>
236241
);
237242
}

src/components/AddToWalletButton/index.native.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import useThemeStyles from '@hooks/useThemeStyles';
1010
import {getPaymentMethods} from '@libs/actions/PaymentMethods';
1111
import getPlatform from '@libs/getPlatform';
1212
import Log from '@libs/Log';
13+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
1314
import {checkIfWalletIsAvailable, handleAddCardToWallet, isCardInWallet} from '@libs/Wallet/index';
1415
import CONST from '@src/CONST';
1516
import type AddToWalletButtonProps from './types';
@@ -91,7 +92,13 @@ function AddToWalletButton({card, cardHolderName, cardDescription, style}: AddTo
9192
}
9293

9394
if (isLoading) {
94-
return <ActivityIndicator size={CONST.ACTIVITY_INDICATOR_SIZE.LARGE} />;
95+
const reasonAttributes: SkeletonSpanReasonAttributes = {context: 'AddToWalletButton', isLoading};
96+
return (
97+
<ActivityIndicator
98+
size={CONST.ACTIVITY_INDICATOR_SIZE.LARGE}
99+
reasonAttributes={reasonAttributes}
100+
/>
101+
);
95102
}
96103

97104
if (isInWallet) {

src/components/PlaidLink/index.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import ActivityIndicator from '@components/ActivityIndicator';
66
import useThemeStyles from '@hooks/useThemeStyles';
77
import {isMobileSafari, isSafari} from '@libs/Browser';
88
import Log from '@libs/Log';
9+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
910
import CONST from '@src/CONST';
1011
import type PlaidLinkProps from './types';
1112

@@ -66,9 +67,13 @@ function PlaidLink({token, onSuccess = () => {}, onError = () => {}, onExit = ()
6667
open();
6768
}, [ready, error, isPlaidLoaded, open, onError]);
6869

70+
const reasonAttributes: SkeletonSpanReasonAttributes = {context: 'PlaidLink', ready, isPlaidLoaded};
6971
return (
7072
<View style={[styles.flex1, styles.alignItemsCenter, styles.justifyContentCenter]}>
71-
<ActivityIndicator size={CONST.ACTIVITY_INDICATOR_SIZE.LARGE} />
73+
<ActivityIndicator
74+
size={CONST.ACTIVITY_INDICATOR_SIZE.LARGE}
75+
reasonAttributes={reasonAttributes}
76+
/>
7277
</View>
7378
);
7479
}

src/pages/ReimbursementAccount/NonUSD/BankInfo/subSteps/BankAccountDetails.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import useLocalize from '@hooks/useLocalize';
1111
import useOnyx from '@hooks/useOnyx';
1212
import useReimbursementAccountStepFormSubmit from '@hooks/useReimbursementAccountStepFormSubmit';
1313
import useThemeStyles from '@hooks/useThemeStyles';
14+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
1415
import type BankInfoSubStepProps from '@pages/ReimbursementAccount/NonUSD/BankInfo/types';
1516
import {getBankInfoStepValues} from '@pages/ReimbursementAccount/NonUSD/utils/getBankInfoStepValues';
1617
import getInputForValueSet from '@pages/ReimbursementAccount/NonUSD/utils/getInputForValueSet';
@@ -78,6 +79,8 @@ function BankAccountDetails({onNext, isEditing, corpayFields}: BankInfoSubStepPr
7879
shouldSaveDraft: isEditing,
7980
});
8081

82+
const corpayFieldsLoadingReasonAttributes: SkeletonSpanReasonAttributes = {context: 'BankAccountDetails', isLoading: !!corpayFields?.isLoading};
83+
8184
const inputs = bankAccountDetailsFields?.map((field) => {
8285
if (field.valueSet !== undefined) {
8386
return getInputForValueSet(field, SafeString(defaultValues[field.id as keyof typeof defaultValues]), isEditing, styles);
@@ -125,6 +128,7 @@ function BankAccountDetails({onNext, isEditing, corpayFields}: BankInfoSubStepPr
125128
<ActivityIndicator
126129
size={CONST.ACTIVITY_INDICATOR_SIZE.LARGE}
127130
style={styles.flexGrow1}
131+
reasonAttributes={corpayFieldsLoadingReasonAttributes}
128132
/>
129133
</View>
130134
) : (

src/pages/ReimbursementAccount/NonUSD/BankInfo/subSteps/Confirmation.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import Text from '@components/Text';
77
import useLocalize from '@hooks/useLocalize';
88
import useOnyx from '@hooks/useOnyx';
99
import useThemeStyles from '@hooks/useThemeStyles';
10+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
1011
import type BankInfoSubStepProps from '@pages/ReimbursementAccount/NonUSD/BankInfo/types';
1112
import {getBankInfoStepValues} from '@pages/ReimbursementAccount/NonUSD/utils/getBankInfoStepValues';
1213
import getInputKeysForBankInfoStep from '@pages/ReimbursementAccount/NonUSD/utils/getInputKeysForBankInfoStep';
@@ -54,6 +55,8 @@ function Confirmation({onNext, onMove, corpayFields}: BankInfoSubStepProps) {
5455
[corpayFields, onMove, values],
5556
);
5657

58+
const corpayFieldsLoadingReasonAttributes: SkeletonSpanReasonAttributes = {context: 'BankInfo.Confirmation', isLoading: !!corpayFields?.isLoading};
59+
5760
return (
5861
<FormProvider
5962
formID={ONYXKEYS.FORMS.REIMBURSEMENT_ACCOUNT_FORM}
@@ -69,6 +72,7 @@ function Confirmation({onNext, onMove, corpayFields}: BankInfoSubStepProps) {
6972
<ActivityIndicator
7073
size={CONST.ACTIVITY_INDICATOR_SIZE.LARGE}
7174
style={styles.flexGrow1}
75+
reasonAttributes={corpayFieldsLoadingReasonAttributes}
7276
/>
7377
) : (
7478
items

src/pages/settings/Security/TwoFactorAuth/CopyCodesPage.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {READ_COMMANDS} from '@libs/API/types';
2020
import Clipboard from '@libs/Clipboard';
2121
import localFileDownload from '@libs/localFileDownload';
2222
import Navigation from '@libs/Navigation/Navigation';
23+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
2324
import {toggleTwoFactorAuth} from '@userActions/Session';
2425
import {quitAndNavigateBack, setCodesAreCopied} from '@userActions/TwoFactorAuthActions';
2526
import CONST from '@src/CONST';
@@ -43,6 +44,7 @@ function CopyCodesPage({route}: TwoFactorAuthPageProps) {
4344

4445
const isUserValidated = account?.validated ?? false;
4546
const {asset: ShieldYellow} = useMemoizedLazyAsset(() => loadIllustration('ShieldYellow' as IllustrationName));
47+
const accountLoadingReasonAttributes: SkeletonSpanReasonAttributes = {context: 'CopyCodesPage', isLoading: !!account?.isLoading};
4648

4749
useEffect(() => {
4850
if (!isUserValidated) {
@@ -92,7 +94,7 @@ function CopyCodesPage({route}: TwoFactorAuthPageProps) {
9294
<View style={[styles.twoFactorAuthCodesBox, styles.twoFactorAuthCodesBoxPadding({isExtraSmallScreenWidth, isSmallScreenWidth})]}>
9395
{account?.isLoading ? (
9496
<View style={styles.twoFactorLoadingContainer}>
95-
<ActivityIndicator />
97+
<ActivityIndicator reasonAttributes={accountLoadingReasonAttributes} />
9698
</View>
9799
) : (
98100
<>

src/pages/settings/Subscription/SubscriptionPlan/SubscriptionPlanCard.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import useSubscriptionPlan from '@hooks/useSubscriptionPlan';
1515
import useTheme from '@hooks/useTheme';
1616
import useThemeStyles from '@hooks/useThemeStyles';
1717
import {getSubscriptionPlanInfo, isSubscriptionTypeOfInvoicing} from '@libs/SubscriptionUtils';
18+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
1819
import variables from '@styles/variables';
1920
import CONST from '@src/CONST';
2021
import getSubscriptionPlanBenefitA11yProps from './getSubscriptionPlanBenefitA11yProps';
@@ -55,6 +56,7 @@ function SubscriptionPlanCard({subscriptionPlan, isFromComparisonModal = false,
5556
);
5657
const isSelected = isFromComparisonModal && subscriptionPlan === currentSubscriptionPlan;
5758
const benefitsColumns = shouldUseNarrowLayout || isFromComparisonModal ? 1 : 2;
59+
const subscriptionLoadingReasonAttributes: SkeletonSpanReasonAttributes = {context: 'SubscriptionPlanCard', isLoading: !privateSubscription};
5860

5961
const renderBenefits = () => {
6062
return (
@@ -111,7 +113,7 @@ function SubscriptionPlanCard({subscriptionPlan, isFromComparisonModal = false,
111113
<View style={[styles.borderedContentCard, styles.borderRadiusComponentLarge, styles.mt5, styles.flex1, isSelected && styles.borderColorFocus, styles.justifyContentBetween]}>
112114
{!privateSubscription ? (
113115
<View style={shouldUseNarrowLayout ? styles.p5 : [styles.p8, styles.pb6]}>
114-
<ActivityIndicator />
116+
<ActivityIndicator reasonAttributes={subscriptionLoadingReasonAttributes} />
115117
</View>
116118
) : (
117119
<>

src/pages/settings/Wallet/PersonalCardDetailsHeaderMenu.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import useThemeStyles from '@hooks/useThemeStyles';
1010
import {getDefaultCardName} from '@libs/CardUtils';
1111
import {getLatestErrorField} from '@libs/ErrorUtils';
1212
import {buildCannedSearchQuery} from '@libs/SearchQueryUtils';
13+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
1314
import Navigation from '@navigation/Navigation';
1415
import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
1516
import {clearCardErrorField, clearCardNameValuePairsErrorField, setPersonalCardReimbursable} from '@userActions/Card';
@@ -54,6 +55,7 @@ function PersonalCardDetailsHeaderMenu({
5455
const {translate} = useLocalize();
5556
const styles = useThemeStyles();
5657
const icons = useMemoizedLazyExpensifyIcons(['Hourglass', 'Trashcan'] as const);
58+
const isLoadingLastUpdatedReasonAttributes: SkeletonSpanReasonAttributes = {context: 'PersonalCardDetailsHeaderMenu', isLoadingLastUpdated: !!card?.isLoadingLastUpdated};
5759

5860
return (
5961
<>
@@ -102,7 +104,12 @@ function PersonalCardDetailsHeaderMenu({
102104

103105
<MenuItemWithTopDescription
104106
shouldShowRightComponent={card?.isLoadingLastUpdated}
105-
rightComponent={<ActivityIndicator style={[styles.popoverMenuIcon]} />}
107+
rightComponent={
108+
<ActivityIndicator
109+
style={[styles.popoverMenuIcon]}
110+
reasonAttributes={isLoadingLastUpdatedReasonAttributes}
111+
/>
112+
}
106113
description={translate('workspace.moreFeatures.companyCards.lastUpdated')}
107114
title={card?.isLoadingLastUpdated ? translate('workspace.moreFeatures.companyCards.updating') : lastScrape}
108115
interactive={false}

src/pages/settings/Wallet/WalletPage/index.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import Navigation from '@libs/Navigation/Navigation';
4141
import {formatPaymentMethods, getPaymentMethodDescription} from '@libs/PaymentUtils';
4242
import {getActiveAdminWorkspaces, getDescriptionForPolicyDomainCard, hasActiveAdminWorkspaces, hasEligibleActiveAdminFromWorkspaces, isPaidGroupPolicy} from '@libs/PolicyUtils';
4343
import {buildCannedSearchQuery} from '@libs/SearchQueryUtils';
44+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
4445
import PaymentMethodList from '@pages/settings/Wallet/PaymentMethodList';
4546
import {deletePaymentBankAccount, openPersonalBankAccountSetupView, setPersonalBankAccountContinueKYCOnSuccess} from '@userActions/BankAccounts';
4647
import {deletePersonalCard} from '@userActions/Card';
@@ -115,6 +116,7 @@ function WalletPage() {
115116
const hasFailedOnfido = userWallet?.hasFailedOnfido ?? false;
116117
const hasEligibleActiveAdmin = hasEligibleActiveAdminFromWorkspaces(allPolicies, currentUserLogin, paymentMethod?.selectedPaymentMethod?.bankAccountID?.toString());
117118
const paidGroupPolicy = Object.values(allPolicies ?? {}).find(isPaidGroupPolicy);
119+
const walletLoadingReasonAttributes: SkeletonSpanReasonAttributes = {context: 'WalletPage', shouldShowLoadingSpinner};
118120

119121
const updateShouldShowLoadingSpinner = useCallback(() => {
120122
// In order to prevent a loop, only update state of the spinner if there is a change
@@ -723,6 +725,7 @@ function WalletPage() {
723725
<ActivityIndicator
724726
size={CONST.ACTIVITY_INDICATOR_SIZE.LARGE}
725727
style={[styles.mb5]}
728+
reasonAttributes={walletLoadingReasonAttributes}
726729
/>
727730
)}
728731
{!shouldShowLoadingSpinner && hasActivatedWallet && (

0 commit comments

Comments
 (0)