"use client"; import React, { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { useModal } from "../../hooks/useModal"; import { Modal } from "../ui/modal"; import Button from "../ui/button/Button"; import Input from "../form/input/InputField"; import Label from "../form/Label"; import { Profile, UserMetaCardProps } from "@/interface/user"; import { apiUpdateUser } from "@/service/userService"; import { toast } from "sonner"; import Link from "next/link"; export default function UserInfoCard({ data }: { data: UserMetaCardProps }) { const router = useRouter(); const { isOpen, openModal, closeModal } = useModal(); const [formData, setFormData] = useState({ display_name: "", phone: "", bio: "", location: "", website: "", avatar_url: "", }); useEffect(() => { if (data?.data?.profile) { setFormData({ display_name: data.data.profile.display_name || "", phone: data.data.profile.phone || "", bio: data.data.profile.bio || "", location: data.data.profile.location || "", website: data.data.profile.website || "", avatar_url: data.data.profile.avatar_url || "", }); } }, [data, isOpen]); const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value, })); }; const handleSave = async (e: React.FormEvent) => { e.preventDefault(); const userId = data?.data?.id; if (!userId) return; try { const response = await apiUpdateUser(formData); if (response && response.status === false) { toast.error(response.message || "Cập nhật thất bại."); return; } toast.success("Cập nhật thành công!"); setTimeout(() => { window.location.reload(); }, 1000); } catch (error: any) { const serverResponse = error.response?.data; if (serverResponse && serverResponse.status === false) { const msg = serverResponse.message || ""; if (msg.includes("idx_user_profiles_phone")) { toast.error("Số điện thoại này đã được sử dụng!"); } else { toast.error(msg); } } else { toast.error("Không thể kết nối đến máy chủ hoặc lỗi hệ thống."); } console.error("Lỗi chi tiết:", error); } }; return (

Personal Information

Full Name

{data.data?.profile?.display_name || "Full Name"}

Email address

{data.data?.email || "Email address"}

{data.data?.profile?.phone && (

Phone

{data.data?.profile?.phone || "+XXX XXX XXX"}

)} {data.data?.profile?.bio && (

Bio

{data.data?.profile?.bio || "No bio available"}

)} {data.data?.profile?.location && (

Address

{data.data?.profile?.location || "No location available"}

)} {data.data?.profile?.website && (

Website

{data.data?.profile?.website || "No website"}
)}
{data.openEdit && ( )}

Edit Personal Information

Update your details to keep your profile up-to-date.

Personal Information
); }