11"use client"
22
33import Link from "next/link"
4- import { type ReactNode , useEffect , useContext } from "react"
5- import { type Event } from "@/lib/types"
4+ import { type ReactNode , useEffect } from "react"
65import va from "@vercel/analytics"
7- import { VariantContext } from "../context/VariantProvider"
86
97type Props = {
108 children : ReactNode
@@ -17,29 +15,11 @@ type Props = {
1715 onClick ?: ( ) => void
1816}
1917
20- async function logEvent ( event : Event ) : Promise < void > {
21- // Log vercel
22- event . params = event . params || { }
23- if ( event . variantIds ) {
24- event . variantIds . forEach ( ( id ) => {
25- event . params ! [ id . substring ( 0 , id . length - 1 ) ] = id . slice ( - 1 )
26- } )
27- }
28- va . track (
29- event . name ,
30- Object . keys ( event . params ) . length > 0 ? event . params : undefined
31- )
32-
33- // Log amplitude
34- if ( event . userId && event . variantIds ) {
35- fetch ( "/api/events" , {
36- method : "POST" ,
37- headers : {
38- "Content-Type" : "application/json" ,
39- } ,
40- body : JSON . stringify ( event ) ,
41- } )
42- }
18+ async function logEvent (
19+ name : string ,
20+ params ?: Record < string , string | number | boolean | null >
21+ ) : Promise < void > {
22+ va . track ( name , params && Object . keys ( params ) . length > 0 ? params : undefined )
4323}
4424
4525export default function EventLink ( {
@@ -52,36 +32,20 @@ export default function EventLink({
5232 className,
5333 onClick,
5434} : Props ) {
55- const variantCtx = useContext ( VariantContext )
56-
5735 useEffect ( ( ) => {
58- async function log ( ) {
59- await logEvent ( {
60- name : event + " Viewed" ,
61- params,
62- userId : variantCtx . userId ,
63- variantIds : variantCtx . ids ,
64- } )
65- }
6636 if ( event && logView ) {
67- // The timeout puts this in the back of the event queue, giving vercel analytics time to load.
6837 setTimeout ( ( ) => {
69- log ( )
38+ logEvent ( event + " Viewed" , params )
7039 } , 0 )
7140 }
72- } , [ variantCtx , event , params , logView ] )
41+ } , [ event , params , logView ] )
7342
7443 const handleClick = async ( ) => {
7544 if ( onClick ) {
7645 onClick ( )
7746 }
7847 if ( event ) {
79- await logEvent ( {
80- name : event + " Clicked" ,
81- params,
82- userId : variantCtx . userId ,
83- variantIds : variantCtx . ids ,
84- } )
48+ await logEvent ( event + " Clicked" , params )
8549 }
8650 }
8751
0 commit comments