Skip to content

Commit 075b5a8

Browse files
refactor: replace tracking setup queries with custom hook (#78)
Co-authored-by: iza <[email protected]>
1 parent c210c67 commit 075b5a8

File tree

4 files changed

+32
-39
lines changed

4 files changed

+32
-39
lines changed

apps/dashboard/app/(main)/websites/[id]/funnels/page.tsx

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
useFunnelAnalyticsByReferrer,
1818
useFunnels,
1919
} from '@/hooks/use-funnels';
20-
import { trpc } from '@/lib/trpc';
20+
import { useTrackingSetup } from '@/hooks/use-tracking-setup';
2121
import {
2222
dateRangeAtom,
2323
formattedDateRangeAtom,
@@ -106,19 +106,7 @@ export default function FunnelsPage() {
106106
const [, setDateRangeAction] = useAtom(setDateRangeAndAdjustGranularityAtom);
107107
const [formattedDateRangeState] = useAtom(formattedDateRangeAtom);
108108

109-
// Check tracking setup
110-
const { data: trackingSetupData, isLoading: isTrackingSetupLoading } =
111-
trpc.websites.isTrackingSetup.useQuery(
112-
{ websiteId },
113-
{ enabled: !!websiteId }
114-
);
115-
116-
const isTrackingSetup = useMemo(() => {
117-
if (isTrackingSetupLoading) {
118-
return null;
119-
}
120-
return trackingSetupData?.tracking_setup ?? false;
121-
}, [isTrackingSetupLoading, trackingSetupData?.tracking_setup]);
109+
const { isTrackingSetup } = useTrackingSetup(websiteId);
122110

123111
// Date picker helpers
124112
const dayPickerSelectedRange: DayPickerRange | undefined = useMemo(

apps/dashboard/app/(main)/websites/[id]/goals/page.tsx

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ import {
2323
useBulkGoalAnalytics,
2424
useGoals,
2525
} from '@/hooks/use-goals';
26+
import { useTrackingSetup } from '@/hooks/use-tracking-setup';
2627
import { useWebsite } from '@/hooks/use-websites';
27-
import { trpc } from '@/lib/trpc';
2828
import {
2929
dateRangeAtom,
3030
formattedDateRangeAtom,
@@ -105,18 +105,7 @@ export default function GoalsPage() {
105105
const [, setDateRangeAction] = useAtom(setDateRangeAndAdjustGranularityAtom);
106106
const [formattedDateRangeState] = useAtom(formattedDateRangeAtom);
107107

108-
const { data: trackingSetupData, isLoading: isTrackingSetupLoading } =
109-
trpc.websites.isTrackingSetup.useQuery(
110-
{ websiteId },
111-
{ enabled: !!websiteId }
112-
);
113-
114-
const isTrackingSetup = useMemo(() => {
115-
if (isTrackingSetupLoading) {
116-
return null;
117-
}
118-
return trackingSetupData?.tracking_setup ?? false;
119-
}, [isTrackingSetupLoading, trackingSetupData?.tracking_setup]);
108+
const { isTrackingSetup } = useTrackingSetup(websiteId);
120109

121110
const dayPickerSelectedRange: DayPickerRange | undefined = useMemo(
122111
() => ({

apps/dashboard/app/(main)/websites/[id]/page.tsx

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ import { Button } from '@/components/ui/button';
1717
import { Skeleton } from '@/components/ui/skeleton';
1818
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
1919
import { operatorOptions, useFilters } from '@/hooks/use-filters';
20+
import { useTrackingSetup } from '@/hooks/use-tracking-setup';
2021
import { useWebsite } from '@/hooks/use-websites';
21-
import { trpc } from '@/lib/trpc';
2222
import {
2323
dateRangeAtom,
2424
formattedDateRangeAtom,
@@ -165,17 +165,7 @@ function WebsiteDetailsPage() {
165165
refetch: refetchWebsiteData,
166166
} = useWebsite(id as string);
167167

168-
const { data: trackingSetupData, isLoading: isTrackingSetupLoading } =
169-
trpc.websites.isTrackingSetup.useQuery(
170-
{ websiteId: id as string },
171-
{ enabled: !!id }
172-
);
173-
const isTrackingSetup = useMemo(() => {
174-
if (!data || isTrackingSetupLoading) {
175-
return null;
176-
}
177-
return trackingSetupData?.tracking_setup ?? false;
178-
}, [data, isTrackingSetupLoading, trackingSetupData?.tracking_setup]);
168+
const { isTrackingSetup } = useTrackingSetup(id as string);
179169

180170
useEffect(() => {
181171
if (isTrackingSetup === false && activeTab === 'overview') {
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { trpc } from '@/lib/trpc';
2+
3+
export function useTrackingSetup(websiteId: string) {
4+
const {
5+
data: trackingSetupData,
6+
isLoading: isTrackingSetupLoading,
7+
isError: isTrackingSetupError,
8+
error: trackingSetupError,
9+
refetch: refetchTrackingSetup,
10+
} = trpc.websites.isTrackingSetup.useQuery(
11+
{ websiteId },
12+
{ enabled: !!websiteId }
13+
);
14+
15+
const isTrackingSetup = isTrackingSetupLoading
16+
? null
17+
: (trackingSetupData?.tracking_setup ?? false);
18+
19+
return {
20+
isTrackingSetup,
21+
isTrackingSetupLoading,
22+
isTrackingSetupError,
23+
trackingSetupError,
24+
refetchTrackingSetup,
25+
};
26+
}

0 commit comments

Comments
 (0)