'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="登录后即可关注创作者"
/>
>
);
}