fix: setup tracking store
This commit is contained in:
@@ -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
15
stores/tracking.ts
Normal 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
|
||||
Reference in New Issue
Block a user