diff --git a/client/pages/Directory.tsx b/client/pages/Directory.tsx index 87c0b6f0..d8a7be60 100644 --- a/client/pages/Directory.tsx +++ b/client/pages/Directory.tsx @@ -19,7 +19,7 @@ export default function Directory() { const [hideAeThex, setHideAeThex] = useState(true); type BasicDev = { id: string; name: string; avatar_url?: string | null; location?: string | null; user_type?: string | null; experience_level?: string | null }; const [devs, setDevs] = useState([]); - type Studio = { id: string; name: string; description?: string | null; type?: string | null; is_recruiting?: boolean | null; recruiting_roles?: string[] | null; tags?: string[] | null; slug?: string | null; visibility?: string | null }; + type Studio = { id: string; name: string; description?: string | null; type?: string | null; is_recruiting?: boolean | null; recruiting_roles?: string[] | null; tags?: string[] | null; slug?: string | null; visibility?: string | null; members_count?: number }; const [studios, setStudios] = useState([]); useEffect(() => { @@ -60,18 +60,28 @@ export default function Directory() { tags: r.tags ?? null, slug: r.slug || null, visibility: r.visibility || null, + members_count: + Array.isArray(r.collective_members) && r.collective_members.length + ? Number(r.collective_members[0]?.count ?? 0) + : Array.isArray(r.team_memberships) && r.team_memberships.length + ? Number(r.team_memberships[0]?.count ?? 0) + : undefined, }); client .from(studiosTable as any) - .select(client === devconnect ? "id,name,description,type,is_recruiting,recruiting_roles,tags,slug,created_at" : "id,name,description,visibility,created_at") + .select( + client === devconnect + ? "id,name,description,type,is_recruiting,recruiting_roles,tags,slug,created_at, collective_members:collective_members(count)" + : "id,name,description,visibility,created_at, team_memberships:team_memberships(count)" + ) .limit(200) .then(({ data, error }) => { if (!error && Array.isArray(data)) setStudios(data.map(mapStudio)); else if (client !== supabase) { supabase .from("teams" as any) - .select("id,name,description,visibility,created_at") + .select("id,name,description,visibility,created_at, team_memberships:team_memberships(count)") .limit(200) .then(({ data: d2 }) => setStudios((d2 || []).map(mapStudio))); } @@ -171,6 +181,14 @@ export default function Directory() {

{t.description || ""}

+
+ {typeof t.members_count === "number" && ( + {t.members_count} members + )} + {(t.recruiting_roles && t.recruiting_roles.length > 0) && ( + Roles: {t.recruiting_roles!.join(", ")} + )} +
{(t.tags && t.tags.length > 0) && (
{t.tags!.map((tag) => ( @@ -178,9 +196,6 @@ export default function Directory() { ))}
)} - {(t.recruiting_roles && t.recruiting_roles.length > 0) && ( -
Roles: {t.recruiting_roles!.join(", ")}
- )}
))}