Rev 3156 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState } from 'react'
import { connect } from 'react-redux'
import { Link } from 'react-router-dom'
import { axios } from '@app/utils'
import { asyncLogout } from '@store/auth/auth.actions'
import { addNotification } from '@app/redux/notification/notification.actions'
import Form from '@app/components/UI/form/Form'
import Widget from '@app/components/UI/Widget'
import Button from '@app/components/UI/buttons/Buttons'
import Spinner from '@app/components/UI/Spinner'
import Input from '@app/components/UI/inputs/Input'
function CloseAccount({ addNotification }) {
const [showInputCode, setShowInputCode] = useState(false)
const [loading, setLoading] = useState(false)
const [code, setCode] = useState('')
const handleAlert = ({
status = true,
message = 'Email enviado exitosamente'
}) => {
addNotification({
style: status ? 'success' : 'danger',
msg: message
})
}
const handleGetCode = async () => {
try {
setShowInputCode(true)
setLoading(true)
const response = await axios.get('/account-settings/delete-account')
const { data, success } = response.data
handleAlert(success, data.message)
} catch (error) {
console.log('>>: error > ', error)
handleAlert(false, 'Disculpe, ha ocurrido un error')
} finally {
setLoading(false)
}
}
const resendCode = async (e) => {
e.preventDefault()
try {
setLoading(true)
const res = await axios.get('/account-settings/delete-account')
handleAlert(res.data.success, res.data.data.message)
console.log('>>: resend code > ', res)
} catch (error) {
handleAlert(false, 'Disculpe, ha ocurrido un error')
console.log('>>: error > ', error)
} finally {
setLoading(false)
}
}
const handleSubmit = async (e) => {
try {
e.preventDefault()
const data = new FormData()
data.append('code', code)
setLoading(true)
const res = await axios.post('/account-settings/delete-account', data)
handleAlert(res.data.success, res.data.data.message)
if (res.data.success) {
asyncLogout()
}
} catch (error) {
handleAlert(false, 'Disculpe, ha ocurrido un error')
console.log('>>: error > ', error)
} finally {
setLoading(false)
}
}
return (
<Widget>
<Widget.Body>
{showInputCode ? (
<Form onSubmit={handleSubmit}>
<Input
id='verify'
name='verify'
label='Ingrese el codigo enviado a su correo electrónico'
onChange={(e) => setCode(e.target.value)}
value={code}
/>
<Link to='/reset-code' onClick={resendCode}>
¿No ha recibido su correo?, solicite un codigo nuevo
</Link>
<Button color='primary' type='submit'>
Enviar
</Button>
</Form>
) : (
<>
<h2>¿Esta seguro de eliminar su cuenta?</h2>
<Button
color='primary'
onClick={() => handleGetCode()}
disabled={showInputCode}
styles={{
marginBottom: '.5rem'
}}
>
Si, estoy seguro
</Button>
</>
)}
{loading && <Spinner />}
</Widget.Body>
</Widget>
)
}
const mapDispatchToProps = {
addNotification: (notification) => addNotification(notification)
}
export default connect(null, mapDispatchToProps)(CloseAccount)