Skip to content

Commit 1d618ff

Browse files
authored
Merge pull request Expensify#84720 from callstack-internal/fix/83395-charts-activity-indicator-reason-attributes
[No QA] Add reasonAttributes to Chart ActivityIndicators
2 parents fd747c5 + 4dd8b60 commit 1d618ff

6 files changed

Lines changed: 36 additions & 6 deletions

File tree

src/components/Charts/BarChart/BarChartContent.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {calculateMinDomainPadding, DEFAULT_CHART_COLOR, getChartColor} from '@co
1818
import useResponsiveLayout from '@hooks/useResponsiveLayout';
1919
import useTheme from '@hooks/useTheme';
2020
import useThemeStyles from '@hooks/useThemeStyles';
21+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
2122
import variables from '@styles/variables';
2223

2324
/** Inner padding between bars (0.3 = 30% of bar width) */
@@ -180,9 +181,13 @@ function BarChartContent({data, title, titleIcon, isLoading, yAxisUnit, yAxisUni
180181
const chartPadding = {...CHART_PADDING, bottom: labelSpace + CHART_PADDING.bottom};
181182

182183
if (isLoading || !font) {
184+
const reasonAttributes: SkeletonSpanReasonAttributes = {context: 'BarChartContent', isLoading, isFontLoading: !font};
183185
return (
184186
<View style={[styles.barChartContainer, styles.highlightBG, shouldUseNarrowLayout ? styles.p5 : styles.p8, styles.justifyContentCenter, styles.alignItemsCenter]}>
185-
<ActivityIndicator size="large" />
187+
<ActivityIndicator
188+
size="large"
189+
reasonAttributes={reasonAttributes}
190+
/>
186191
</View>
187192
);
188193
}

src/components/Charts/BarChart/index.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ import React from 'react';
33
import {View} from 'react-native';
44
import ActivityIndicator from '@components/ActivityIndicator';
55
import useThemeStyles from '@hooks/useThemeStyles';
6+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
67
import type {BarChartProps} from './BarChartContent';
78

89
const getBarChartContent = () => import('./BarChartContent');
910
function BarChart(props: BarChartProps) {
1011
const styles = useThemeStyles();
12+
const reasonAttributes: SkeletonSpanReasonAttributes = {context: 'BarChart.SkiaWebLoading'};
1113

1214
return (
1315
<WithSkiaWeb
@@ -16,7 +18,10 @@ function BarChart(props: BarChartProps) {
1618
componentProps={props}
1719
fallback={
1820
<View style={[styles.flex1, styles.justifyContentCenter, styles.alignItemsCenter, styles.highlightBG, styles.br4, styles.p5]}>
19-
<ActivityIndicator size="large" />
21+
<ActivityIndicator
22+
size="large"
23+
reasonAttributes={reasonAttributes}
24+
/>
2025
</View>
2126
}
2227
/>

src/components/Charts/LineChart/LineChartContent.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {calculateMinDomainPadding, DEFAULT_CHART_COLOR, measureTextWidth} from '
1919
import useResponsiveLayout from '@hooks/useResponsiveLayout';
2020
import useTheme from '@hooks/useTheme';
2121
import useThemeStyles from '@hooks/useThemeStyles';
22+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
2223
import variables from '@styles/variables';
2324

2425
/** Inner dot radius for line chart data points */
@@ -174,9 +175,13 @@ function LineChartContent({data, title, titleIcon, isLoading, yAxisUnit, yAxisUn
174175
const chartPadding = {...CHART_PADDING, bottom: labelSpace + CHART_PADDING.bottom};
175176

176177
if (isLoading || !font) {
178+
const reasonAttributes: SkeletonSpanReasonAttributes = {context: 'LineChartContent', isLoading, isFontLoading: !font};
177179
return (
178180
<View style={[styles.lineChartContainer, styles.highlightBG, shouldUseNarrowLayout ? styles.p5 : styles.p8, styles.justifyContentCenter, styles.alignItemsCenter]}>
179-
<ActivityIndicator size="large" />
181+
<ActivityIndicator
182+
size="large"
183+
reasonAttributes={reasonAttributes}
184+
/>
180185
</View>
181186
);
182187
}

src/components/Charts/LineChart/index.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ import React from 'react';
33
import {View} from 'react-native';
44
import ActivityIndicator from '@components/ActivityIndicator';
55
import useThemeStyles from '@hooks/useThemeStyles';
6+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
67
import type {LineChartProps} from './LineChartContent';
78

89
function LineChart(props: LineChartProps) {
910
const styles = useThemeStyles();
11+
const reasonAttributes: SkeletonSpanReasonAttributes = {context: 'LineChart.SkiaWebLoading'};
1012

1113
return (
1214
<WithSkiaWeb
@@ -15,7 +17,10 @@ function LineChart(props: LineChartProps) {
1517
componentProps={props}
1618
fallback={
1719
<View style={[styles.flex1, styles.justifyContentCenter, styles.alignItemsCenter, styles.highlightBG, styles.br4, styles.p5]}>
18-
<ActivityIndicator size="large" />
20+
<ActivityIndicator
21+
size="large"
22+
reasonAttributes={reasonAttributes}
23+
/>
1924
</View>
2025
}
2126
/>

src/components/Charts/PieChart/PieChartContent.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import type {ChartDataPoint, ChartProps, PieSlice, UnitPosition} from '@componen
1414
import {findSliceAtPosition, processDataIntoSlices} from '@components/Charts/utils';
1515
import Text from '@components/Text';
1616
import useThemeStyles from '@hooks/useThemeStyles';
17+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
1718

1819
type PieChartProps = ChartProps & {
1920
/** Callback when a slice is pressed */
@@ -133,9 +134,13 @@ function PieChartContent({data, title, titleIcon, isLoading, valueUnit, valueUni
133134
};
134135

135136
if (isLoading) {
137+
const reasonAttributes: SkeletonSpanReasonAttributes = {context: 'PieChartContent', isLoading};
136138
return (
137139
<View style={[styles.pieChartContainer, styles.highlightBG, styles.justifyContentCenter, styles.alignItemsCenter]}>
138-
<ActivityIndicator size="large" />
140+
<ActivityIndicator
141+
size="large"
142+
reasonAttributes={reasonAttributes}
143+
/>
139144
</View>
140145
);
141146
}

src/components/Charts/PieChart/index.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ import React from 'react';
33
import {View} from 'react-native';
44
import ActivityIndicator from '@components/ActivityIndicator';
55
import useThemeStyles from '@hooks/useThemeStyles';
6+
import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan';
67
import type {PieChartProps} from './PieChartContent';
78

89
const getPieChartContent = () => import('./PieChartContent');
910

1011
function PieChart(props: PieChartProps) {
1112
const styles = useThemeStyles();
13+
const reasonAttributes: SkeletonSpanReasonAttributes = {context: 'PieChart.SkiaWebLoading'};
1214

1315
return (
1416
<WithSkiaWeb
@@ -17,7 +19,10 @@ function PieChart(props: PieChartProps) {
1719
componentProps={props}
1820
fallback={
1921
<View style={[styles.flex1, styles.justifyContentCenter, styles.alignItemsCenter, styles.highlightBG, styles.br4, styles.p5]}>
20-
<ActivityIndicator size="large" />
22+
<ActivityIndicator
23+
size="large"
24+
reasonAttributes={reasonAttributes}
25+
/>
2126
</View>
2227
}
2328
/>

0 commit comments

Comments
 (0)