diff --git a/frontend/src/app/api/edge-flags/route.ts b/frontend/src/app/api/edge-flags/route.ts index 1f27ebee..f59a2507 100644 --- a/frontend/src/app/api/edge-flags/route.ts +++ b/frontend/src/app/api/edge-flags/route.ts @@ -3,7 +3,11 @@ import { maintenanceNoticeFlag } from '@/lib/edge-flags'; export const runtime = 'edge'; export async function GET() { - const maintenanceNotice = await maintenanceNoticeFlag(); - - return Response.json(maintenanceNotice); + try { + const maintenanceNotice = await maintenanceNoticeFlag(); + return Response.json(maintenanceNotice); + } catch (error) { + console.error('[API] Error in edge flags route:', error); + return Response.json({ enabled: false }, { status: 500 }); + } } \ No newline at end of file diff --git a/frontend/src/components/dashboard/layout-content.tsx b/frontend/src/components/dashboard/layout-content.tsx index 0e237633..186ef736 100644 --- a/frontend/src/components/dashboard/layout-content.tsx +++ b/frontend/src/components/dashboard/layout-content.tsx @@ -1,10 +1,8 @@ 'use client'; -import { useEffect, useState } from 'react'; +import { useEffect } from 'react'; import { SidebarLeft, FloatingMobileMenuButton } from '@/components/sidebar/sidebar-left'; import { SidebarInset, SidebarProvider } from '@/components/ui/sidebar'; -// import { PricingAlert } from "@/components/billing/pricing-alert" -import { MaintenanceAlert } from '@/components/maintenance-alert'; import { useAccounts } from '@/hooks/use-accounts'; import { useAuth } from '@/components/AuthProvider'; import { useMaintenanceNoticeQuery } from '@/hooks/react-query/edge-flags'; @@ -14,13 +12,12 @@ import { useApiHealth } from '@/hooks/react-query'; import { MaintenancePage } from '@/components/maintenance/maintenance-page'; import { DeleteOperationProvider } from '@/contexts/DeleteOperationContext'; import { StatusOverlay } from '@/components/ui/status-overlay'; -import { MaintenanceNotice } from './maintenance-notice'; -import { MaintenanceBanner } from './maintenance-banner'; import { useProjects, useThreads } from '@/hooks/react-query/sidebar/use-sidebar'; import { useIsMobile } from '@/hooks/use-mobile'; import { useAgents } from '@/hooks/react-query/agents/use-agents'; import { SubscriptionProvider } from '@/contexts/SubscriptionContext'; +import { MaintenanceAlert } from '../maintenance-alert'; interface DashboardLayoutContentProps { children: React.ReactNode; @@ -29,21 +26,18 @@ interface DashboardLayoutContentProps { export default function DashboardLayoutContent({ children, }: DashboardLayoutContentProps) { - // const [showPricingAlert, setShowPricingAlert] = useState(false) - const [showMaintenanceAlert, setShowMaintenanceAlert] = useState(false); const { data: accounts } = useAccounts(); const personalAccount = accounts?.find((account) => account.personal_account); const { user, isLoading } = useAuth(); const router = useRouter(); const isMobile = useIsMobile(); - const { data: maintenanceNotice } = useMaintenanceNoticeQuery(); + const { data: maintenanceNotice, isLoading: maintenanceLoading } = useMaintenanceNoticeQuery(); const { data: healthData, isLoading: isCheckingHealth, error: healthError, } = useApiHealth(); - // Prefetch sidebar data for better mobile experience const { data: projects } = useProjects(); const { data: threads } = useThreads(); const { data: agentsResponse } = useAgents({ @@ -53,11 +47,10 @@ export default function DashboardLayoutContent({ }); useEffect(() => { - // setShowPricingAlert(false) if (maintenanceNotice?.enabled) { - setShowMaintenanceAlert(true); + // setShowMaintenanceAlert(true); // This line was removed } else { - setShowMaintenanceAlert(false); + // setShowMaintenanceAlert(false); // This line was removed } }, [maintenanceNotice]); @@ -86,8 +79,8 @@ export default function DashboardLayoutContent({ let mantenanceBanner: React.ReactNode | null = null; - // Show loading state while checking auth or health - if (isLoading || isCheckingHealth) { + // Show loading state while checking auth, health, or maintenance status + if (isLoading || isCheckingHealth || maintenanceLoading) { return (