"use client"; import { Modal } from "../ui/modal"; import UserMetaCard from "@/components/user-profile/UserMetaCard"; import UserInfoCard from "@/components/user-profile/UserInfoCard"; import { UserMetaCardProps } from "@/interface/user"; import { fullDataUser } from "@/interface/admin"; import { useEffect, useState } from "react"; import { MediaDto } from "@/interface/media"; import { apiGetUserMedia } from "@/service/adminService"; import MediaCard from "@/components/user-profile/Media"; interface UserDetailModalProps { isOpen: boolean; onClose: () => void; user: fullDataUser | null; onChangeRole: (user: fullDataUser) => void; onDelete: (user: fullDataUser) => void; onRestore: (user: fullDataUser) => void; } export default function UserDetailModal({ isOpen, onClose, user, onChangeRole, onDelete, onRestore, }: UserDetailModalProps) { const [mediaData, setMediaData] = useState(null); const [loading, setLoading] = useState(true); const formattedData: UserMetaCardProps = { data: user ? { id: user.id, email: user.email, profile: user.profile, roles: user.roles as any, // UserRole and Role are slightly different, need a better fix or small cast } : undefined, }; useEffect(() => { if (user?.id && isOpen) { const fetchUserMedia = async () => { setLoading(true); try { const mediaResponse = await apiGetUserMedia(user.id); setMediaData(mediaResponse); } catch (err) { console.error("Lỗi fetch media:", err); setMediaData(null); } finally { setLoading(false); } }; fetchUserMedia(); } }, [user?.id, isOpen]); if (!user) return null; return (

Chi tiết người dùng

{loading ? (

Đang tải tài liệu...

) : ( <> {(mediaData?.data?.length ?? 0) > 0 ? ( ) : (
Người dùng này chưa có dữ liệu media.
)} )}
Thao tác quản trị viên
{user.is_deleted ? ( ) : ( )}
); }