"use client"; import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import Image from 'next/image'; import Header from '../components/Header'; import logo from '../logo.svg'; const imgLine2 = "http://localhost:3845/assets/6ee8cf4ebb6bc2adb14aab8c9940b3002c20af35.svg"; const imgFooterLogo = "http://localhost:3845/assets/89fda8e949171025b1232bae70fc9d442e4e70c8.png"; export default function AnnouncementPage() { const router = useRouter(); const [isLoggedIn, setIsLoggedIn] = useState(false); const [isLoading, setIsLoading] = useState(true); const [announcements, setAnnouncements] = useState([]); useEffect(() => { // 로그인 상태 확인 const loginStatus = localStorage.getItem('isLoggedIn') === 'true'; setIsLoggedIn(loginStatus); setIsLoading(false); // TODO: DB에서 공지사항 목록 가져오기 // const fetchAnnouncements = async () => { // const response = await fetch('/api/announcements'); // const data = await response.json(); // setAnnouncements(data); // }; // fetchAnnouncements(); }, []); if (isLoading) { return null; // 로딩 중 } // 로그인되지 않았으면 로그인 페이지로 리다이렉트 if (!isLoggedIn) { router.push('/login'); return null; } return (
{/* 헤더 */}
{/* 구분선 */}
{/* 페이지 제목 */}

공지사항 ({announcements.length}건)

{/* 테이블 컨테이너 */}
{/* 테이블 헤더 */}

번호

제목

게시일

작성자

조회수

{/* 테이블 내용 */} {announcements.length > 0 ? (
{announcements.map((announcement) => (

{announcement.id}

{announcement.title}

{announcement.createdAt ? new Date(announcement.createdAt).toLocaleDateString('ko-KR') : '-'}

{announcement.author || '-'}

{announcement.views || 0}

))}
) : (

등록된 공지사항이 없습니다.

)}
{/* 푸터 */}
); }