Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 16 additions & 3 deletions src/admin/UserList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Expand Down Expand Up @@ -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(() => {
Expand Down
13 changes: 13 additions & 0 deletions src/apis/admin.api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 || '회원 탈퇴 중 오류가 발생했습니다.'
);
}
};