mirror of
https://github.com/ToolJet/ToolJet
synced 2026-04-21 21:47:17 +00:00
fix:storing the UTM params in the local storage and passing the UTM params to tooljet.ai (#13930)
Co-authored-by: Dheeraj P Girish <dheerajpgirish@Dheeraj-ka-MacBook-Pro.local>
This commit is contained in:
parent
3891f1952c
commit
756cf88a2f
1 changed files with 59 additions and 0 deletions
59
docs/src/theme/Root.js
Normal file
59
docs/src/theme/Root.js
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
import React, { useEffect } from "react";
|
||||
|
||||
export default function Root({ children }) {
|
||||
function storeUTMParams() {
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
const storedParams = JSON.parse(
|
||||
sessionStorage.getItem("utmParams") || "{}"
|
||||
);
|
||||
let hasNewParams = false;
|
||||
|
||||
urlParams.forEach((value, key) => {
|
||||
if (key.startsWith("utm_")) {
|
||||
storedParams[key] = value;
|
||||
hasNewParams = true;
|
||||
}
|
||||
});
|
||||
|
||||
if (hasNewParams) {
|
||||
sessionStorage.setItem("utmParams", JSON.stringify(storedParams));
|
||||
}
|
||||
}
|
||||
|
||||
function handleLinkClick(event) {
|
||||
const target = event.target.closest("a.navbar-website, a.navbar-signin");
|
||||
if (!target) return;
|
||||
|
||||
const storedParams = JSON.parse(
|
||||
sessionStorage.getItem("utmParams") || "{}"
|
||||
);
|
||||
if (Object.keys(storedParams).length === 0) return;
|
||||
|
||||
try {
|
||||
const url = new URL(target.href);
|
||||
|
||||
// Append stored UTM params
|
||||
Object.entries(storedParams).forEach(([key, value]) => {
|
||||
url.searchParams.set(key, value);
|
||||
});
|
||||
|
||||
// Redirect with updated URL
|
||||
event.preventDefault();
|
||||
window.location.href = url.toString();
|
||||
} catch (e) {
|
||||
console.error("Invalid URL in navbar link:", target.href);
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
storeUTMParams();
|
||||
|
||||
document.addEventListener("click", handleLinkClick);
|
||||
|
||||
return () => {
|
||||
document.removeEventListener("click", handleLinkClick);
|
||||
};
|
||||
}, []);
|
||||
|
||||
return <>{children}</>;
|
||||
}
|
||||
Loading…
Reference in a new issue