// src/components/SuperAdmin.jsx
import React, { useState, useEffect } from 'react'
import { NavLink, Outlet, useParams } from 'react-router-dom'
import { Spin } from 'antd'
import { fetchUserList } from '../api/posts_trm'
import '../style/SuperAdmin.css'

export default function SuperAdmin() {
  const { userId } = useParams()             // ← 从路由拿到
  const [loading, setLoading] = useState(true)
  const [hasPermission, setHasPermission] = useState(true)

  useEffect(() => {
    async function check() {
      try {
        await fetchUserList(userId)          // ← 传入 userId
      } catch (e) {
        if (e.message === 'Unauthorized') {
          setHasPermission(false)
        } else {
          console.error(e)
        }
      } finally {
        setLoading(false)
      }
    }
    check()
  }, [userId])

  if (loading) {
    return (
      <Spin
        spinning
        tip="加载中…"
        style={{ width: '100%', marginTop: 100 }}
      />
    )
  }
  if (!hasPermission) {
    return (
      <div style={{ textAlign: 'center', marginTop: 100 }}>
        权限不足
      </div>
    )
  }

  return (
    <div className="super-admin-container">
      <aside className="super-admin-sidebar">
        <h2>超级管理员</h2>
        <nav>
          <ul>
            <li>
              <NavLink
                to="users"
                end
                className={({ isActive }) =>
                  isActive ? 'active' : ''
                }
              >
                用户管理
              </NavLink>
            </li>
            <li>
              <NavLink
                to="dashboard"
                className={({ isActive }) =>
                  isActive ? 'active' : ''
                }
              >
                平台运行监控
              </NavLink>
            </li>
          </ul>
        </nav>
      </aside>

      <main className="super-admin-content">
        <Outlet />
      </main>
    </div>
  )
}
