'use client'; import React, { useEffect, useState, useTransition } from 'react'; import { useRouter } from 'next/navigation'; import { ChevronDown, Eye, Building2 } from 'lucide-react'; type TenantOpt = { id: string; name: string; slug: string }; export default function TenantSwitcher({ initialName, isAgency, }: { initialName: string; isAgency: boolean; }) { const router = useRouter(); const [open, setOpen] = useState(false); const [tenants, setTenants] = useState([]); const [activeName, setActiveName] = useState(initialName); const [activeId, setActiveId] = useState(null); const [pending, startTransition] = useTransition(); useEffect(() => { if (!isAgency) return; const match = document.cookie.match(/(?:^|; )4v_view_tenant_name=([^;]*)/); const idMatch = document.cookie.match(/(?:^|; )4v_view_tenant_id=([^;]*)/); if (match?.[1]) setActiveName(decodeURIComponent(match[1])); if (idMatch?.[1]) setActiveId(decodeURIComponent(idMatch[1])); fetch('/api/admin/portfolio') .then((r) => r.json()) .then((d) => { const list = (d.portfolio || []) .filter((t: { agency_followed?: boolean }) => t.agency_followed !== false) .map((t: { id: string; name: string; slug: string }) => ({ id: t.id, name: t.name, slug: t.slug, })); setTenants(list); }) .catch(() => {}); }, [isAgency]); if (!isAgency) { return ( {initialName} ); } async function select(tenant: TenantOpt | null) { setOpen(false); await fetch('/api/admin/active-tenant', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ tenantId: tenant?.id ?? null }), }); setActiveId(tenant?.id ?? null); setActiveName(tenant?.name ?? 'Vista global agencia'); startTransition(() => router.refresh()); } return (
{open && (
{tenants.length === 0 ? (

Sin tenants ยท da de alta en Agencia OS

) : ( tenants.map((t) => ( )) )}
)}
); }