From f006309ef4895100f163d43f6d362fb541e403d9 Mon Sep 17 00:00:00 2001 From: caadiq Date: Fri, 9 Jan 2026 22:16:25 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EB=82=A8=EC=9D=80=20Admin=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20API=20=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AdminAlbums API 모듈 적용 총 적용 완료: - Public 페이지: 7개 (PC 6 + 모바일 1) - Admin 페이지: 7개 (Schedule, ScheduleBots, ScheduleCategory, Login, Dashboard, Albums, Schedule) --- frontend/src/pages/pc/admin/AdminAlbums.jsx | 48 ++++++++------------- 1 file changed, 17 insertions(+), 31 deletions(-) diff --git a/frontend/src/pages/pc/admin/AdminAlbums.jsx b/frontend/src/pages/pc/admin/AdminAlbums.jsx index c087e22..4ea944c 100644 --- a/frontend/src/pages/pc/admin/AdminAlbums.jsx +++ b/frontend/src/pages/pc/admin/AdminAlbums.jsx @@ -7,6 +7,9 @@ import { } from 'lucide-react'; import Toast from '../../../components/Toast'; import Tooltip from '../../../components/Tooltip'; +import * as authApi from '../../../api/admin/auth'; +import { getAlbums } from '../../../api/public/albums'; +import * as albumsApi from '../../../api/admin/albums'; function AdminAlbums() { const navigate = useNavigate(); @@ -28,34 +31,28 @@ function AdminAlbums() { useEffect(() => { // 로그인 확인 - const token = localStorage.getItem('adminToken'); - const userData = localStorage.getItem('adminUser'); - - if (!token || !userData) { + if (!authApi.hasToken()) { navigate('/admin'); return; } - setUser(JSON.parse(userData)); + setUser(authApi.getCurrentUser()); fetchAlbums(); }, [navigate]); - const fetchAlbums = () => { - fetch('/api/albums') - .then(res => res.json()) - .then(data => { - setAlbums(data); - setLoading(false); - }) - .catch(error => { - console.error('앨범 로드 오류:', error); - setLoading(false); - }); + const fetchAlbums = async () => { + try { + const data = await getAlbums(); + setAlbums(data); + } catch (error) { + console.error('앨범 로드 오류:', error); + } finally { + setLoading(false); + } }; const handleLogout = () => { - localStorage.removeItem('adminToken'); - localStorage.removeItem('adminUser'); + authApi.logout(); navigate('/admin'); }; @@ -64,21 +61,10 @@ function AdminAlbums() { setDeleting(true); try { - const token = localStorage.getItem('adminToken'); - const response = await fetch(`/api/admin/albums/${deleteDialog.album.id}`, { - method: 'DELETE', - headers: { - 'Authorization': `Bearer ${token}`, - }, - }); - - if (!response.ok) { - throw new Error('삭제 실패'); - } - + await albumsApi.deleteAlbum(deleteDialog.album.id); setToast({ message: `"${deleteDialog.album.title}" 앨범이 삭제되었습니다.`, type: 'success' }); setDeleteDialog({ show: false, album: null }); - fetchAlbums(); // 목록 새로고침 + fetchAlbums(); } catch (error) { console.error('삭제 오류:', error); setToast({ message: '앨범 삭제 중 오류가 발생했습니다.', type: 'error' });