Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5458 | Ir a la última revisión | | 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'
5455 stevensc 5
import useOutsideClick from '../../../../hooks/useOutsideClick'
4250 stevensc 6
 
5455 stevensc 7
const UserImageDropdown = ({ fullName, image, linkAdmin, linkImpersonate }) => {
8
  const [sessionImage, setSessionImage] = useState(image)
5397 stevensc 9
  const [showUserDropdown, setShowUserDropdown] = useState(false)
10
  const userDropdownContainer = useRef(null)
5455 stevensc 11
  const outsideClick = useOutsideClick(userDropdownContainer)
4250 stevensc 12
 
5397 stevensc 13
  const handleShowUserDropdown = () => setShowUserDropdown(!showUserDropdown)
4250 stevensc 14
 
5455 stevensc 15
  const checkSessionImage = () => {
16
    const session_image = sessionStorage.getItem('user_session_image')
17
    if (session_image) {
18
      setSessionImage(session_image)
19
      sessionStorage.removeItem('user_session_image')
5397 stevensc 20
    }
5455 stevensc 21
  }
4250 stevensc 22
 
5455 stevensc 23
  useEffect(() => {
5457 stevensc 24
    const imageInterval = setInterval(() => checkSessionImage(), 1000)
5397 stevensc 25
    return () => {
5457 stevensc 26
      clearInterval(imageInterval)
5397 stevensc 27
    }
5455 stevensc 28
  }, [])
4250 stevensc 29
 
5455 stevensc 30
  useEffect(() => {
5460 stevensc 31
    if (outsideClick) setShowUserDropdown(false)
5455 stevensc 32
  }, [outsideClick])
33
 
5397 stevensc 34
  return (
5455 stevensc 35
    <div
5458 stevensc 36
      className="userImgContainer"
5455 stevensc 37
      onClick={handleShowUserDropdown}
38
      ref={userDropdownContainer}
39
    >
5457 stevensc 40
      <img src={sessionImage} alt="user-img" />
5455 stevensc 41
      <div className="d-inline-flex flex-column">
42
        <h3>{fullName}</h3>
43
        <span>Mi perfil</span>
44
      </div>
45
      <img src="/images/icons/options.png" className="img-icon options-lg" />
46
      <UserDropdown
47
        linkAdmin={linkAdmin}
48
        linkImpersonate={linkImpersonate}
49
        show={showUserDropdown}
50
        onClose={handleShowUserDropdown}
51
        userDropdownContainer={userDropdownContainer}
52
      />
53
    </div>
5397 stevensc 54
  )
4250 stevensc 55
}
56
 
5397 stevensc 57
export default UserImageDropdown