updating iframe auth handling
This commit is contained in:
+18
-8
@@ -26,6 +26,7 @@ const App: Component = () => {
|
||||
|
||||
onMount(() => {
|
||||
const removeListener = pb.authStore.onChange((token) => {
|
||||
console.log('[DEBUG] pb.authStore.onChange fired, token present:', !!token);
|
||||
setIsAuthenticated(!!token);
|
||||
if (token) {
|
||||
initStore();
|
||||
@@ -56,13 +57,22 @@ const App: Component = () => {
|
||||
});
|
||||
});
|
||||
|
||||
// Determine if we are in an embed route
|
||||
const isEmbed = () => window.location.pathname.startsWith('/embed/');
|
||||
const embedView = () => {
|
||||
// Determine if we are in an embed route (check both path and hash for compatibility)
|
||||
const isEmbed = () => {
|
||||
const path = window.location.pathname;
|
||||
if (path.includes('/notes')) return 'embed_notes';
|
||||
if (path.includes('/quick-add')) return 'embed_quick_add';
|
||||
return null;
|
||||
const hash = window.location.hash;
|
||||
const res = path.startsWith('/embed/') || hash.startsWith('#/embed/');
|
||||
console.log('[DEBUG] isEmbed check:', { res, path, hash, href: window.location.href });
|
||||
return res;
|
||||
};
|
||||
|
||||
const getEmbedView = () => {
|
||||
const fullPath = window.location.pathname + window.location.hash;
|
||||
let view = null;
|
||||
if (fullPath.includes('/notes')) view = 'embed_notes';
|
||||
else if (fullPath.includes('/quick-add')) view = 'embed_quick_add';
|
||||
console.log('[DEBUG] getEmbedView detected:', view, 'Full URL context:', fullPath);
|
||||
return view;
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -89,10 +99,10 @@ const App: Component = () => {
|
||||
<EmbedAuthWrapper>
|
||||
<EmbedLayout>
|
||||
<Suspense fallback={<div class="flex items-center justify-center h-full"><div class="animate-spin rounded-full h-8 w-8 border-b-2 border-primary"></div></div>}>
|
||||
<Show when={embedView() === "embed_notes"}>
|
||||
<Show when={getEmbedView() === "embed_notes"}>
|
||||
<EmbedNotesView />
|
||||
</Show>
|
||||
<Show when={embedView() === "embed_quick_add"}>
|
||||
<Show when={getEmbedView() === "embed_quick_add"}>
|
||||
<EmbedQuickAddView />
|
||||
</Show>
|
||||
</Suspense>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
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;
|
||||
@@ -10,24 +9,18 @@ export const EmbedAuthWrapper: Component<EmbedAuthWrapperProps> = (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;
|
||||
console.log('[DEBUG] EmbedAuthWrapper received message:', data?.type);
|
||||
if (data?.type === "TASGRID_AUTH" && data.token) {
|
||||
console.log("Received TasGrid auth payload via postMessage");
|
||||
|
||||
// Hydrate PocketBase auth store
|
||||
console.log("[DEBUG] Received TasGrid auth payload, hydrating...");
|
||||
// Save triggers pb.authStore.onChange, which App.tsx is already listening to and calling initStore()
|
||||
pb.authStore.save(data.token, data.user || null);
|
||||
|
||||
// Re-initialize store with new auth context
|
||||
initStore().then(() => {
|
||||
setIsHydrated(true);
|
||||
});
|
||||
setIsHydrated(true);
|
||||
}
|
||||
};
|
||||
|
||||
onMount(() => {
|
||||
console.log('[DEBUG] EmbedAuthWrapper mounted. Initial isHydrated:', isHydrated());
|
||||
window.addEventListener("message", handleMessage);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user