"use client"; import Image from "next/image"; import "./ProfileAvatar.scss"; import pen from "./icons/pen.svg"; import close from "./icons/close.svg"; import close_white from "./icons/close-white.svg"; import { authInstanse } from "@/shared/config/apiConfig"; import { useRouter } from "next/navigation"; import { useSession } from "next-auth/react"; import { useState } from "react"; import { AxiosError } from "axios"; import Loader from "@/shared/ui/components/Loader/Loader"; interface IProfileAvatarProps { img: string; } const ProfileAvatar: React.FC = ({ img, }: IProfileAvatarProps) => { const [modal, setModal] = useState(false); const [display_image, setDisplayImage] = useState( img ); const [isDeleting, setIsDeleting] = useState(false); const [message, setMessage] = useState(false); const def = "https://api.kgroaduat.fishrungames.com/media/user_photo/default.webp"; const [success, setSuccess] = useState(""); const [loader, setLoader] = useState(false); const [error, setError] = useState(""); const session = useSession(); const router = useRouter(); const handleChange: React.ChangeEventHandler = ( e ) => { if (e.target.files) { setDisplayImage(e.target.files[0]); } }; const changeImage = async () => { const formData = new FormData(); if (session.status === "unauthenticated") return; if ( typeof display_image === typeof "string" || display_image === img ) return; formData.append("image", display_image); try { setLoader(true); const res = await authInstanse( session.data?.access_token as string ).patch("/users/update_image/", formData); setError(""); setSuccess("Фото профиля обновлено"); setMessage(true); router.refresh(); setTimeout(() => { setMessage(false); }, 3000); } catch (error: unknown) { if (error instanceof AxiosError) { setSuccess(""); setError(error.message); setMessage(true); setTimeout(() => { setMessage(false); }, 3000); } } finally { setLoader(false); } }; const returnDefaultImage = async () => { if (session.status === "unauthenticated") return; try { setLoader(true); const res = await authInstanse( session.data?.access_token as string ).patch("/users/delete_image/", {}); setError(""); setSuccess("Фото профиля удалено"); setMessage(true); setDisplayImage(def); router.refresh(); setTimeout(() => { setMessage(false); }, 3000); } catch (error: unknown) { if (error instanceof AxiosError) { setSuccess(""); setError(error.message); setMessage(true); setTimeout(() => { setMessage(false); }, 3000); } } finally { setLoader(false); } }; const imageIsString = typeof display_image === "string" ? display_image : typeof display_image === "undefined" ? "" : URL.createObjectURL(display_image as File); return (
User Image {modal && (
setModal(false)} className="profile-avatar__modal" >
e.stopPropagation()} className="profile-avatar__wrapper" >

Фото профиля

По фото профиля другие люди смогут вас узнавать, а вам будет проще определять, в какой аккаунт вы вошли.

User image
{img === def && display_image === def ? ( <> ) : isDeleting ? ( <> ) : img === display_image || success !== "" ? ( <> ) : ( <> )}
{message && (

{success} {error}

)}
)}
); }; export default ProfileAvatar;