"use client"; import { useEffect, useState } from "react"; import { Link } from "@/i18n/navigation"; import SocialGreetButton from "@/app/components/SocialGreetButton"; import { mediaUrl } from "@/app/lib/media"; import { fetchMeetupSocialSuggestions, type PublicProfile } from "@/app/lib/social"; interface MeetupSocialPanelProps { meetupId: string; city: string; locale?: string; compact?: boolean; } export default function MeetupSocialPanel({ meetupId, city, locale = "zh", compact = false, }: MeetupSocialPanelProps) { const [members, setMembers] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { if (!meetupId) return; fetchMeetupSocialSuggestions(meetupId) .then((data) => setMembers(data.items || [])) .catch(() => setMembers([])) .finally(() => setLoading(false)); }, [meetupId]); if (loading) { return (
); } if (!members.length) return null; return (

{locale === "zh" ? "活动后继续聊" : "Keep connecting"}

{locale === "zh" ? `同城 ${city} 成员,优先展示一起报名的伙伴` : `Members in ${city}, RSVP attendees first`}

{locale === "zh" ? "去匹配" : "Go matching"}
{members.slice(0, compact ? 4 : 6).map((member) => (
{member.name
{member.name}

{member.location}

{"rsvpAttendee" in member && (member as PublicProfile & { rsvpAttendee?: boolean }).rsvpAttendee ? ( {locale === "zh" ? "同场报名" : "RSVP"} ) : null}
))}
); }