'use client'; import './style.scss'; import Link from 'next/link'; import { useState, useEffect } from 'react'; import { useConfigContext } from '@/contexts/configProvider'; import { useMemberContext } from '@/contexts/memberProvider'; import useErrorAlert from '@/hooks/useErrorAlert'; import { ChangeIntroRequest } from '@/types/request/account'; import { fetchApi, throwError } from '@/lib/utils/client'; import Loading from '@/app/component/Loading'; import Editor from '@/app/component/Editor'; export default function ChangeIntro() { const config = useConfigContext(); const { member, setMember } = useMemberContext(); const { setError } = useErrorAlert(); const [loading, setLoading] = useState(false); const [newIntro, setNewIntro] = useState(''); useEffect(() => { if (member?.intro && !newIntro) { const intro = member.intro.replace(/]*?\bsrc=[''](\/[^'']*)['']/gi, (match, srcPath) => { return match.replace(srcPath, process.env.API_URL + srcPath); }); setNewIntro(intro); } }, [member, newIntro]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!member) { return; } setLoading(true); fetchApi('/api/mypage/intro', { method: 'POST', body: { Intro: newIntro } as ChangeIntroRequest }).then((res) => { throwError(res); member.intro = newIntro; setMember(member); setNewIntro(newIntro); localStorage.setItem('member', JSON.stringify(member)); alert('자기소개가 변경되었습니다.'); }).catch(err => { setError(err.message); setNewIntro(member.intro); }).finally(() => { setLoading(false); }); } const handleDelete = async () => { if (confirm("자기소개를 삭제하시겠습니까?")) { if (!member || !member.intro) { return; } setLoading(true); fetchApi('/api/mypage/intro', { method: 'DELETE' }).then((res) => { throwError(res); member.intro = null; setMember(member); localStorage.setItem('member', JSON.stringify(member)); alert("자기소개가 삭제되었습니다."); }).catch(err => { setError(err.message); }).finally(() => { setLoading(false); setNewIntro(''); }); } }; return ( <>
{ loading && }

자기소개 변경

커뮤니티 프로필에 표시되는 자기소개를 설정할 수 있습니다.
{ member?.intro && ( )} 취소

  1. 자기소개는 최대 1000자 이내로 입력 가능합니다.
  2. 부적절한 내용은 별도의 고지 없이 삭제될 수 있습니다.
  3. {config.account.changeIntroDay > 0 &&
  4. 한마디 변경 주기는 {config.account.changeIntroDay}일입니다.
  5. }
); }