"use client";
import { useState } from "react";
import { api } from "@/lib/api";
import { useAuth } from "@/lib/auth-context";
import { ChannelsPanel } from "./_panels/ChannelsPanel";
import { VideosPanel } from "./_panels/VideosPanel";
import { RestaurantsPanel } from "./_panels/RestaurantsPanel";
import { UsersPanel } from "./_panels/UsersPanel";
import { DaemonPanel } from "./_panels/DaemonPanel";
// #329 — 5개 패널을 _panels/ 디렉토리로 분리. page.tsx는 탭 라우팅 + 헤더만.
type Tab = "channels" | "videos" | "restaurants" | "users" | "daemon";
function CacheFlushButton() {
const [flushing, setFlushing] = useState(false);
const handleFlush = async () => {
if (!confirm("Redis 캐시를 초기화하시겠습니까?")) return;
setFlushing(true);
try {
await api.flushCache();
alert("캐시가 초기화되었습니다.");
} catch (e) {
alert("캐시 초기화 실패: " + (e instanceof Error ? e.message : e));
} finally {
setFlushing(false);
}
};
return (
);
}
export default function AdminPage() {
const [tab, setTab] = useState("channels");
const { user, isLoading } = useAuth();
const isAdmin = user?.is_admin === true;
if (isLoading) {
return 로딩 중...
;
}
if (!user) {
return (
);
}
return (
Admin
{!isAdmin && (
읽기 전용
)}
{tab === "channels" && }
{tab === "videos" && }
{tab === "restaurants" && }
{tab === "users" && }
{tab === "daemon" && }
);
}