Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import {canEditReportAction, getReportOfflinePendingActionAndErrors, isReportTra
import {buildCannedSearchQuery} from '@libs/SearchQueryUtils';
import {cancelSpan} from '@libs/telemetry/activeSpans';
import markOpenReportEnd from '@libs/telemetry/markOpenReportEnd';
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
import Navigation from '@navigation/Navigation';
import ReportActionsView from '@pages/inbox/report/ReportActionsView';
import ReportFooter from '@pages/inbox/report/ReportFooter';
Expand All @@ -42,6 +43,8 @@ import type {ThemeStyles} from '@src/styles';
import type * as OnyxTypes from '@src/types/onyx';
import MoneyRequestReportActionsList from './MoneyRequestReportActionsList';

const loadingAppReasonAttributes: SkeletonSpanReasonAttributes = {context: 'MoneyRequestReportView.isLoadingApp'};

type MoneyRequestReportViewProps = {
/** The report */
report: OnyxEntry<OnyxTypes.Report>;
Expand Down Expand Up @@ -89,14 +92,17 @@ function goBackFromSearchMoneyRequest() {
Navigation.goBack(ROUTES.SEARCH_ROOT.getRoute({query: buildCannedSearchQuery()}));
}

function InitialLoadingSkeleton({styles, onLayout}: {styles: ThemeStyles; onLayout?: (event: LayoutChangeEvent) => void}) {
function InitialLoadingSkeleton({styles, onLayout, reasonAttributes}: {styles: ThemeStyles; onLayout?: (event: LayoutChangeEvent) => void; reasonAttributes: SkeletonSpanReasonAttributes}) {
return (
<View
style={[styles.flex1]}
onLayout={onLayout}
>
<View style={[styles.appContentHeader, styles.borderBottom]}>
<ReportHeaderSkeletonView onBackButtonPress={() => {}} />
<ReportHeaderSkeletonView
onBackButtonPress={() => {}}
reasonAttributes={reasonAttributes}
/>
</View>
<ReportActionsSkeletonView />
</View>
Expand Down Expand Up @@ -220,7 +226,17 @@ function MoneyRequestReportView({report, policy, reportMetadata, shouldDisplayRe
}, [report, shouldShowOpenReportLoadingSkeleton]);

if (shouldShowOpenReportLoadingSkeleton) {
return <InitialLoadingSkeleton styles={styles} />;
const skeletonReasonAttributes: SkeletonSpanReasonAttributes = {
context: 'MoneyRequestReportView.InitialLoadingSkeleton',
isLoadingInitialReportActions: !!isLoadingInitialReportActions,
shouldWaitForTransactions,
};
return (
<InitialLoadingSkeleton
styles={styles}
reasonAttributes={skeletonReasonAttributes}
/>
);
}

if (reportActions.length === 0) {
Expand All @@ -234,7 +250,7 @@ function MoneyRequestReportView({report, policy, reportMetadata, shouldDisplayRe
if (isLoadingApp) {
return (
<View style={styles.flex1}>
<ReportHeaderSkeletonView />
<ReportHeaderSkeletonView reasonAttributes={loadingAppReasonAttributes} />
<ReportActionsSkeletonView />
{shouldDisplayReportFooter ? (
<ReportFooter
Expand Down
12 changes: 11 additions & 1 deletion src/pages/ConciergePage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import useThemeStyles from '@hooks/useThemeStyles';
import {confirmReadyToOpenApp} from '@libs/actions/App';
import {navigateToConciergeChat} from '@libs/actions/Report';
import Navigation from '@libs/Navigation/Navigation';
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import ROUTES from '@src/ROUTES';
Expand Down Expand Up @@ -50,10 +51,19 @@ function ConciergePage() {
};
}, []);

const reasonAttributes: SkeletonSpanReasonAttributes = {
context: 'ConciergePage',
isLoadingReportData,
hasConciergeReportID: !!conciergeReportID,
};

return (
<ScreenWrapper testID="ConciergePage">
<View style={[styles.borderBottom, styles.appContentHeader]}>
<ReportHeaderSkeletonView onBackButtonPress={Navigation.goBack} />
<ReportHeaderSkeletonView
onBackButtonPress={Navigation.goBack}
reasonAttributes={reasonAttributes}
/>
</View>
<ReportActionsSkeletonView />
</ScreenWrapper>
Expand Down
20 changes: 14 additions & 6 deletions src/pages/SubmitExpensePage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ import ScreenWrapper from '@components/ScreenWrapper';
import useThemeStyles from '@hooks/useThemeStyles';
import interceptAnonymousUser from '@libs/interceptAnonymousUser';
import Navigation from '@libs/Navigation/Navigation';
import * as ReportUtils from '@libs/ReportUtils';
import * as App from '@userActions/App';
import * as IOU from '@userActions/IOU';
import {generateReportID} from '@libs/ReportUtils';
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
import {confirmReadyToOpenApp} from '@userActions/App';
import {startMoneyRequest} from '@userActions/IOU';
import CONST from '@src/CONST';

/*
Expand All @@ -23,13 +24,13 @@ function SubmitExpensePage() {

useFocusEffect(() => {
interceptAnonymousUser(() => {
App.confirmReadyToOpenApp();
confirmReadyToOpenApp();
Navigation.isNavigationReady().then(() => {
if (isUnmounted.current) {
return;
}
Navigation.goBack();
IOU.startMoneyRequest(CONST.IOU.TYPE.SUBMIT, ReportUtils.generateReportID());
startMoneyRequest(CONST.IOU.TYPE.SUBMIT, generateReportID());
});
});
});
Expand All @@ -41,10 +42,17 @@ function SubmitExpensePage() {
[],
);

const reasonAttributes: SkeletonSpanReasonAttributes = {
context: 'SubmitExpensePage',
};

return (
<ScreenWrapper testID="SubmitExpensePage">
<View style={[styles.borderBottom]}>
<ReportHeaderSkeletonView onBackButtonPress={Navigation.goBack} />
<ReportHeaderSkeletonView
onBackButtonPress={Navigation.goBack}
reasonAttributes={reasonAttributes}
/>
</View>
<ReportActionsSkeletonView />
</ScreenWrapper>
Expand Down
11 changes: 10 additions & 1 deletion src/pages/TrackExpensePage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {startMoneyRequest} from '@libs/actions/IOU';
import interceptAnonymousUser from '@libs/interceptAnonymousUser';
import Navigation from '@libs/Navigation/Navigation';
import {findSelfDMReportID, generateReportID} from '@libs/ReportUtils';
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import ROUTES from '@src/ROUTES';
Expand Down Expand Up @@ -59,10 +60,18 @@ function TrackExpensePage() {
[],
);

const reasonAttributes: SkeletonSpanReasonAttributes = {
context: 'TrackExpensePage',
isLoadingHasSeenTrackTraining,
};

return (
<ScreenWrapper testID="TrackExpensePage">
<View style={[styles.borderBottom]}>
<ReportHeaderSkeletonView onBackButtonPress={Navigation.goBack} />
<ReportHeaderSkeletonView
onBackButtonPress={Navigation.goBack}
reasonAttributes={reasonAttributes}
/>
</View>
<ReportActionsSkeletonView />
</ScreenWrapper>
Expand Down
12 changes: 11 additions & 1 deletion src/pages/TransactionDuplicate/Review.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import type {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigat
import type {TransactionDuplicateNavigatorParamList} from '@libs/Navigation/types';
import {getLinkedTransactionID, getReportAction} from '@libs/ReportActionsUtils';
import {isReportIDApproved, isSettled} from '@libs/ReportUtils';
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
import {doesDeleteNavigateBackUrlIncludeSpecificDuplicatesReview, getParentReportActionDeletionStatus, hasLoadedReportActions, isThreadReportDeleted} from '@libs/TransactionNavigationUtils';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
Expand Down Expand Up @@ -166,12 +167,21 @@ function TransactionDuplicateReview() {
// eslint-disable-next-line rulesdir/no-negated-variables
const shouldShowNotFound = !isNavigatingBackToDeletedReview && (wasTransactionDeleted || (!isLoadingPage && !transactionID));

const reasonAttributes: SkeletonSpanReasonAttributes = {
context: 'TransactionDuplicateReview',
hasLoadedThreadReportActions,
hasLoadedParentReportActions,
};

if (isLoadingPage) {
return (
<ScreenWrapper testID="TransactionDuplicateReview">
<View style={[styles.flex1]}>
<View style={[styles.appContentHeader, styles.borderBottom]}>
<ReportHeaderSkeletonView onBackButtonPress={() => {}} />
<ReportHeaderSkeletonView
onBackButtonPress={() => {}}
reasonAttributes={reasonAttributes}
/>
</View>
<ReportActionsSkeletonView />
</View>
Expand Down
12 changes: 11 additions & 1 deletion src/pages/inbox/HeaderView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ import {
shouldReportShowSubscript,
} from '@libs/ReportUtils';
import {shouldShowDiscountBanner} from '@libs/SubscriptionUtils';
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
import EarlyDiscountBanner from '@pages/settings/Subscription/CardSection/BillingBanner/EarlyDiscountBanner';
import FreeTrial from '@pages/settings/Subscription/FreeTrial';
import {joinRoom} from '@userActions/Report';
Expand Down Expand Up @@ -233,6 +234,12 @@ function HeaderView({report, parentReportAction, onNavigationMenuButtonClicked,
const isLoading = !report?.reportID || !title;
const isParentReportLoading = !!report?.parentReportID && !parentReport;

const reasonAttributes: SkeletonSpanReasonAttributes = {
context: 'HeaderView',
hasReportID: !!report?.reportID,
hasTitle: !!title,
};

const isReportInRHP = route.name === SCREENS.RIGHT_MODAL.SEARCH_REPORT;
const shouldDisplaySearchRouter = !isInSidePanel && (!isReportInRHP || isSmallScreenWidth);
const [onboardingPurposeSelected] = useOnyx(ONYXKEYS.ONBOARDING_PURPOSE_SELECTED);
Expand Down Expand Up @@ -273,7 +280,10 @@ function HeaderView({report, parentReportAction, onNavigationMenuButtonClicked,
>
<View style={[styles.appContentHeader, styles.pr3]}>
{isLoading ? (
<ReportHeaderSkeletonView onBackButtonPress={onNavigationMenuButtonClicked} />
<ReportHeaderSkeletonView
onBackButtonPress={onNavigationMenuButtonClicked}
reasonAttributes={reasonAttributes}
/>
) : (
<View style={[styles.appContentHeaderTitle, !shouldUseNarrowLayout && !isLoading && styles.pl5]}>
{shouldShowBackButton && (
Expand Down
Loading