"use client"; import "./ProfileForm.scss"; import Image from "next/image"; import pen from "./icons/pen.svg"; import eye_off from "./icons/eye-off.svg"; import eye_on from "./icons/eye-on.svg"; import { useState } from "react"; import { apiInstance } from "@/shared/config/apiConfig"; import { AxiosError } from "axios"; import Loader from "@/shared/ui/components/Loader/Loader"; import { useSession } from "next-auth/react"; import { useRouter } from "next/navigation"; import LogoutButton from "@/features/LogoutButton/LogoutButton"; import ChangePassword from "./ChangePassword/ChangePassword"; interface IProfileFormProps { id: number; email: string; first_name: string; last_name: string; } const ProfileForm: React.FC = ({ id, email, first_name, last_name, }: IProfileFormProps) => { const session = useSession(); const router = useRouter(); const [error, setError] = useState(""); const [loader, setLoader] = useState(false); const [editFirstName, setEditFirstName] = useState(true); const [editLastName, setEditLastName] = useState(true); const [firstName, setFirstName] = useState(first_name); const [lastName, setLastName] = useState(last_name); const [openPopup, setOpenPopup] = useState(false); const thereAreChanges = () => { if (firstName !== first_name || lastName !== last_name) return false; return true; }; const updateProfile: React.MouseEventHandler< HTMLFormElement > = async (e) => { e.preventDefault(); const data = { first_name: firstName, last_name: lastName, }; const Authorization = `Bearer ${session.data?.access_token}`; const config = { headers: { Authorization, }, }; try { setLoader(true); const res = await apiInstance.patch( "/users/profile/update/", data, config ); if ([200, 201].includes(res.status)) { router.refresh(); } } catch (error: unknown) { if (error instanceof AxiosError) { setError(error.message); } else { setError("Возникла непредвиденная ошибка"); } } finally { setLoader(false); } }; return ( <>
setFirstName(e.target.value)} disabled={editFirstName} type="text" />
setLastName(e.target.value)} disabled={editLastName} type="text" />
{openPopup && } {error ?

{error}

: null} ); }; export default ProfileForm;