postiz/libraries/react-shared-libraries/src/helpers/use.track.tsx

42 lines
1.1 KiB
TypeScript

import { TrackEnum } from '@gitroom/nestjs-libraries/user/track.enum';
import { useUser } from '@gitroom/frontend/components/layout/user.context';
import { useFetch } from '@gitroom/helpers/utils/custom.fetch';
import { useCallback } from 'react';
import { useVariables } from '@gitroom/react/helpers/variable.context';
export const useTrack = () => {
const user = useUser();
const fetch = useFetch();
const {facebookPixel} = useVariables();
return useCallback(
async (track: TrackEnum, additional?: Record<string, any>) => {
if (!facebookPixel) {
return;
}
try {
if (window.fbq) {
// @ts-ignore
window.fbq('track', TrackEnum[track], additional);
}
await fetch(user ? `/user/t` : `/public/t`, {
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
tt: track,
...(additional ? { additional } : {}),
}),
});
} catch (e) {
console.log(e);
}
},
[user]
);
};