index.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. 'use client'
  2. import { useTranslation } from 'react-i18next'
  3. import { useCallback, useState } from 'react'
  4. import CheckEmail from './components/check-email'
  5. import VerifyEmail from './components/verify-email'
  6. import FeedBack from './components/feed-back'
  7. import CustomDialog from '@/app/components/base/dialog'
  8. import { COUNT_DOWN_KEY, COUNT_DOWN_TIME_MS } from '@/app/components/signin/countdown'
  9. type DeleteAccountProps = {
  10. onCancel: () => void
  11. onConfirm: () => void
  12. }
  13. export default function DeleteAccount(props: DeleteAccountProps) {
  14. const { t } = useTranslation()
  15. const [showVerifyEmail, setShowVerifyEmail] = useState(false)
  16. const [showFeedbackDialog, setShowFeedbackDialog] = useState(false)
  17. const handleEmailCheckSuccess = useCallback(async () => {
  18. try {
  19. setShowVerifyEmail(true)
  20. localStorage.setItem(COUNT_DOWN_KEY, `${COUNT_DOWN_TIME_MS}`)
  21. }
  22. catch (error) { console.error(error) }
  23. }, [])
  24. if (showFeedbackDialog)
  25. return <FeedBack onCancel={props.onCancel} onConfirm={props.onConfirm} />
  26. return <CustomDialog
  27. show={true}
  28. onClose={props.onCancel}
  29. title={t('common.account.delete')}
  30. className="max-w-[480px]"
  31. footer={false}
  32. >
  33. {!showVerifyEmail && <CheckEmail onCancel={props.onCancel} onConfirm={handleEmailCheckSuccess} />}
  34. {showVerifyEmail && <VerifyEmail onCancel={props.onCancel} onConfirm={() => {
  35. setShowFeedbackDialog(true)
  36. }} />}
  37. </CustomDialog>
  38. }