From 861eb35f1243f01e49f3aa7dfad36f1561b15e50 Mon Sep 17 00:00:00 2001 From: Mariano Fuentes Date: Tue, 26 Aug 2025 10:10:44 -0400 Subject: [PATCH 1/2] feat: update auto-pr-to-main workflow to include new chas/* path - Added chas/* to the list of paths monitored for automatic pull requests, enhancing the workflow's coverage and ensuring relevant changes are captured. --- .github/workflows/auto-pr-to-main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/auto-pr-to-main.yml b/.github/workflows/auto-pr-to-main.yml index 03632eacd..c93e9edb4 100644 --- a/.github/workflows/auto-pr-to-main.yml +++ b/.github/workflows/auto-pr-to-main.yml @@ -16,6 +16,7 @@ on: - COMP-* - cursor/* - codex/* + - chas/* jobs: create-pull-request: runs-on: warp-ubuntu-latest-arm64-4x From ee3768c40cb15a1cb31f8fc178399289180c8d8e Mon Sep 17 00:00:00 2001 From: Mariano Fuentes Date: Tue, 26 Aug 2025 10:42:56 -0400 Subject: [PATCH 2/2] refactor: update organization handling in layout and dashboard components - Modified the Header component to accept organizationId as a prop, improving flexibility. - Updated DashboardPage to retrieve organizationId from params and handle onboarding redirection. - Adjusted MainMenu and MobileMenu components to accept organizationId as an optional prop, enhancing compatibility with various use cases. - Refactored related components to ensure consistent handling of organizationId across the application. --- .../src/app/(app)/[orgId]/frameworks/page.tsx | 16 ++++++---------- apps/app/src/app/(app)/[orgId]/layout.tsx | 2 +- apps/app/src/components/header.tsx | 17 ++--------------- apps/app/src/components/main-menu.tsx | 8 +++----- apps/app/src/components/mobile-menu.tsx | 2 +- 5 files changed, 13 insertions(+), 32 deletions(-) diff --git a/apps/app/src/app/(app)/[orgId]/frameworks/page.tsx b/apps/app/src/app/(app)/[orgId]/frameworks/page.tsx index 72f2ae9ed..bb32ec3cb 100644 --- a/apps/app/src/app/(app)/[orgId]/frameworks/page.tsx +++ b/apps/app/src/app/(app)/[orgId]/frameworks/page.tsx @@ -15,27 +15,23 @@ export async function generateMetadata() { }; } -export default async function DashboardPage() { +export default async function DashboardPage({ params }: { params: Promise<{ orgId: string }> }) { + const { orgId: organizationId } = await params; + const session = await auth.api.getSession({ headers: await headers(), }); - const organizationId = session?.session.activeOrganizationId; - - if (!organizationId) { - redirect('/'); - } - const org = await db.organization.findUnique({ where: { id: organizationId }, select: { onboardingCompleted: true }, }); + if (org && org.onboardingCompleted === false) { redirect(`/onboarding/${organizationId}`); } - // Fetch current user's member information - const currentMember = await db.member.findFirst({ + const member = await db.member.findFirst({ where: { userId: session.user.id, organizationId, @@ -69,7 +65,7 @@ export default async function DashboardPage() { organizationId={organizationId} publishedPoliciesScore={publishedPoliciesScore} doneTasksScore={doneTasksScore} - currentMember={currentMember} + currentMember={member} /> ); } diff --git a/apps/app/src/app/(app)/[orgId]/layout.tsx b/apps/app/src/app/(app)/[orgId]/layout.tsx index ec730a09c..6bc8fb313 100644 --- a/apps/app/src/app/(app)/[orgId]/layout.tsx +++ b/apps/app/src/app/(app)/[orgId]/layout.tsx @@ -87,7 +87,7 @@ export default async function Layout({ } isCollapsed={isCollapsed}> {onboarding?.triggerJobId && } -
+
{children} diff --git a/apps/app/src/components/header.tsx b/apps/app/src/components/header.tsx index 52bf0b350..004266a07 100644 --- a/apps/app/src/components/header.tsx +++ b/apps/app/src/components/header.tsx @@ -1,29 +1,16 @@ import { UserMenu } from '@/components/user-menu'; import { getOrganizations } from '@/data/getOrganizations'; -import { auth } from '@/utils/auth'; import { Skeleton } from '@comp/ui/skeleton'; -import { headers } from 'next/headers'; -import { redirect } from 'next/navigation'; import { Suspense } from 'react'; import { AssistantButton } from './ai/chat-button'; import { MobileMenu } from './mobile-menu'; -export async function Header() { - const session = await auth.api.getSession({ - headers: await headers(), - }); - - const currentOrganizationId = session?.session.activeOrganizationId; - - if (!currentOrganizationId) { - redirect('/'); - } - +export async function Header({ organizationId }: { organizationId?: string }) { const { organizations } = await getOrganizations(); return (
- + diff --git a/apps/app/src/components/main-menu.tsx b/apps/app/src/components/main-menu.tsx index 8372b325b..4be652028 100644 --- a/apps/app/src/components/main-menu.tsx +++ b/apps/app/src/components/main-menu.tsx @@ -1,6 +1,5 @@ 'use client'; -import { env } from '@/env.mjs'; import { Badge } from '@comp/ui/badge'; import { Button } from '@comp/ui/button'; import { cn } from '@comp/ui/cn'; @@ -36,7 +35,7 @@ type MenuItem = { }; interface ItemProps { - organizationId: string; + organizationId?: string; item: MenuItem; isActive: boolean; disabled: boolean; @@ -49,7 +48,6 @@ export function MainMenu({ organizationId, isCollapsed = false, onItemClick }: P const pathname = usePathname(); const [activeStyle, setActiveStyle] = useState({ top: '0px', height: '0px' }); const itemRefs = useRef<(HTMLDivElement | null)[]>([]); - const isDubEnabled = env.NEXT_PUBLIC_IS_DUB_ENABLED === 'true'; const items: MenuItem[] = [ { @@ -242,7 +240,7 @@ const Item = ({ }: ItemProps) => { const Icon = item.icon; const linkDisabled = disabled || item.disabled; - const itemPath = item.path.replace(':organizationId', organizationId); + const itemPath = item.path.replace(':organizationId', organizationId ?? ''); if (linkDisabled) { return ( @@ -315,7 +313,7 @@ const Item = ({ }; type Props = { - organizationId: string; + organizationId?: string; isCollapsed?: boolean; onItemClick?: () => void; }; diff --git a/apps/app/src/components/mobile-menu.tsx b/apps/app/src/components/mobile-menu.tsx index 769f7a803..673c7e5a3 100644 --- a/apps/app/src/components/mobile-menu.tsx +++ b/apps/app/src/components/mobile-menu.tsx @@ -11,7 +11,7 @@ import { OrganizationSwitcher } from './organization-switcher'; interface MobileMenuProps { organizations: Organization[]; isCollapsed?: boolean; - organizationId: string; + organizationId?: string; } export function MobileMenu({ organizationId, organizations }: MobileMenuProps) {