From f96fe9599c4d6c30809f678324dad8d2f30a78b5 Mon Sep 17 00:00:00 2001 From: leechan Date: Thu, 19 Dec 2024 17:00:18 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[Refactor]=20=EC=9C=A0=EC=A0=80=20=ED=83=88?= =?UTF-8?q?=ED=87=B4=20api=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/admin.api.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/apis/admin.api.ts b/src/apis/admin.api.ts index 7c2ecc4..54127f9 100644 --- a/src/apis/admin.api.ts +++ b/src/apis/admin.api.ts @@ -11,3 +11,16 @@ export const fetchAdminData = async () => { throw error; } }; + +export const deleteUser = async (id: number): Promise<{ success: boolean }> => { + try { + const response = await httpClient.delete(`/api/users/${id}/delete`); + console.log('응답 데이터:', response.data); + return response.data; + } catch (error: any) { + console.error('API 호출 실패:', error); + throw new Error( + error.response?.data?.message || '회원 탈퇴 중 오류가 발생했습니다.' + ); + } +}; From 34c8b3ba2797458ae30f1510bf42dec78232b6cf Mon Sep 17 00:00:00 2001 From: leechan Date: Thu, 19 Dec 2024 17:01:39 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[Refactor]=20=ED=9A=8C=EC=9B=90=ED=83=88?= =?UTF-8?q?=ED=87=B4=20api=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/admin/UserList.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/admin/UserList.tsx b/src/admin/UserList.tsx index 6224266..63db182 100644 --- a/src/admin/UserList.tsx +++ b/src/admin/UserList.tsx @@ -2,7 +2,7 @@ import { useEffect, useState } from 'react'; import { AdminData } from '@/types/admindata'; import UserCard from './UserCard'; import styled from 'styled-components'; -import { fetchAdminData } from '@/apis/admin.api'; +import { deleteUser, fetchAdminData } from '@/apis/admin.api'; // Styled Components const UserListContainer = styled.div` @@ -54,8 +54,21 @@ const UserList = () => { setOpenUserId((prev) => (prev === id ? null : id)); }; - const handleDeleteUser = (id: number) => { - alert(`회원탈퇴: 유저 ID ${id}`); + const handleDeleteUser = async (id: number) => { + const confirmed = window.confirm(`유저 ID ${id}를 삭제하시겠습니까?`); + if (!confirmed) return; + + try { + const result = await deleteUser(id); + if (result.success) { + alert('회원 탈퇴가 완료되었습니다.'); + setUsers((prevUsers) => prevUsers.filter((user) => user.id !== id)); + } else { + alert('회원 탈퇴에 실패했습니다.'); + } + } catch (error: any) { + alert(`오류 발생: ${error.message}`); + } }; useEffect(() => {