공지사항 admin ok

This commit is contained in:
2025-11-29 23:57:31 +09:00
parent eb7871133d
commit 109ca05e23
8 changed files with 225 additions and 59 deletions

View File

@@ -1,7 +1,7 @@
'use client';
import { useState, useMemo, useRef, useEffect, useCallback } from "react";
import { useRouter } from "next/navigation";
import { useRouter, useSearchParams } from "next/navigation";
import AdminSidebar from "@/app/components/AdminSidebar";
import ChevronDownSvg from "@/app/svgs/chevrondownsvg";
import DropdownIcon from "@/app/svgs/dropdownicon";
@@ -22,6 +22,7 @@ type Lesson = {
export default function AdminLessonsPage() {
const router = useRouter();
const searchParams = useSearchParams();
const [lessons, setLessons] = useState<Lesson[]>([]);
const [currentPage, setCurrentPage] = useState(1);
const [isRegistrationMode, setIsRegistrationMode] = useState(false);
@@ -30,6 +31,7 @@ export default function AdminLessonsPage() {
const [courses, setCourses] = useState<Course[]>([]);
const [currentUser, setCurrentUser] = useState<string>("관리자");
const [showToast, setShowToast] = useState(false);
const [toastMessage, setToastMessage] = useState<string>('강좌가 등록되었습니다.');
const rawLecturesRef = useRef<any[]>([]); // 원본 강좌 데이터 저장
// 등록 폼 상태
@@ -882,6 +884,7 @@ export default function AdminLessonsPage() {
setCsvRows([]);
// 토스트 팝업 표시
setToastMessage('강좌가 등록되었습니다.');
setShowToast(true);
} catch (error) {
console.error('강좌 등록 실패:', error);
@@ -890,6 +893,18 @@ export default function AdminLessonsPage() {
}
};
// 쿼리 파라미터에서 updated 확인하여 토스트 표시
useEffect(() => {
const updated = searchParams.get('updated');
if (updated === 'true') {
setToastMessage('강좌가 수정되었습니다.');
setShowToast(true);
// URL에서 쿼리 파라미터 제거
const newUrl = window.location.pathname;
router.replace(newUrl);
}
}, [searchParams, router]);
// 토스트 자동 닫기
useEffect(() => {
if (showToast) {
@@ -1779,7 +1794,7 @@ export default function AdminLessonsPage() {
</svg>
</div>
<p className="text-[15px] font-medium leading-[1.5] text-[#1b2027] text-nowrap">
.
{toastMessage}
</p>
</div>
</div>