Skip to content

Commit b80fb69

Browse files
authored
Merge pull request Expensify#84711 from callstack-internal/fix/83395-fullscreen-loading-indicator-reason-attributes
[No QA] Add reasonAttributes to FullscreenLoadingIndicator in settings pages
2 parents 6de77fa + 0dfbe02 commit b80fb69

10 files changed

Lines changed: 53 additions & 11 deletions

File tree

src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import {getEarliestErrorField, getLatestErrorField} from '@libs/ErrorUtils';
4040
import Navigation from '@libs/Navigation/Navigation';
4141
import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
4242
import type {SettingsNavigatorParamList} from '@libs/Navigation/types';
43+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
4344
import {close} from '@userActions/Modal';
4445
import ONYXKEYS from '@src/ONYXKEYS';
4546
import ROUTES from '@src/ROUTES';
@@ -234,8 +235,14 @@ function ContactMethodDetailsPage({route}: ContactMethodDetailsPageProps) {
234235
return menuItems;
235236
}, [isValidateCodeFormVisible, translate, turnOnDeleteModal, isDefaultContactMethod, icons.Trashcan]);
236237

238+
const reasonAttributes: SkeletonSpanReasonAttributes = {
239+
context: 'ContactMethodDetailsPage',
240+
isLoadingOnyxValues,
241+
isLoadingReportData,
242+
};
243+
237244
if (isLoadingOnyxValues || (isLoadingReportData && isEmptyObject(loginList))) {
238-
return <FullscreenLoadingIndicator />;
245+
return <FullscreenLoadingIndicator reasonAttributes={reasonAttributes} />;
239246
}
240247

