Skip to content

Commit 5d1d0b3

Browse files
mikemuzzaclaude
andcommitted
Merge duplicate useEffect hooks for page tracking
Consolidated the experimentation and feature flags tracking into a single useEffect hook to eliminate code duplication. Both tracking events now share the same debouncing logic and route change handler. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent 827330c commit 5d1d0b3

File tree

1 file changed

+10
-45
lines changed

1 file changed

+10
-45
lines changed

hooks/useSprig.ts

Lines changed: 10 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,11 @@ export const useSprig = () => {
5858
}
5959
}, [sprigEnvironmentId]);
6060

61-
// Track experimentation page visits
61+
// Track page visits for specific documentation pages
6262
useEffect(() => {
6363
if (!sprigEnvironmentId || typeof window === 'undefined') return;
6464

65-
const trackExperimentView = () => {
65+
const trackPageView = (eventName: string) => {
6666
const now = Date.now();
6767

6868
// Prevent duplicate events within debounce period
@@ -76,60 +76,25 @@ export const useSprig = () => {
7676

7777
try {
7878
lastEventTime = now;
79-
window.Sprig('track', 'viewed_experimentation_docs');
79+
window.Sprig('track', eventName);
8080
} catch (error) {
8181
console.error('Sprig track failed:', error);
8282
}
8383
};
8484

8585
const handleRouteChange = (url: string) => {
8686
if (url.includes('/docs/experiments')) {
87-
trackExperimentView();
87+
trackPageView('viewed_experimentation_docs');
88+
} else if (url.includes('/docs/featureflags')) {
89+
trackPageView('viewed_featureflags_docs');
8890
}
8991
};
9092

91-
// Track if already on experimentation page
93+
// Track if already on a tracked page
9294
if (router.asPath.includes('/docs/experiments')) {
93-
trackExperimentView();
94-
}
95-
96-
router.events.on('routeChangeComplete', handleRouteChange);
97-
return () => router.events.off('routeChangeComplete', handleRouteChange);
98-
}, [router, sprigEnvironmentId]);
99-
100-
// Track feature flags page visits
101-
useEffect(() => {
102-
if (!sprigEnvironmentId || typeof window === 'undefined') return;
103-
104-
const trackFeatureFlagView = () => {
105-
const now = Date.now();
106-
107-
// Prevent duplicate events within debounce period
108-
if (now - lastEventTime < EVENT_DEBOUNCE_MS) {
109-
return;
110-
}
111-
112-
if (!window.Sprig) {
113-
return;
114-
}
115-
116-
try {
117-
lastEventTime = now;
118-
window.Sprig('track', 'viewed_featureflags_docs');
119-
} catch (error) {
120-
console.error('Sprig track failed:', error);
121-
}
122-
};
123-
124-
const handleRouteChange = (url: string) => {
125-
if (url.includes('/docs/featureflags')) {
126-
trackFeatureFlagView();
127-
}
128-
};
129-
130-
// Track if already on feature flags page
131-
if (router.asPath.includes('/docs/featureflags')) {
132-
trackFeatureFlagView();
95+
trackPageView('viewed_experimentation_docs');
96+
} else if (router.asPath.includes('/docs/featureflags')) {
97+
trackPageView('viewed_featureflags_docs');
13398
}
13499

135100
router.events.on('routeChangeComplete', handleRouteChange);

0 commit comments

Comments
 (0)