Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

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