fix: setup tracking store

This commit is contained in:
Christel Westerberg
2024-08-29 10:05:50 +02:00
parent facd6bb4ad
commit 49a39fe5aa
2 changed files with 21 additions and 5 deletions

View File

@@ -1,9 +1,10 @@
"use client"
import { usePathname } from "next/navigation"
import { useCallback, useEffect, useState } from "react"
import { useCallback, useEffect } from "react"
import { webviews } from "@/constants/routes/webviews"
import useTrackingStore from "@/stores/tracking"
import { createSDKPageObject } from "@/utils/tracking"
@@ -12,7 +13,7 @@ import { TrackingSDKProps } from "@/types/components/tracking"
export default function TrackingSDK({ pageData, userData }: TrackingSDKProps) {
const pathName = usePathname()
const isWebview = webviews.includes(pathName)
const [initPerformanceTracking, setInitPerformanceTracking] = useState(true)
const { hasRun, setHasRun } = useTrackingStore()
const CookiebotCallbackOnAccept = useCallback(() => {
const cookie = window._satellite.cookie.get("CookieConsent")
@@ -39,7 +40,7 @@ export default function TrackingSDK({ pageData, userData }: TrackingSDKProps) {
}
useEffect(() => {
if (initPerformanceTracking) {
if (!hasRun) {
const perfObserver = new PerformanceObserver((observedEntries) => {
const entry = observedEntries.getEntriesByType("navigation")[0]
@@ -61,9 +62,9 @@ export default function TrackingSDK({ pageData, userData }: TrackingSDKProps) {
buffered: true,
})
setInitPerformanceTracking(false)
setHasRun()
}
}, [pathName, pageData, userData, initPerformanceTracking])
}, [pathName, pageData, userData, hasRun, setHasRun])
useEffect(() => {
// handle consent

15
stores/tracking.ts Normal file
View File

@@ -0,0 +1,15 @@
"use client"
import { create } from "zustand"
interface TrackingStoreState {
hasRun: boolean
setHasRun: () => void
}
const useTrackingStore = create<TrackingStoreState>((set) => ({
hasRun: false,
setHasRun: () => set(() => ({ hasRun: true })),
}))
export default useTrackingStore