Compare commits

...

1 Commits

Author SHA1 Message Date
Henry
6878c5af5a fix: reliably select workspace on login 2026-05-21 15:38:15 +01:00

View File

@@ -103,19 +103,24 @@ export const WorkspaceProvider: React.FC<{ children: ReactNode }> = ({
} }
if (storedWorkspaceId !== null) { if (storedWorkspaceId !== null) {
const newData = data; const selectedWorkspace = data.find(
const selectedWorkspace = newData.find(
({ workspace }) => workspace.publicId === storedWorkspaceId, ({ workspace }) => workspace.publicId === storedWorkspaceId,
); );
if (!selectedWorkspace?.workspace) { if (!selectedWorkspace?.workspace) {
if (pendingWorkspaceId) {
pollAttemptsRef.current += 1; pollAttemptsRef.current += 1;
if (pollAttemptsRef.current >= MAX_POLL_ATTEMPTS) { if (pollAttemptsRef.current >= MAX_POLL_ATTEMPTS) {
setPendingWorkspaceId(null); setPendingWorkspaceId(null);
} localStorage.removeItem("workspacePublicId");
} else {
return; return;
} }
} else {
// Clear stale workspacePublicId from localStorage
localStorage.removeItem("workspacePublicId");
}
} else {
pollAttemptsRef.current = 0; pollAttemptsRef.current = 0;
setPendingWorkspaceId(null); setPendingWorkspaceId(null);
@@ -125,7 +130,7 @@ export const WorkspaceProvider: React.FC<{ children: ReactNode }> = ({
slug: selectedWorkspace.workspace.slug, slug: selectedWorkspace.workspace.slug,
plan: selectedWorkspace.workspace.plan, plan: selectedWorkspace.workspace.plan,
description: selectedWorkspace.workspace.description, description: selectedWorkspace.workspace.description,
role: selectedWorkspace.role, role: selectedWorkspace.role as "admin" | "member" | "guest",
weekStartDay: selectedWorkspace.workspace.weekStartDay as 0 | 1 | 6, weekStartDay: selectedWorkspace.workspace.weekStartDay as 0 | 1 | 6,
cardPrefix: selectedWorkspace.workspace.cardPrefix, cardPrefix: selectedWorkspace.workspace.cardPrefix,
}); });
@@ -134,7 +139,12 @@ export const WorkspaceProvider: React.FC<{ children: ReactNode }> = ({
router.push(`/boards`); router.push(`/boards`);
localStorage.setItem("workspacePublicId", workspacePublicId); localStorage.setItem("workspacePublicId", workspacePublicId);
} }
} else {
setHasLoaded(true);
return;
}
}
const primaryWorkspace = data[0]?.workspace; const primaryWorkspace = data[0]?.workspace;
const primaryWorkspaceRole = data[0]?.role; const primaryWorkspaceRole = data[0]?.role;
@@ -146,12 +156,19 @@ export const WorkspaceProvider: React.FC<{ children: ReactNode }> = ({
slug: primaryWorkspace.slug, slug: primaryWorkspace.slug,
plan: primaryWorkspace.plan, plan: primaryWorkspace.plan,
description: primaryWorkspace.description, description: primaryWorkspace.description,
role: primaryWorkspaceRole, role: primaryWorkspaceRole as "admin" | "member" | "guest",
weekStartDay: primaryWorkspace.weekStartDay as 0 | 1 | 6, weekStartDay: primaryWorkspace.weekStartDay as 0 | 1 | 6,
cardPrefix: primaryWorkspace.cardPrefix, cardPrefix: primaryWorkspace.cardPrefix,
}); });
} setHasLoaded(true);
}, [data, isLoading, isFetching, workspacePublicId, router]); }, [
data,
isLoading,
isFetching,
workspacePublicId,
pendingWorkspaceId,
router,
]);
return ( return (
<WorkspaceContext.Provider <WorkspaceContext.Provider