Merge pull request #9 from nightbug-xx/codex/친구정보-출력-문제-수정
Fix friend request list user info
This commit is contained in:
commit
bdb8c22ec1
@ -5,6 +5,8 @@ interface FriendRequest {
|
|||||||
id: number
|
id: number
|
||||||
from_user_id: number
|
from_user_id: number
|
||||||
to_user_id: number
|
to_user_id: number
|
||||||
|
from_user_email?: string
|
||||||
|
to_user_email?: string
|
||||||
status: 'pending' | 'accepted' | 'rejected' | 'cancelled'
|
status: 'pending' | 'accepted' | 'rejected' | 'cancelled'
|
||||||
created_at: string
|
created_at: string
|
||||||
}
|
}
|
||||||
@ -21,11 +23,17 @@ export default function FriendRequestsPage() {
|
|||||||
const res = await api.get(url)
|
const res = await api.get(url)
|
||||||
setRequests(res.data)
|
setRequests(res.data)
|
||||||
|
|
||||||
const userIds = res.data.map((r: FriendRequest) =>
|
|
||||||
tab === 'received' ? r.from_user_id : r.to_user_id
|
|
||||||
)
|
|
||||||
const emails = await Promise.all(
|
const emails = await Promise.all(
|
||||||
userIds.map(id => api.get(`/users/${id}`).then(res => [id, res.data.email]))
|
res.data.map(async (r: FriendRequest) => {
|
||||||
|
const targetId = tab === 'received' ? r.from_user_id : r.to_user_id
|
||||||
|
const emailFromResponse =
|
||||||
|
tab === 'received' ? r.from_user_email : r.to_user_email
|
||||||
|
if (emailFromResponse) {
|
||||||
|
return [targetId, emailFromResponse] as [number, string]
|
||||||
|
}
|
||||||
|
const user = await api.get(`/users/${targetId}`)
|
||||||
|
return [targetId, user.data.email] as [number, string]
|
||||||
|
})
|
||||||
)
|
)
|
||||||
setEmailMap(Object.fromEntries(emails))
|
setEmailMap(Object.fromEntries(emails))
|
||||||
}
|
}
|
||||||
@ -35,13 +43,31 @@ export default function FriendRequestsPage() {
|
|||||||
const handleRespond = async (id: number, accept: boolean) => {
|
const handleRespond = async (id: number, accept: boolean) => {
|
||||||
await api.post(`/friends/requests/${id}/respond`, null, { params: { accept } })
|
await api.post(`/friends/requests/${id}/respond`, null, { params: { accept } })
|
||||||
alert(accept ? '친구 요청을 수락했습니다.' : '친구 요청을 거절했습니다.')
|
alert(accept ? '친구 요청을 수락했습니다.' : '친구 요청을 거절했습니다.')
|
||||||
setRequests(requests.filter(r => r.id !== id))
|
const req = requests.find(r => r.id === id)
|
||||||
|
const targetId = req ? (tab === 'received' ? req.from_user_id : req.to_user_id) : null
|
||||||
|
setRequests(prev => prev.filter(r => r.id !== id))
|
||||||
|
if (targetId !== null) {
|
||||||
|
setEmailMap(prev => {
|
||||||
|
const newMap = { ...prev }
|
||||||
|
delete newMap[targetId]
|
||||||
|
return newMap
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleCancel = async (id: number) => {
|
const handleCancel = async (id: number) => {
|
||||||
await api.post(`/friends/requests/${id}/cancel`)
|
await api.post(`/friends/requests/${id}/cancel`)
|
||||||
alert('요청을 취소했습니다.')
|
alert('요청을 취소했습니다.')
|
||||||
setRequests(requests.filter(r => r.id !== id))
|
const req = requests.find(r => r.id === id)
|
||||||
|
const targetId = req ? (tab === 'received' ? req.from_user_id : req.to_user_id) : null
|
||||||
|
setRequests(prev => prev.filter(r => r.id !== id))
|
||||||
|
if (targetId !== null) {
|
||||||
|
setEmailMap(prev => {
|
||||||
|
const newMap = { ...prev }
|
||||||
|
delete newMap[targetId]
|
||||||
|
return newMap
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user