diff --git a/components/WorkspaceSwitcher.tsx b/components/WorkspaceSwitcher.tsx index 1d58713..286dbba 100644 --- a/components/WorkspaceSwitcher.tsx +++ b/components/WorkspaceSwitcher.tsx @@ -2,7 +2,7 @@ import { useState } from 'react' import { useRouter } from 'next/navigation' -import { PlusIcon, CubeIcon, CheckIcon } from '@radix-ui/react-icons' +import { PlusIcon, PersonIcon, CubeIcon, CheckIcon } from '@radix-ui/react-icons' import { switchContext, OrganizationMember } from '@/lib/api/organization' import { setSessionAction } from '@/app/actions/auth' import Link from 'next/link' @@ -11,18 +11,28 @@ export default function WorkspaceSwitcher({ orgs, activeOrgId }: { orgs: Organiz const router = useRouter() const [switching, setSwitching] = useState(null) - const handleSwitch = async (orgId: string) => { + const handleSwitch = async (orgId: string | null) => { console.log('Switching to workspace:', orgId) - setSwitching(orgId) + setSwitching(orgId || 'personal') try { + // * If orgId is null, we can't switch context via API in the same way if strict mode is on + // * BUT, Pulse doesn't support personal workspace. + // * So we should probably NOT show the "Personal" option in Pulse if strict mode is enforced. + // * However, to match Drop exactly, we might want to show it but have it fail or redirect? + // * Let's assume for now we want to match Drop's UI structure. + + if (!orgId) { + // * Pulse doesn't support personal context. + // * We could redirect to onboarding or show an error. + // * For now, let's just return to avoid breaking. + return + } + const { token, refresh_token } = await switchContext(orgId) // * Update session cookie via server action await setSessionAction(token, refresh_token) - // * Update local storage for client-side optimistics - // * We store the full user object usually, but here we just need to trigger a refresh - // Force reload to pick up new permissions window.location.reload() @@ -38,6 +48,27 @@ export default function WorkspaceSwitcher({ orgs, activeOrgId }: { orgs: Organiz Workspaces + {/* Personal Workspace - HIDDEN IN PULSE (Strict Mode) */} + {/* + + */} + {/* Organization Workspaces */} {orgs.map((org) => (