"use client"; import useSWR, { mutate } from "swr"; import axios from "@/lib/axios"; import { useToast } from "@/context/ToastContext"; import React from "react"; 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 { useTranslations } from "next-intl"; const fetcher = (url: string) => axios.get(url).then((res) => res.data); export default function UserInfoCard() { const { data: user, isLoading: userLoading } = useSWR("/api/user", fetcher); const { isOpen, openModal, closeModal } = useModal(); const { addToast } = useToast(); const t = useTranslations("Profile"); const [isSaving, setIsSaving] = React.useState(false); // Form states const [formData, setFormData] = React.useState({ first_name: "", last_name: "", email: "", phone: "", bio: "", facebook: "", twitter: "", linkedin: "", instagram: "", }); React.useEffect(() => { if (user) { setFormData({ first_name: user.first_name || "", last_name: user.last_name || "", email: user.email || "", phone: user.phone || "", bio: user.bio || "", facebook: user.facebook || "", twitter: user.twitter || "", linkedin: user.linkedin || "", instagram: user.instagram || "", }); } }, [user]); const handleInputChange = (field: string, value: string) => { setFormData((prev) => ({ ...prev, [field]: value })); }; const handleSave = async (e: React.FormEvent) => { e.preventDefault(); setIsSaving(true); try { await axios.patch("/api/profile", formData); mutate("/api/user"); addToast(t("toast_personal_info_success"), "success"); closeModal(); } catch (err) { addToast(t("toast_personal_info_error"), "error"); } finally { setIsSaving(false); } }; if (userLoading) return null; return (

{t("personal_info_title")}

{t("first_name_label")}

{user?.first_name || "-"}

{t("last_name_label")}

{user?.last_name || "-"}

{t("email_label")}

{user?.email}

{user?.pending_email && ( {t("pending_email_notice", { email: user.pending_email })} )}

{t("phone_label")}

{user?.phone || "-"}

{t("bio_label")}

{user?.bio || "-"}

{t("edit_personal_info_title")}

{t("edit_personal_info_subtitle")}

{t("social_links_title")}
handleInputChange("facebook", e.target.value)} placeholder={t("username_placeholder")} />
handleInputChange("twitter", e.target.value)} placeholder={t("username_placeholder")} />
handleInputChange("linkedin", e.target.value)} placeholder="username" />
handleInputChange("instagram", e.target.value)} placeholder={t("username_placeholder")} />
{t("personal_info_title")}
handleInputChange("first_name", e.target.value)} />
handleInputChange("last_name", e.target.value)} />
handleInputChange("email", e.target.value)} placeholder={t("email_placeholder")} />
handleInputChange("phone", e.target.value)} />
handleInputChange("bio", e.target.value)} />
); }