'use client'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; interface Props { circleId: string; initialMember: boolean; isPublic: boolean; } export function CircleJoinButton({ circleId, initialMember, isPublic }: Props) { const router = useRouter(); const [member, setMember] = useState(initialMember); const [loading, setLoading] = useState(false); const act = async (action: 'join' | 'leave') => { setLoading(true); try { const res = await fetch(`/api/my/circles/${circleId}/${action}`, { method: 'POST' }); if (res.ok) { setMember(action === 'join'); router.refresh(); } } finally { setLoading(false); } }; if (member) { return ( ); } return ( ); }