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:
Dheeraj-P-Girish 2025-08-28 14:08:14 +05:30 committed by GitHub
parent 3891f1952c
commit 756cf88a2f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

59
docs/src/theme/Root.js Normal file
View 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}</>;
}