Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6695 | Ir a la última revisión | | 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
        if (results.linkKnowledgeArea || results.routeKnowledgeArea) {
52
          knowledgeRoutes.childs.push({
53
            label: 'Área de conocimiento',
54
            href: results.routeKnowledgeArea,
55
          })
56
        }
57
 
58
        const menuItems = [...results.menu, knowledgeRoutes]
59
 
60
        setUserImage(results.image)
61
        setBackendVars(menuItems)
62
      })
63
      .catch((err) => {
64
        console.log(err)
65
        throw new Error(err)
66
      })
67
  }, [])
68
 
69
  useEffect(() => {
70
    let timer
71
    if (!loading) {
72
      timer = setTimeout(() => {
73
        checkUserImage()
74
        checkSession()
75
      }, 2000)
76
    }
77
    return () => {
78
      clearTimeout(timer)
79
    }
80
  }, [loading])
81
 
82
  switch (theme) {
83
    case 'default':
84
      return (
85
        <DefaultNavbar
86
          menu={backendVars?.menu}
87
          image={userImage}
88
          logo={backendVars?.logoForNavbar}
89
          name={backendVars?.fullName}
90
          linkAdmin={backendVars?.linkAdmin}
91
          linkImpersonate={backendVars?.linkImpersonate}
92
        />
93
      )
94
    default:
95
      return <DefaultNavbar />
96
  }
97
}
98
 
99
export default Header