'use client'; import './style.scss'; import Link from 'next/link'; import { useState, useEffect, useCallback, useRef } from 'react'; import { useConfigContext } from '@/contexts/configProvider'; import { useMemberContext } from '@/contexts/memberProvider'; import { ChangeSummaryRequest } from '@/dtos/request/account'; import { fetchApi, throwError } from '@/lib/utils/client'; import Loading from '@/app/component/Loading'; export default function ChangeSummary() { const config = useConfigContext(); const { member, setMember } = useMemberContext(); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); const [newSummary, setNewSummary] = useState(''); const newSummaryRef = useRef(null); useEffect(() => { if (error) { alert(error); setError(''); } }, [error]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!member) { return; } if (!newSummary) { newSummaryRef.current?.focus(); return setError('한마디를 입력하세요.'); } setLoading(true); fetchApi('/api/mypage/summary', { method: 'POST', body: { Summary: newSummary } as ChangeSummaryRequest }).then((res) => { throwError(res); member.summary = newSummary; setMember(member); localStorage.setItem('member', JSON.stringify(member)); alert('한마디가 변경되었습니다.'); }).catch(err => { setError(err.message); }).finally(() => { setLoading(false); setNewSummary(''); }); } const handleChange = useCallback((e: React.ChangeEvent) => { setNewSummary(e.target.value.trim()); }, []); const handleDelete = async () => { if (confirm("한마디를 삭제하시겠습니까?")) { if (!member || !member.summary) { return; } setLoading(true); fetchApi('/api/mypage/summary', { method: 'DELETE' }).then((res) => { throwError(res); member.summary = null; setMember(member); localStorage.setItem('member', JSON.stringify(member)); alert("한마디를 삭제되었습니다."); }).catch(err => { setError(err.message); }).finally(() => { setLoading(false); setNewSummary(''); }); } }; return ( <>
{ loading && }

한마디 변경

커뮤니티 프로필에 표시되는 한마디를 설정할 수 있습니다.
현재 한마디 {member?.summary || '-'}  
새 한마디  
{ member?.summary && ( )} 취소

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