import { useState } from 'react' import api from '../lib/api' interface Props { onClose: () => void } export default function FriendSearchDialog({ onClose }: Props) { const [mode, setMode] = useState<'email' | 'character'>('email') const [input, setInput] = useState({ email: '', name: '', server: '' }) const [result, setResult] = useState(null) const [error, setError] = useState(null) const [loading, setLoading] = useState(false) const handleSearch = async () => { setLoading(true) setError(null) setResult(null) try { const res = mode === 'email' ? await api.get('/users/public-info', { params: { email: input.email } }) : await api.get('/users/by-character', { params: { server: input.server, name: input.name } }) setResult(res.data) } catch (e: any) { setError(e.response?.data?.detail || '검색에 실패했습니다.') } finally { setLoading(false) } } const handleRequest = async () => { try { await api.post('/friends/request', { to_user_email: result.email }) alert('친구 요청을 보냈습니다.') onClose() } catch { alert('요청 실패') } } return ( <>

친구 추가

{mode === 'email' ? ( setInput({ ...input, email: e.target.value })} /> ) : ( <> setInput({ ...input, server: e.target.value })} /> setInput({ ...input, name: e.target.value })} /> )}
{error &&

{error}

} {result && (

이메일: {result.email}

공개 여부: {result.is_public ? '공개' : '비공개'}

{result.is_friend ? (

✅ 이미 친구입니다

) : result.request_sent ? (

⏳ 이미 요청 보낸 상태입니다

) : result.request_received ? (

📩 상대가 요청을 보냈습니다 (요청 수락 화면에서 처리)

) : ( )}
)}
) }