Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6695 | Rev 6699 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
6694 stevensc 1
import React, { useState, useEffect } from 'react'
2
import DefaultNavbar from './default/Navbar'
3
import { axios } from '../../utils'
4
import { getBackendVars } from '../../services/backendVars'
5
 
6
const Header = ({ theme = 'default' }) => {
7
  const [backendVars, setBackendVars] = useState(null)
8
  const [setNotificationsCount] = useState(0)
9
  const [setMessagesCount] = useState(0)
10
  const [userImage, setUserImage] = useState('')
11
  const [loading, setLoading] = useState(false)
12
 
13
  const checkUserImage = () => {
14
    const session_image = sessionStorage.getItem('user_session_image')
15
 
16
    if (!session_image) {
17
      return
18
    }
19
 
20
    setUserImage(session_image)
21
    sessionStorage.removeItem('user_session_image')
22
  }
23
 
24
  const checkSession = async () => {
25
    try {
26
      setLoading(true)
27
      const { data: response } = await axios.get(backendVars?.routeCheckSession)
28
      const { total_messages, total_notifications } = response.data
29
 
30
      if (response.success) {
31
        setMessagesCount(Number(total_messages))
32
        setNotificationsCount(Number(total_notifications))
33
      }
34
      setLoading(false)
35
    } catch (error) {
36
      console.log(error)
37
    }
38
  }
39
 
40
  useEffect(() => {
41
    getBackendVars('/helpers/menu')
42
      .then((results) => {
43
        const knowledgeRoutes = {
44
          label: 'Conocimiento',
45
          href: '/knowledge',
46
          img: '',
47
          childs: [{ label: 'Mi Coach', href: '/my-coach' }],
48
          ajax: 0,
49
        }
50
 
51
        const menuItems = [...results.menu, knowledgeRoutes]
52
 
53
        setUserImage(results.image)
6698 stevensc 54
        setBackendVars({ ...results, menu: menuItems })
6694 stevensc 55
      })
56
      .catch((err) => {
57
        console.log(err)
58
        throw new Error(err)
59
      })
60
  }, [])
61
 
62
  useEffect(() => {
63
    let timer
64
    if (!loading) {
65
      timer = setTimeout(() => {
66
        checkUserImage()
67
        checkSession()
68
      }, 2000)
69
    }
70
    return () => {
71
      clearTimeout(timer)
72
    }
73
  }, [loading])
74
 
75
  switch (theme) {
76
    case 'default':
77
      return (
78
        <DefaultNavbar
79
          menu={backendVars?.menu}
80
          image={userImage}
81
          logo={backendVars?.logoForNavbar}
82
          name={backendVars?.fullName}
83
          linkAdmin={backendVars?.linkAdmin}
84
          linkImpersonate={backendVars?.linkImpersonate}
85
        />
86
      )
87
    default:
88
      return <DefaultNavbar />
89
  }
90
}
91
 
92
export default Header