Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
6753 stevensc 1
import React, { useRef, useState } from 'react'
2
import { axios } from '../../../utils'
6632 stevensc 3
import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'
4
 
6753 stevensc 5
import Avatar from '../../UI/AvatarImage'
6
import useOutsideClick from '../../../hooks/useOutsideClick'
7
 
6632 stevensc 8
const UserOptions = ({
9
  image = '',
10
  name = '',
11
  adminUrl = '',
12
  impersonateUrl = '',
13
  defaultNetwork = 'y',
14
  routeKnowledge,
15
  knowledgeAuth,
16
}) => {
17
  const [displayOptions, setDisplayOptions] = useState(false)
18
  const userDropdownContainer = useRef(null)
6753 stevensc 19
  useOutsideClick(userDropdownContainer, () => setDisplayOptions(false))
6632 stevensc 20
 
21
  const handleDisplay = async (e) => {
22
    e.preventDefault()
23
    setDisplayOptions(!displayOptions)
24
  }
25
 
26
  const getAdminUrl = async (e) => {
27
    e.preventDefault()
28
    try {
29
      const { data } = await axios.get('/backend/signin-admin')
30
      if (data.success) return window.open(data.data)
31
    } catch (error) {
32
      console.log('>>: error > ', error)
33
    }
34
  }
35
 
36
  return (
37
    <li>
38
      <a href="#" className="header__option mobile" onClick={handleDisplay}>
39
        <Avatar imageUrl={image} name={name} size="md" />
40
        <span>
41
          Me <ArrowDropDownIcon className="user__option-icon" />
42
        </span>
43
      </a>
44
      <div
45
        className={`user__options-dropdown ${
46
          displayOptions ? 'fadeIn' : 'fadeOut'
47
        }`}
48
        ref={userDropdownContainer}
49
      >
50
        <div className="user__options-description">
51
          <div className="user__options-info">
52
            <Avatar imageUrl={image} name={name} size="xl" />
53
            <h3>{name}</h3>
54
          </div>
55
          {/* <a href='#' className='btn__profile'>
56
                        View profile
57
                    </a> */}
58
        </div>
59
        {(adminUrl || impersonateUrl || knowledgeAuth) && (
60
          <div className="user__options-item">
61
            <h3>Admin</h3>
62
            <ul>
63
              {adminUrl && (
64
                <li>
65
                  <a href="#" onClick={getAdminUrl}>
66
                    Administración
67
                  </a>
68
                </li>
69
              )}
70
              {impersonateUrl && (
71
                <li>
72
                  <a href="/impersonate" target="secondary">
73
                    Personificar otro usuario
74
                  </a>
75
                </li>
76
              )}
77
            </ul>
78
          </div>
79
        )}
80
        <div className="user__options-item">
81
          <h3>Cuenta</h3>
82
          <ul>
83
            <li>
84
              <a href="/account-settings" target="secondary">
85
                Configuración de la cuenta
86
              </a>
87
            </li>
88
            {defaultNetwork === 'y' && (
89
              <>
90
                <li>
91
                  <a href="/privacy-policy" target="secondary">
92
                    Política de privacidad
93
                  </a>
94
                </li>
95
                <li>
96
                  <a href="/cookies" target="secondary">
97
                    Política de cookies
98
                  </a>
99
                </li>
100
              </>
101
            )}
102
          </ul>
103
        </div>
104
        <div className="user__options-item">
105
          <ul>
106
            <li className="logOutContainer">
107
              <a className="logOutContainer__a" href="/signout">
108
                Cerrar sesión
109
              </a>
110
            </li>
111
          </ul>
112
        </div>
113
      </div>
114
    </li>
115
  )
116
}
117
 
118
export default UserOptions