import { type Component, type JSX, onMount, onCleanup, createSignal, Show } from "solid-js"; import { pb } from "@/lib/pocketbase"; import { initStore } from "@/store"; interface EmbedAuthWrapperProps { children: JSX.Element; } export const EmbedAuthWrapper: Component = (props) => { const [isHydrated, setIsHydrated] = createSignal(pb.authStore.isValid); const handleMessage = (event: MessageEvent) => { // You might want to add origin validation here if you know the sibling app domains // if (event.origin !== "https://sibling-app.com") return; const { data } = event; if (data?.type === "TASGRID_AUTH" && data.token) { console.log("Received TasGrid auth payload via postMessage"); // Hydrate PocketBase auth store pb.authStore.save(data.token, data.user || null); // Re-initialize store with new auth context initStore().then(() => { setIsHydrated(true); }); } }; onMount(() => { window.addEventListener("message", handleMessage); }); onCleanup(() => { window.removeEventListener("message", handleMessage); }); return (

Waiting for authentication...

} > {props.children}
); };