'use client'; import { useState } from 'react'; import { LoginPrompt } from '@/components/auth/LoginPrompt'; import { PlazaApiError, toggleFollow } from '@/lib/api'; type FollowButtonProps = { slug: string; initialFollowing?: boolean; className?: string; }; export function FollowButton({ slug, initialFollowing, className = '' }: FollowButtonProps) { const [following, setFollowing] = useState(initialFollowing ?? false); const [loginOpen, setLoginOpen] = useState(false); const [busy, setBusy] = useState(false); const handleClick = async () => { if (busy) return; setBusy(true); try { const result = await toggleFollow(slug, following); setFollowing(result.following); } catch (error) { if (error instanceof PlazaApiError && error.code === 'unauthorized') { setLoginOpen(true); } } finally { setBusy(false); } }; return ( <> setLoginOpen(false)} message="登录后即可关注创作者" /> ); }