'use client' import type { ReactNode } from 'react' import { useQuery } from '@tanstack/react-query' import { useEffect } from 'react' import { useTranslation } from 'react-i18next' import useDocumentTitle from '@/hooks/use-document-title' import { usePathname, useRouter } from '@/next/navigation' import { consoleQuery } from '@/service/client' type AgentDetailLayoutProps = { agentId: string children: ReactNode } const isNotFoundResponse = (error: unknown) => error instanceof Response && error.status === 404 export function AgentDetailLayout({ agentId, children }: AgentDetailLayoutProps) { const { t } = useTranslation('agentV2') const pathname = usePathname() const router = useRouter() const agentQuery = useQuery( consoleQuery.agent.byAgentId.get.queryOptions({ input: { params: { agent_id: agentId, }, }, }), ) const shouldRedirectToRoster = isNotFoundResponse(agentQuery.error) const section = pathname.endsWith('/access') ? 'access' : pathname.endsWith('/logs') ? 'logs' : pathname.endsWith('/monitoring') ? 'monitoring' : 'configure' const sectionTitle = t(($) => $[`agentDetail.sections.${section}`]) const agentTitle = agentQuery.data?.name ?? t(($) => $['agentDetail.documentTitle']) useDocumentTitle(`${sectionTitle} ยท ${agentTitle}`) useEffect(() => { if (shouldRedirectToRoster) router.replace('/agents') }, [router, shouldRedirectToRoster]) if (shouldRedirectToRoster) return null return (
{children}
) }