'use client'; import './style.scss'; import Link from 'next/link'; import { useState, useCallback, useRef } from 'react'; import { useMemberContext } from '@/contexts/memberProvider'; import useErrorAlert from '@/hooks/useErrorAlert'; import { useConfigContext } from '@/contexts/configProvider'; import { ChangeEmailRequest } from '@/types/request/account'; import { fetchApi, throwError } from '@/lib/utils/client'; import Loading from '@/app/component/Loading'; export default function ChangeEmail() { const config = useConfigContext(); const { member } = useMemberContext(); const { setError } = useErrorAlert(); const [isComplete, setComplete] = useState(false); const [loading, setLoading] = useState(false); const [newEmail, setNewEmail] = useState(''); const newEmailRef = useRef(null); // 이메일 변경 요청 const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!member) { return; } if (!newEmail) { newEmailRef.current?.focus(); return setError('변경하실 이메일을 입력하세요.'); } setLoading(true); fetchApi('/api/mypage/email', { method: 'POST', body: { NewEmail: newEmail } as ChangeEmailRequest }).then((res) => { throwError(res); setComplete(true); }).catch(err => { setError(err.message); }).finally(() => { setLoading(false); }); } const handleChange = useCallback((e: React.ChangeEvent) => { setNewEmail(e.target.value.trim()); }, []); const refresh = () => location.reload(); return ( <>
{ loading && } {!isComplete ? <>

이메일 변경

새 이메일 주소를 입력하고 "확인" 버튼을 누릅니다.
인증 메일이 도착하시면 내용을 확인하신 후 본문에 있는 링크를 클릭해주세요.
현재 이메일 {member?.email}  
새 이메일  
취소

등록할 수 없는 이메일 주소
  1. 전 세계 인터넷 통신 표준 RFC(Request for Comments)를 준수하지 않는 전자 메일 주소
  2. 회사에서 지정한 사용할 수 없는 문자(공백 및 더블바이트 문자)
  3. 전자 메일 계정 부분에서 반자 영숫자, 반자 기호 _(밑줄), . (점) 및 -(하이픈) 이외의 문자가 사용됩니다.
  4. {config.account.changeEmailDay > 0 &&
  5. 이메일 변경 주기는 {config.account.changeEmailDay}일입니다.
  6. }
: <>

인증 이메일 발송

{newEmail} 으로 인증 이메일이 발송되었습니다.
메일이 도착하면 내용을 확인하신 후 본문에 있는 링크를 클릭해 주세요.
몇 분 이내에 메일이 도착하지 않는 경우 등록 된 메일 주소 및 수신 거부 설정을 확인한 후 처음부터 다시 시도해 주십시오.

}
); }