49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
'use client';
|
|
|
|
import { FC, useCallback, useEffect } from 'react';
|
|
import { useSearchParams } from 'next/navigation';
|
|
import { useLocalStorage } from '@mantine/hooks';
|
|
import { TrackEnum } from '@gitroom/nestjs-libraries/user/track.enum';
|
|
import { useFireEvents } from '@gitroom/helpers/utils/use.fire.events';
|
|
import { useTrack } from '@gitroom/react/helpers/use.track';
|
|
|
|
const UtmSaver: FC = () => {
|
|
const query = useSearchParams();
|
|
const [value, setValue] = useLocalStorage({ key: 'utm', defaultValue: '' });
|
|
const searchParams = useSearchParams();
|
|
const fireEvents = useFireEvents();
|
|
const track = useTrack();
|
|
|
|
useEffect(() => {
|
|
if (searchParams.get('check')) {
|
|
fireEvents('purchase');
|
|
track(TrackEnum.StartTrial);
|
|
}
|
|
}, []);
|
|
|
|
useEffect(() => {
|
|
const landingUrl = localStorage.getItem('landingUrl');
|
|
if (landingUrl) {
|
|
return;
|
|
}
|
|
|
|
localStorage.setItem('landingUrl', window.location.href);
|
|
localStorage.setItem('referrer', document.referrer);
|
|
}, []);
|
|
|
|
useEffect(() => {
|
|
const utm = query.get('utm_source') || query.get('utm') || query.get('ref');
|
|
if (utm && !value) {
|
|
setValue(utm);
|
|
}
|
|
}, [query, value]);
|
|
|
|
return <></>;
|
|
};
|
|
|
|
export const useUtmUrl = () => {
|
|
const [value] = useLocalStorage({ key: 'utm', defaultValue: '' });
|
|
return value || '';
|
|
};
|
|
export default UtmSaver;
|