Skip to content

Commit 3079399

Browse files
JoshuaKGoldberggeorge-sentry
authored andcommitted
ref(utils): simplify useDimensions types by removing type parameter (#112460)
Following up on #112374, I noted two things that could be simplified with `useDimensions`: * ~Runtime: it takes in an options object, but there's only one property. This means every call creates a new JS object. This is a little papercut for performance (almost certainly not impactful on its own, but they add up).~ This is intentional and preferred; reverted. * Types: its type parameter is unnecessary, and only bypasses [`@typescript-eslint/no-unnecessary-type-parameters`](https://typescript-eslint.io/rules/no-unnecessary-type-parameters) because it forwards the type parameter to `RefObject` (https://typescript-eslint.io/rules/no-unnecessary-type-parameters/#limitations)
1 parent 2f606c4 commit 3079399

File tree

14 files changed

+15
-15
lines changed

14 files changed

+15
-15
lines changed

static/app/components/checkInTimeline/checkInTimeline.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ function generateMockTickData(
8282
export default Storybook.story('CheckInTimeline', story => {
8383
story('Simple', () => {
8484
const elementRef = useRef<HTMLDivElement>(null);
85-
const {width: timelineWidth} = useDimensions<HTMLDivElement>({elementRef});
85+
const {width: timelineWidth} = useDimensions({elementRef});
8686
const timeWindowConfig = useTimeWindowConfig({timelineWidth});
8787

8888
const [secondsGap, setSecondsGap] = useState(60);

static/app/components/replays/breadcrumbs/replayTimeline.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export function ReplayTimeline() {
2323
const [timelineScale] = useTimelineScale();
2424

2525
const stackedRef = useRef<HTMLDivElement>(null);
26-
const {width} = useDimensions<HTMLDivElement>({elementRef: stackedRef});
26+
const {width} = useDimensions({elementRef: stackedRef});
2727

2828
if (!replay) {
2929
return <Placeholder height="20px" />;

static/app/utils/useDimensions.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import type {RefObject} from 'react';
22
import {useCallback, useLayoutEffect, useState} from 'react';
33
import {useResizeObserver} from '@react-aria/utils';
44

5-
interface Props<Element extends HTMLElement> {
5+
interface Props {
66
elementRef: RefObject<Element | null>;
77
}
88

99
/**
1010
* Returns a ref to be added to an element and returns the dimensions of that element
1111
*/
12-
export function useDimensions<Element extends HTMLElement>({elementRef}: Props<Element>) {
12+
export function useDimensions({elementRef}: Props) {
1313
const [dimensions, setDimensions] = useState({height: 0, width: 0});
1414

1515
const element = elementRef.current;

static/app/views/alerts/rules/uptime/detailsTimeline.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ interface Props {
2626
export function DetailsTimeline({uptimeDetector, onStatsLoaded}: Props) {
2727
const {id} = uptimeDetector;
2828
const elementRef = useRef<HTMLDivElement>(null);
29-
const {width: containerWidth} = useDimensions<HTMLDivElement>({elementRef});
29+
const {width: containerWidth} = useDimensions({elementRef});
3030
const timelineWidth = useDebouncedValue(containerWidth, 500);
3131

3232
const timeWindowConfig = useTimeWindowConfig({

static/app/views/detectors/components/detectorListTable/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ export function DetectorListTable({
139139
);
140140

141141
const elementRef = useRef<HTMLDivElement>(null);
142-
const {width: containerWidth} = useDimensions<HTMLDivElement>({elementRef});
142+
const {width: containerWidth} = useDimensions({elementRef});
143143
const timelineWidth = useDebouncedValue(containerWidth, 1000);
144144
const timeWindowConfig = useTimeWindowConfig({timelineWidth});
145145

static/app/views/detectors/hooks/useMonitorsScheduleSamples.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export function useMonitorsScheduleSamples({
2929
...detectorFields
3030
}: UseMonitorsScheduleSamplesOptions) {
3131
const timeLineWidthTrackerRef = useRef<HTMLDivElement>(null);
32-
const {width: timelineWidth} = useDimensions<HTMLDivElement>({
32+
const {width: timelineWidth} = useDimensions({
3333
elementRef: timeLineWidthTrackerRef,
3434
});
3535

static/app/views/detectors/list/cron.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ function VisualizationCell({detector}: {detector: CronDetector}) {
5656
const cronEnvironments = detector.dataSources[0].queryObj.environments;
5757

5858
const elementRef = useRef<HTMLDivElement>(null);
59-
const {width: containerWidth} = useDimensions<HTMLDivElement>({elementRef});
59+
const {width: containerWidth} = useDimensions({elementRef});
6060
const timelineWidth = useDebouncedValue(containerWidth, 1000);
6161
const timeWindowConfig = useTimeWindowConfig({timelineWidth});
6262
const {data: monitorStats, isPending} = useMonitorStats({

static/app/views/detectors/list/uptime.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ function VisualizationCell({detector}: {detector: UptimeDetector}) {
3333
const uptimeDetectorId = detector.id;
3434

3535
const elementRef = useRef<HTMLDivElement>(null);
36-
const {width: containerWidth} = useDimensions<HTMLDivElement>({elementRef});
36+
const {width: containerWidth} = useDimensions({elementRef});
3737
const timelineWidth = useDebouncedValue(containerWidth, 1000);
3838
const timeWindowConfig = useTimeWindowConfig({timelineWidth});
3939

static/app/views/insights/crons/components/detailsTimeline.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export function DetailsTimeline({monitor, onStatsLoaded, onEnvironmentUpdated}:
4747
const queryClient = useQueryClient();
4848

4949
const elementRef = useRef<HTMLDivElement>(null);
50-
const {width: containerWidth} = useDimensions<HTMLDivElement>({elementRef});
50+
const {width: containerWidth} = useDimensions({elementRef});
5151
const timelineWidth = useDebouncedValue(containerWidth, 500);
5252

5353
// Use the nextCheckIn timestamp from the earliest scheduled environment as a

static/app/views/insights/crons/components/mockTimelineVisualization.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export function MockTimelineVisualization({schedule}: Props) {
6363
};
6464

6565
const elementRef = useRef<HTMLDivElement>(null);
66-
const {width: timelineWidth} = useDimensions<HTMLDivElement>({elementRef});
66+
const {width: timelineWidth} = useDimensions({elementRef});
6767

6868
const sampleDataQueryKey = [
6969
getApiUrl('/organizations/$organizationIdOrSlug/monitors-schedule-data/', {

0 commit comments

Comments
 (0)