Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 7088 | Rev 7331 | 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}>
7101 stevensc 67
        <Avatar src={userImage} alt={`${name} profile image`} />
6632 stevensc 68
        <span>
69
          Me <ArrowDropDownIcon className="user__option-icon" />
70
        </span>
71
      </a>
72
      <div
73
        className={`user__options-dropdown ${
74
          displayOptions ? 'fadeIn' : 'fadeOut'
75
        }`}
76
        ref={userDropdownContainer}
77
      >
78
        <div className="user__options-description">
79
          <div className="user__options-info">
7101 stevensc 80
            <Avatar src={userImage} alt={`${name} profile image`} />
6632 stevensc 81
            <h3>{name}</h3>
82
          </div>
83
          {/* <a href='#' className='btn__profile'>
84
                        View profile
85
                    </a> */}
86
        </div>
87
        {(adminUrl || impersonateUrl || knowledgeAuth) && (
88
          <div className="user__options-item">
89
            <h3>Admin</h3>
90
            <ul>
91
              {adminUrl && (
92
                <li>
93
                  <a href="#" onClick={getAdminUrl}>
94
                    Administración
95
                  </a>
96
                </li>
97
              )}
98
              {impersonateUrl && (
99
                <li>
100
                  <a href="/impersonate" target="secondary">
101
                    Personificar otro usuario
102
                  </a>
103
                </li>
104
              )}
105
            </ul>
106
          </div>
107
        )}
108
        <div className="user__options-item">
109
          <h3>Cuenta</h3>
110
          <ul>
111
            <li>
112
              <a href="/account-settings" target="secondary">
113
                Configuración de la cuenta
114
              </a>
115
            </li>
116
            {defaultNetwork === 'y' && (
117
              <>
118
                <li>
119
                  <a href="/privacy-policy" target="secondary">
120
                    Política de privacidad
121
                  </a>
122
                </li>
123
                <li>
124
                  <a href="/cookies" target="secondary">
125
                    Política de cookies
126
                  </a>
127
                </li>
128
              </>
129
            )}
130
          </ul>
131
        </div>
132
        <div className="user__options-item">
133
          <ul>
134
            <li className="logOutContainer">
135
              <a className="logOutContainer__a" href="/signout">
136
                Cerrar sesión
137
              </a>
138
            </li>
139
          </ul>
140
        </div>
141
      </div>
142
    </li>
143
  )
144
}
145
 
146
export default UserOptions