import Modal from "@/ui/shared/modal"; import { useState, Dispatch, SetStateAction, useCallback, useMemo, } from "react"; import { LoadingDots } from "@/ui/shared/icons"; import { fetcher } from "@/lib/utils"; import { Session } from "next-auth"; import { useUserInfoByEmail } from "@/app/post/[id]/request"; const EditNicknameModal = ({ session, showEditModal, setShowEditModal, }: { session: Session | null; showEditModal: boolean; setShowEditModal: Dispatch>; }) => { const { user } = useUserInfoByEmail(session?.user?.email || ""); const [nickname, setNickname] = useState(""); const [loading, setLoading] = useState(false); const [isSendSuccess, setIsSendSuccess] = useState(false); const handleSubmit = async () => { if (!session?.user || !user || !nickname) return; if (nickname.length < 3 || nickname.length > 20) return; setLoading(true); const res = await fetcher("/api/users", { method: "POST", body: JSON.stringify({ userId: user.id, userName: nickname, }), }); if (res) { setLoading(false); setIsSendSuccess(true); setShowEditModal(false); } }; const handleKeydown = (key: string) => { if (key === "Enter") { handleSubmit(); } }; return (

Edit nickname

{/*

*/}
setNickname(e.target.value)} onKeyDown={(e) => handleKeydown(e.key)} />
); }; export function useEditNicknameModal(session: Session | null) { const [showEditModal, setShowEditModal] = useState(false); const EditModalCallback = useCallback(() => { return ( ); }, [showEditModal, setShowEditModal]); return useMemo( () => ({ setShowEditModal, EditModal: EditModalCallback }), [setShowEditModal, EditModalCallback], ); }