Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5397 | Rev 5457 | 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)
5397 stevensc 12
  const userImg = useRef(null)
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(() => {
25
    setInterval(() => checkSessionImage(), 1000)
26
 
5397 stevensc 27
    return () => {
5455 stevensc 28
      clearInterval()
5397 stevensc 29
    }
5455 stevensc 30
  }, [])
4250 stevensc 31
 
5455 stevensc 32
  useEffect(() => {
33
    if (outsideClick) handleShowUserDropdown()
34
  }, [outsideClick])
35
 
5397 stevensc 36
  return (
5455 stevensc 37
    <div
38
      className="userImgContainer"
39
      onClick={handleShowUserDropdown}
40
      ref={userDropdownContainer}
41
    >
42
      <img src={sessionImage} alt="user-img" ref={userImg} />
43
      <div className="d-inline-flex flex-column">
44
        <h3>{fullName}</h3>
45
        <span>Mi perfil</span>
46
      </div>
47
      <img src="/images/icons/options.png" className="img-icon options-lg" />
48
      <UserDropdown
49
        linkAdmin={linkAdmin}
50
        linkImpersonate={linkImpersonate}
51
        show={showUserDropdown}
52
        onClose={handleShowUserDropdown}
53
        userDropdownContainer={userDropdownContainer}
54
      />
55
    </div>
5397 stevensc 56
  )
4250 stevensc 57
}
58
 
5397 stevensc 59
export default UserImageDropdown