Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 1991 | Rev 1993 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1972 steven 1
import React,  { useState, useMemo } from 'react';
1968 steven 2
import Spinner from '../../../shared/loading-spinner/Spinner';
1969 steven 3
import styled from 'styled-components';
1989 steven 4
import axios from '../../../utils/axios';
1992 steven 5
import { addNotification } from '../../../redux/notification/notification.actions';
1966 steven 6
 
1968 steven 7
const StyledSpinnerContainer = styled.div`
8
  position: absolute;
9
  left: 0;
10
  top: 0;
11
  width: 100%;
12
  height: 100%;
13
  background: rgba(255, 255, 255, 0.4);
14
  display: flex;
15
  justify-content: center;
16
  align-items: center;
17
  z-index: 300;
18
`;
1992 steven 19
function CloseAccount(props) {
20
    const {addNotification} = props
1966 steven 21
    const [showInputCode, setShowInputCode] = useState(false);
1968 steven 22
    const [loading, setLoading] = useState(false);
1992 steven 23
    const handleAlert = (status, message) => {
24
        addNotification({
25
            style: status ? "success" : 'danger',
26
            msg: res.data.message || 'Email enviado exitosamente',
27
        });
28
    }
1991 steven 29
    const handleGetCode  = async () => {
1966 steven 30
        try {
1991 steven 31
            setShowInputCode(true)
1990 steven 32
            setLoading(true)
33
            const res = await axios.get('/account-settings/delete-account');
1992 steven 34
            handleAlert(res.data.success, res.data.message)
1966 steven 35
        } catch (error) {
1992 steven 36
            handleAlert(false, 'Disculpe, ha ocurrido un error')
1966 steven 37
            console.log('>>: error > ', error)
1990 steven 38
        }finally{
39
            setLoading(false)
1966 steven 40
        }
41
    }
1990 steven 42
 
1991 steven 43
    const resendCode = async () => {
44
        try {
45
            setLoading(true)
46
            const res = await axios.get('/account-settings/delete-account');
1992 steven 47
            handleAlert(res.data.success, res.data.message)
1991 steven 48
            console.log('>>: resend code > ', res)
49
        } catch (error) {
1992 steven 50
            handleAlert(false, 'Disculpe, ha ocurrido un error')
1991 steven 51
            console.log('>>: error > ', error)
52
        }finally{
53
            setLoading(false)
54
        }
55
    }
56
 
1990 steven 57
    const handleSubmit = async (e) => {
1968 steven 58
        try {
1990 steven 59
            e.preventDefault()
1968 steven 60
            setLoading(true)
1990 steven 61
            const res = await axios.post('/account-settings/delete-account');
1992 steven 62
            handleAlert(res.data.success, res.data.message)
1990 steven 63
            console.log('>>: res > ', res)
1968 steven 64
        } catch (error) {
1992 steven 65
            handleAlert(false, 'Disculpe, ha ocurrido un error')
1968 steven 66
            console.log('>>: error > ', error)
67
        }finally{
68
            setLoading(false)
69
        }
70
    }
1971 steven 71
 
1977 steven 72
    const CloseAccountContent = () => {
1975 steven 73
        if(showInputCode){
74
            return <form onSubmit={handleSubmit}>
75
                <div className="form-group">
1992 steven 76
                    <label htmlFor="exampleInputEmail1">Ingrese el codigo enviado a su correo electrónico</label>
1975 steven 77
                    <input type="email" className="form-control" id="exampleInputEmail1" />
1992 steven 78
                    <button className="btn btn-link btn-sm" onClick={() => resendCode()}>
79
                        ¿No ha recibido su correo?, solicite un codigo nuevo
1990 steven 80
                    </button>
1975 steven 81
                </div>
82
                <button type="submit" className="btn btn-primary">Enviar</button>
83
            </form>
84
        }else{
85
            return <>
1983 steven 86
                <h1 className="text-center">¿Esta seguro de eliminar su cuenta?</h1>
1975 steven 87
                <div className="row">
1983 steven 88
                    <div className='col-md col-sm-12 text-right'>
1991 steven 89
                        <button className="btn btn-primary" onClick={() => handleGetCode()} disabled={showInputCode}>Si, estoy seguro</button>
1975 steven 90
                    </div>
1983 steven 91
                    <div className='col-md col-sm-12 text-left'>
92
                        <button className="btn btn-primary" disabled={showInputCode}>No estoy seguro</button>
1975 steven 93
                    </div>
94
                </div>
95
            </>
96
        }
1977 steven 97
    }
1971 steven 98
    return (
1978 steven 99
        <div className="acc-setting h-100 d-flex justify-content-center align-items-center" style={{ position: "relative" }}>
1971 steven 100
            <div className="container">
1978 steven 101
                <div className="">
1974 steven 102
                    {CloseAccountContent()}
1971 steven 103
                </div>
1966 steven 104
            </div>
1968 steven 105
            {loading && (
106
                <StyledSpinnerContainer>
107
                    <Spinner />
108
                </StyledSpinnerContainer>
109
            )}
1966 steven 110
        </div>
111
    )
112
}
113
 
1992 steven 114
const mapDispatchToProps = {
115
    addNotification: (notification) => addNotification(notification),
116
};
117
 
118
export default connect({}, mapDispatchToProps)(CloseAccount);