Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6246 | | Comparar con el anterior | Ultima modificación | Ver Log |

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