From dd0a9a05fb8583640e8024c2646701b3a93a5014 Mon Sep 17 00:00:00 2001 From: rumpumpum Date: Thu, 20 Nov 2025 01:59:15 +0900 Subject: [PATCH] =?UTF-8?q?fix(minihome):=20=EC=9D=B4=EB=AF=B8=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=EC=9D=B8=20=EC=82=AC=EB=9E=8C=EC=97=90=EA=B2=8C=20?= =?UTF-8?q?=EC=B9=9C=EA=B5=AC=EC=9A=94=EC=B2=AD=20=EB=B2=84=ED=8A=BC?= =?UTF-8?q?=EC=9D=B4=20=EB=85=B8=EC=B6=9C=EB=90=98=EB=8A=94=20=ED=98=84?= =?UTF-8?q?=EC=83=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/features/minihome/home/HomePage.tsx | 40 +++++++++++++++++++------ 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/src/features/minihome/home/HomePage.tsx b/src/features/minihome/home/HomePage.tsx index 0e62d6e..43a1425 100644 --- a/src/features/minihome/home/HomePage.tsx +++ b/src/features/minihome/home/HomePage.tsx @@ -42,6 +42,7 @@ export default function HomePage({ const [bio, setBio] = useState(null); const [friendRequested, setFriendRequested] = useState(false); + const [isFriend, setIsFriend] = useState(false); const [toggleAnimating, setToggleAnimating] = useState(false); const [images, setImages] = useState([]); @@ -84,15 +85,32 @@ export default function HomePage({ setBio(profile.bio); // 친구 신청 여부 정보 가져오기 - const { count: friendRequestCount, error: friendRequestError } = await supabase - .from("friend_requests") - .select("*", { count: "exact", head: true }) - .eq("requester_id", user.id) - .eq("addressee_id", ownerId); - if (friendRequestError) { - console.error("친구 신청 정보 불러오기 실패:", friendRequestError); + const { data: friendship, error: friendshipError } = await supabase + .from("friends") + .select("id") + .or( + `and(user1_id.eq.${user.id},user2_id.eq.${ownerId}),and(user1_id.eq.${ownerId},user2_id.eq.${user.id})` + ) + .maybeSingle(); + if (friendshipError) { + console.error("친구 관계 정보 불러오기 실패:", friendshipError); + } + const alreadyFriend = Boolean(friendship); + setIsFriend(alreadyFriend); + + if (!alreadyFriend) { + const { count: friendRequestCount, error: friendRequestError } = await supabase + .from("friend_requests") + .select("*", { count: "exact", head: true }) + .eq("requester_id", user.id) + .eq("addressee_id", ownerId); + if (friendRequestError) { + console.error("친구 신청 정보 불러오기 실패:", friendRequestError); + } else { + setFriendRequested(friendRequestCount === 1); + } } else { - setFriendRequested(friendRequestCount === 1); + setFriendRequested(false); } // 사진첩 정보 가져오기 (최근 8개) @@ -176,6 +194,10 @@ export default function HomePage({ console.error("친구신청 상대가 존재하지 않습니다."); return; } + if (isFriend) { + console.error("이미 친구 관계입니다."); + return; + } setToggleAnimating(true); @@ -222,7 +244,7 @@ export default function HomePage({ {/* 친구 신청 버튼 */} - {!isMine && ( + {!isMine && !isFriend && (