forked from gitroomhq/postiz-app
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutm.saver.tsx
47 lines (40 loc) Β· 1.33 KB
/
utm.saver.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import {FC, useCallback, useEffect} from "react";
import {useSearchParams} from "next/navigation";
const UtmSaver: FC = () => {
const query = useSearchParams();
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');
const utmMedium = query.get('utm_medium');
const utmCampaign = query.get('utm_campaign');
if (utm) {
localStorage.setItem('utm', utm);
}
if (utmMedium) {
localStorage.setItem('utm_medium', utmMedium);
}
if (utmCampaign) {
localStorage.setItem('utm_campaign', utmCampaign);
}
}, [query]);
return <></>;
}
export const useUtmSaver = () => {
return useCallback(() => {
return {
utm: localStorage.getItem('utm'),
utmMedium: localStorage.getItem('utm_medium'),
utmCampaign: localStorage.getItem('utm_campaign'),
landingUrl: localStorage.getItem('landingUrl'),
referrer: localStorage.getItem('referrer'),
}
}, []);
}
export default UtmSaver;