Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
6632 stevensc 1
/* eslint-disable camelcase */
2
/* eslint-disable react/prop-types */
3
import React, { useEffect, useRef, useState } from 'react'
4
import UserDropdown from './UserDropdown'
5
import MoreVertIcon from '@mui/icons-material/MoreVert'
6
import useOutsideClick from '../../../../hooks/useOutsideClick'
7
 
8
const UserImageDropdown = ({ fullName, image, linkAdmin, linkImpersonate }) => {
9
  const [sessionImage, setSessionImage] = useState(image)
10
  const [showUserDropdown, setShowUserDropdown] = useState(false)
11
  const userDropdownContainer = useRef(null)
12
  const outsideClick = useOutsideClick(userDropdownContainer)
13
 
14
  const handleShowUserDropdown = () => setShowUserDropdown(!showUserDropdown)
15
 
16
  const checkSessionImage = () => {
17
    const session_image = sessionStorage.getItem('user_session_image')
18
    if (session_image) {
19
      setSessionImage(session_image)
20
      sessionStorage.removeItem('user_session_image')
21
    }
22
  }
23
 
24
  useEffect(() => {
25
    const imageInterval = setInterval(() => checkSessionImage(), 1000)
26
    return () => {
27
      clearInterval(imageInterval)
28
    }
29
  }, [])
30
 
31
  useEffect(() => {
32
    if (outsideClick) setShowUserDropdown(false)
33
  }, [outsideClick])
34
 
35
  return (
36
    <div
37
      className="userImgContainer"
38
      onClick={handleShowUserDropdown}
39
      ref={userDropdownContainer}
40
    >
41
      <img src={sessionImage} alt="user-img" />
42
      <div className="d-inline-flex flex-column">
43
        <h3>{fullName}</h3>
44
        <span>Mi perfil</span>
45
      </div>
46
      <MoreVertIcon />
47
      <UserDropdown
48
        linkAdmin={linkAdmin}
49
        linkImpersonate={linkImpersonate}
50
        show={showUserDropdown}
51
        onClose={handleShowUserDropdown}
52
        userDropdownContainer={userDropdownContainer}
53
      />
54
    </div>
55
  )
56
}
57
 
58
export default UserImageDropdown