241248
if (!contactMethod || !loginData) {

src/pages/settings/Profile/CustomStatus/SetDatePage.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import useOnyx from '@hooks/useOnyx';
1111
import useThemeStyles from '@hooks/useThemeStyles';
1212
import DateUtils from '@libs/DateUtils';
1313
import Navigation from '@libs/Navigation/Navigation';
14+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
1415
import {getDatePassedError, getFieldRequiredErrors} from '@libs/ValidationUtils';
1516
import {updateStatusDraftCustomClearAfterDate} from '@userActions/User';
1617
import ONYXKEYS from '@src/ONYXKEYS';
@@ -46,8 +47,14 @@ function SetDatePage() {
4647
[translate],
4748
);
4849

49-
if (isLoadingOnyxValue(statusDraftCustomClearAfterDateMetaData)) {
50-
return <FullScreenLoadingIndicator />;
50+
const isLoadingStatusDraft = isLoadingOnyxValue(statusDraftCustomClearAfterDateMetaData);
51+
const reasonAttributes: SkeletonSpanReasonAttributes = {
52+
context: 'SetDatePage',
53+
isLoadingStatusDraft,
54+
};
55+
56+
if (isLoadingStatusDraft) {
57+
return <FullScreenLoadingIndicator reasonAttributes={reasonAttributes} />;
5158
}
5259

5360
return (

src/pages/settings/Profile/DisplayNamePage.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import useOnyx from '@hooks/useOnyx';
1616
import useThemeStyles from '@hooks/useThemeStyles';
1717
import {addErrorMessage} from '@libs/ErrorUtils';
1818
import Navigation from '@libs/Navigation/Navigation';
19+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
1920
import {doesContainReservedWord, isValidDisplayName} from '@libs/ValidationUtils';
2021
import {updateDisplayName as updateDisplayNamePersonalDetails} from '@userActions/PersonalDetails';
2122
import CONST from '@src/CONST';
@@ -81,7 +82,10 @@ function DisplayNamePage({currentUserPersonalDetails}: DisplayNamePageProps) {
8182
onBackButtonPress={() => Navigation.goBack()}
8283
/>
8384
{isLoadingApp ? (
84-
<FullScreenLoadingIndicator style={[styles.flex1, styles.pRelative]} />
85+
<FullScreenLoadingIndicator
86+
style={[styles.flex1, styles.pRelative]}
87+
reasonAttributes={{context: 'DisplayNamePage', isLoadingApp} satisfies SkeletonSpanReasonAttributes}
88+
/>
8589
) : (
8690
<FormProvider
8791
style={[styles.flexGrow1, styles.ph5]}

src/pages/settings/Profile/PersonalDetails/BaseLegalNamePage.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import useLocalize from '@hooks/useLocalize';
1414
import useOnyx from '@hooks/useOnyx';
1515
import useThemeStyles from '@hooks/useThemeStyles';
1616
import Navigation from '@libs/Navigation/Navigation';
17+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
1718
import {doesContainReservedWord, isValidLegalName} from '@libs/ValidationUtils';
1819
import CONST from '@src/CONST';
1920
import type {OnyxFormKey} from '@src/ONYXKEYS';
@@ -108,7 +109,10 @@ function BaseLegalNamePage<TFormID extends OnyxFormKey>({
108109
onBackButtonPress={onBackButtonPress ?? (() => Navigation.goBack())}
109110
/>
110111
{isLoadingApp ? (
111-
<FullscreenLoadingIndicator style={[styles.flex1, styles.pRelative]} />
112+
<FullscreenLoadingIndicator
113+
style={[styles.flex1, styles.pRelative]}
114+
reasonAttributes={{context: 'BaseLegalNamePage', isLoadingApp} satisfies SkeletonSpanReasonAttributes}
115+
/>
112116
) : (
113117
<FormProvider
114118
style={[styles.flexGrow1, styles.ph5]}

src/pages/settings/Profile/PersonalDetails/DateOfBirthPage.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import useLocalize from '@hooks/useLocalize';
1212
import useOnyx from '@hooks/useOnyx';
1313
import useThemeStyles from '@hooks/useThemeStyles';
1414
import Navigation from '@libs/Navigation/Navigation';
15+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
1516
import {getAgeRequirementError, getFieldRequiredErrors} from '@libs/ValidationUtils';
1617
import {updateDateOfBirth} from '@userActions/PersonalDetails';
1718
import CONST from '@src/CONST';
@@ -56,7 +57,10 @@ function DateOfBirthPage() {
5657
onBackButtonPress={() => Navigation.goBack()}
5758
/>
5859
{isLoadingApp ? (
59-
<FullscreenLoadingIndicator style={[styles.flex1, styles.pRelative]} />
60+
<FullscreenLoadingIndicator
61+
style={[styles.flex1, styles.pRelative]}
62+
reasonAttributes={{context: 'DateOfBirthPage', isLoadingApp} satisfies SkeletonSpanReasonAttributes}
63+
/>
6064
) : (
6165
<FormProvider
6266
style={[styles.flexGrow1, styles.ph5]}

src/pages/settings/Profile/PersonalDetails/PersonalAddressPage.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import useLocalize from '@hooks/useLocalize';
44
import useOnyx from '@hooks/useOnyx';
55
import {normalizeCountryCode} from '@libs/CountryUtils';
66
import {getCurrentAddress} from '@libs/PersonalDetailsUtils';
7+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
78
import AddressPage from '@pages/AddressPage';
89
import type {FormOnyxValues} from '@src/components/Form/types';
910
import type {Country} from '@src/CONST';
@@ -35,8 +36,13 @@ function PersonalAddressPage() {
3536
const [defaultCountry, defaultCountryStatus] = useOnyx(ONYXKEYS.COUNTRY);
3637
const isLoading = isLoadingOnyxValue(defaultCountryStatus);
3738
const address = useMemo(() => normalizeCountryCode(getCurrentAddress(privatePersonalDetails)) as Address, [privatePersonalDetails]);
39+
const reasonAttributes: SkeletonSpanReasonAttributes = {
40+
context: 'PersonalAddressPage',
41+
isLoading,
42+
};
43+
3844
if (isLoading) {
39-
return <FullScreenLoadingIndicator />;
45+
return <FullScreenLoadingIndicator reasonAttributes={reasonAttributes} />;
4046
}
4147
return (
4248
<AddressPage

src/pages/settings/Profile/PersonalDetails/PhoneNumberPage.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import useThemeStyles from '@hooks/useThemeStyles';
1515
import {getEarliestErrorField} from '@libs/ErrorUtils';
1616
import {appendCountryCode, formatE164PhoneNumber} from '@libs/LoginUtils';
1717
import Navigation from '@libs/Navigation/Navigation';
18+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
1819
import {isRequiredFulfilled, isValidPhoneNumber} from '@libs/ValidationUtils';
1920
import {clearPhoneNumberError, updatePhoneNumber as updatePhone} from '@userActions/PersonalDetails';
2021
import CONST from '@src/CONST';
@@ -86,7 +87,10 @@ function PhoneNumberPage() {
8687
onBackButtonPress={() => Navigation.goBack()}
8788
/>
8889
{isLoadingApp ? (
89-
<FullscreenLoadingIndicator style={[styles.flex1, styles.pRelative]} />
90+
<FullscreenLoadingIndicator
91+
style={[styles.flex1, styles.pRelative]}
92+
reasonAttributes={{context: 'PhoneNumberPage', isLoadingApp} satisfies SkeletonSpanReasonAttributes}
93+
/>
9094
) : (
9195
<FormProvider
9296
style={[styles.flexGrow1, styles.ph5]}

src/pages/settings/Profile/PronounsPage.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import useLocalize from '@hooks/useLocalize';
1212
import useOnyx from '@hooks/useOnyx';
1313
import useThemeStyles from '@hooks/useThemeStyles';
1414
import Navigation from '@libs/Navigation/Navigation';
15+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
1516
import {updatePronouns as updatePronounsPersonalDetails} from '@userActions/PersonalDetails';
1617
import CONST from '@src/CONST';
1718
import ONYXKEYS from '@src/ONYXKEYS';
@@ -91,7 +92,7 @@ function PronounsPage({currentUserPersonalDetails}: PronounsPageProps) {
9192
testID="PronounsPage"
9293
>
9394
{isLoadingApp && !currentUserPersonalDetails.pronouns ? (
94-
<FullScreenLoadingIndicator />
95+
<FullScreenLoadingIndicator reasonAttributes={{context: 'PronounsPage', isLoadingApp} satisfies SkeletonSpanReasonAttributes} />
9596
) : (
9697
<>
9798
<HeaderWithBackButton

src/pages/settings/Troubleshoot/TroubleshootPage.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import {setShouldMaskOnyxState} from '@libs/actions/MaskOnyx';
3030
import {openTroubleshootSettingsPage} from '@libs/actions/User';
3131
import ExportOnyxState from '@libs/ExportOnyxState';
3232
import Navigation from '@libs/Navigation/Navigation';
33+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
3334
import colors from '@styles/theme/colors';
3435
import {clearOnyxAndResetApp} from '@userActions/App';
3536
import CONFIG from '@src/CONFIG';
@@ -196,7 +197,7 @@ function TroubleshootPage() {
196197
icon={illustrations.Lightbulb}
197198
shouldUseHeadlineHeader
198199
/>
199-
{isLoading && <FullScreenLoadingIndicator />}
200+
{isLoading && <FullScreenLoadingIndicator reasonAttributes={{context: 'TroubleshootPage', isLoading} satisfies SkeletonSpanReasonAttributes} />}
200201
<ScrollView contentContainerStyle={styles.pt3}>
201202
<View style={[styles.flex1, shouldUseNarrowLayout ? styles.workspaceSectionMobile : styles.workspaceSection]}>
202203
<Section

src/pages/settings/VerifyAccountPageBase.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import useThemeStyles from '@hooks/useThemeStyles';
1010
import {clearContactMethodErrors, clearUnvalidatedNewContactMethodAction, requestValidateCodeAction, validateSecondaryLogin} from '@libs/actions/User';
1111
import {getEarliestErrorField, getLatestErrorField} from '@libs/ErrorUtils';
1212
import Navigation from '@libs/Navigation/Navigation';
13+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
1314
import ONYXKEYS from '@src/ONYXKEYS';
1415
import type {Route} from '@src/ROUTES';
1516
import {isEmptyObject} from '@src/types/utils/EmptyObject';
@@ -81,7 +82,10 @@ function VerifyAccountPageBase({navigateBackTo, navigateForwardTo, handleClose,
8182
title={translate('contacts.validateAccount')}
8283
onBackButtonPress={handleCloseWithFallback}
8384
/>
84-
<FullScreenLoadingIndicator style={[styles.flex1, styles.pRelative]} />
85+
<FullScreenLoadingIndicator
86+
style={[styles.flex1, styles.pRelative]}
87+
reasonAttributes={{context: 'VerifyAccountPageBase', isUserValidated} satisfies SkeletonSpanReasonAttributes}
88+
/>
8589
</ScreenWrapper>
8690
);
8791
}

0 commit comments

Comments
 (0)