From 193bf0b7a6a4ddc52eb9e52d643f5802f08d4b96 Mon Sep 17 00:00:00 2001 From: Carter Date: Mon, 22 Dec 2025 15:41:47 -0600 Subject: [PATCH] updating crips settings in a useEffect when we know it's ready --- src/app/UserWrapper.tsx | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/app/UserWrapper.tsx b/src/app/UserWrapper.tsx index 74d55df..8905875 100644 --- a/src/app/UserWrapper.tsx +++ b/src/app/UserWrapper.tsx @@ -68,7 +68,7 @@ export default function UserWrapper(props: Props) { const user_id = or(useAuth.user?.sub, "") - window.CRISP_RUNTIME_CONFIG = { session_merge: true }; + const crispInitialized = useRef(false); Crisp.configure(import.meta.env.VITE_CRISP_WEBSITE_ID); const loadUser = useCallback(() => { @@ -104,20 +104,26 @@ export default function UserWrapper(props: Props) { .finally(() => { setLoading(false) hasFetched.current = true; - if (global?.user && global?.user.settings.email) { // Assuming you have user object from your auth/settings - Crisp.user.setEmail(global?.user.settings.email); - // Optional: Set nickname or other info - Crisp.user.setNickname(global?.user.settings.name || "User"); - Crisp.user.setPhone(global?.user.settings.phoneNumber); - - // For extra security (marks email as verified, prevents spoofing): - // Crisp.user.setEmail(user.email, "your-hmac-signature-here"); // See Crisp docs for signing - - // Optional: For session continuity across devices/browsers - Crisp.setTokenId(global?.user.id()); // e.g., your DB user ID - } }) }, [setGlobal]) + + useEffect(() => { + if (!crispInitialized.current && global?.user) { + Crisp.configure(import.meta.env.VITE_CRISP_WEBSITE_ID); + crispInitialized.current = true; + Crisp.session.reset(); + Crisp.user.setEmail(global?.user.settings.email); + // Optional: Set nickname or other info + Crisp.user.setNickname(global?.user.settings.name || global?.user.settings.email); + Crisp.user.setPhone(global?.user.settings.phoneNumber); + + // For extra security (marks email as verified, prevents spoofing): + // Crisp.user.setEmail(user.email, "your-hmac-signature-here"); // See Crisp docs for signing + + // Optional: For session continuity across devices/browsers + Crisp.setTokenId(global?.user.id()); // e.g., your DB user ID + } + }, [global]); useEffect(() => { if (loading) return;