Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
7088 stevensc 1
import React, { useEffect, useRef, useState } from 'react'
6753 stevensc 2
import { axios } from '../../../utils'
6632 stevensc 3
import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'
4
 
6753 stevensc 5
import useOutsideClick from '../../../hooks/useOutsideClick'
7088 stevensc 6
import { Avatar } from '@mui/material'
6753 stevensc 7
 
6632 stevensc 8
const UserOptions = ({
9
  image = '',
10
  name = '',
11
  adminUrl = '',
12
  impersonateUrl = '',
13
  defaultNetwork = 'y',
14
  knowledgeAuth,
15
}) => {
7088 stevensc 16
  const [userImage, setUserImage] = useState(
17
    '/storage/type/user/code/f3df3718-37d9-4e4d-bd84-71f7924a858d/'
18
  )
6632 stevensc 19
  const [displayOptions, setDisplayOptions] = useState(false)
20
  const userDropdownContainer = useRef(null)
7088 stevensc 21
 
6753 stevensc 22
  useOutsideClick(userDropdownContainer, () => setDisplayOptions(false))
6632 stevensc 23
 
7088 stevensc 24
  const checkUserImage = () => {
25
    const session_image = sessionStorage.getItem('user_session_image')
26
 
27
    if (!session_image) {
28
      return
29
    }
30
 
31
    setUserImage(session_image)
32
    sessionStorage.removeItem('user_session_image')
33
  }
34
 
6632 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)
47
    }
48
  }
49
 
7088 stevensc 50
  useEffect(() => {
51
    const timer = setInterval(() => {
52
      checkUserImage()
53
    }, 2000)
54
 
55
    return () => {
56
      clearInterval(timer)
57
    }
58
  }, [])
59
 
60
  useEffect(() => {
61
    setUserImage(image)
62
  }, [image])
63
 
6632 stevensc 64
  return (
65
    <li>
66
      <a href="#" className="header__option mobile" onClick={handleDisplay}>
7088 stevensc 67
        <Avatar
68
          src={userImage}
69
          alt={`${name} profile image`}
70
          sx={{ height: '30px', width: '30px' }}
71
        />
6632 stevensc 72
        <span>
73
          Me <ArrowDropDownIcon className="user__option-icon" />
74
        </span>
75
      </a>
76
      <div
77
        className={`user__options-dropdown ${
78
          displayOptions ? 'fadeIn' : 'fadeOut'
79
        }`}
80
        ref={userDropdownContainer}
81
      >
82
        <div className="user__options-description">
83
          <div className="user__options-info">
7088 stevensc 84
            <Avatar />
6632 stevensc 85
            <h3>{name}</h3>
86
          </div>
87
          {/* <a href='#' className='btn__profile'>
88
                        View profile
89
                    </a> */}
90
        </div>
91
        {(adminUrl || impersonateUrl || knowledgeAuth) && (
92
          <div className="user__options-item">
93
            <h3>Admin</h3>
94
            <ul>
95
              {adminUrl && (
96
                <li>
97
                  <a href="#" onClick={getAdminUrl}>
98
                    Administración
99
                  </a>
100
                </li>
101
              )}
102
              {impersonateUrl && (
103
                <li>
104
                  <a href="/impersonate" target="secondary">
105
                    Personificar otro usuario
106
                  </a>
107
                </li>
108
              )}
109
            </ul>
110
          </div>
111
        )}
112
        <div className="user__options-item">
113
          <h3>Cuenta</h3>
114
          <ul>
115
            <li>
116
              <a href="/account-settings" target="secondary">
117
                Configuración de la cuenta
118
              </a>
119
            </li>
120
            {defaultNetwork === 'y' && (
121
              <>
122
                <li>
123
                  <a href="/privacy-policy" target="secondary">
124
                    Política de privacidad
125
                  </a>
126
                </li>
127
                <li>
128
                  <a href="/cookies" target="secondary">
129
                    Política de cookies
130
                  </a>
131
                </li>
132
              </>
133
            )}
134
          </ul>
135
        </div>
136
        <div className="user__options-item">
137
          <ul>
138
            <li className="logOutContainer">
139
              <a className="logOutContainer__a" href="/signout">
140
                Cerrar sesión
141
              </a>
142
            </li>
143
          </ul>
144
        </div>
145
      </div>
146
    </li>
147
  )
148
}
149
 
150
export default UserOptions