Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 7087 | Rev 7233 | 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 { axios } from '../../utils'
3
import { getBackendVars } from '../../services/backendVars'
4
 
7085 stevensc 5
import DefaultNavbar from './default/Navbar'
6
import LinkendInHeader from './linkedin/Header'
7
 
6755 stevensc 8
const Header = ({ theme = 1 }) => {
6694 stevensc 9
  const [backendVars, setBackendVars] = useState(null)
6699 stevensc 10
  const [notificationsCount, setNotificationsCount] = useState(0)
11
  const [messagesCount, setMessagesCount] = useState(0)
6694 stevensc 12
  const [loading, setLoading] = useState(false)
13
 
6846 stevensc 14
  const checkSession = async (url) => {
6694 stevensc 15
    try {
16
      setLoading(true)
6846 stevensc 17
      const { data: response } = await axios.get(url)
6694 stevensc 18
      const { total_messages, total_notifications } = response.data
19
 
20
      if (response.success) {
21
        setMessagesCount(Number(total_messages))
22
        setNotificationsCount(Number(total_notifications))
23
      }
24
      setLoading(false)
25
    } catch (error) {
26
      console.log(error)
27
    }
28
  }
29
 
30
  useEffect(() => {
31
    getBackendVars('/helpers/menu')
6700 stevensc 32
      .then((results) => {
6694 stevensc 33
        const knowledgeRoutes = {
34
          label: 'Conocimiento',
35
          href: '/knowledge',
36
          img: '',
6699 stevensc 37
          childs: [],
6694 stevensc 38
          ajax: 0,
39
        }
40
 
6699 stevensc 41
        const comunicationRoutes = {
42
          label: 'Comunicación',
43
          href: '/comunication',
44
          img: '',
45
          childs: [
46
            { label: 'Calendario', href: '/calendar' },
47
            { label: 'Inmail', href: '/inmail', count: messagesCount },
48
            { label: 'Chat', href: '/chat' },
49
            {
50
              label: 'Notificaciones',
51
              href: '/notifications',
52
              count: notificationsCount,
53
            },
54
          ],
55
          ajax: 0,
56
        }
6694 stevensc 57
 
6701 stevensc 58
        const menuItems = [
59
          ...results.menu.splice(0, 5),
60
          knowledgeRoutes,
61
          comunicationRoutes,
62
        ]
6699 stevensc 63
 
6700 stevensc 64
        if (results.linkMyCoach) {
65
          knowledgeRoutes.childs.push({ label: 'Mi Coach', href: '/my-coach' })
66
        }
67
 
6699 stevensc 68
        if (results.linkKnowledgeArea) {
69
          knowledgeRoutes.childs.push({
70
            label: 'Área de conocimiento',
71
            href: results.routeKnowledgeArea,
72
          })
73
        }
74
 
6700 stevensc 75
        setBackendVars({ ...results, menu: menuItems })
6694 stevensc 76
      })
77
      .catch((err) => {
78
        console.log(err)
79
        throw new Error(err)
80
      })
81
  }, [])
82
 
83
  useEffect(() => {
6846 stevensc 84
    if (loading) return
85
 
86
    const timer = setTimeout(() => {
87
      checkSession(backendVars?.routeCheckSession)
88
    }, 2000)
89
 
6694 stevensc 90
    return () => {
91
      clearTimeout(timer)
92
    }
6846 stevensc 93
  }, [loading, backendVars])
6694 stevensc 94
 
7087 stevensc 95
  if (theme === 2) {
96
    return (
97
      <LinkendInHeader
98
        menu={backendVars?.menu}
99
        logo={backendVars?.logoForNavbar}
100
        fullName={backendVars?.fullName}
101
        notificationsCount={notificationsCount}
102
        messagesCount={messagesCount}
103
        {...backendVars}
104
      />
105
    )
6694 stevensc 106
  }
7087 stevensc 107
 
108
  return (
109
    <DefaultNavbar
110
      menu={backendVars?.menu}
111
      logo={backendVars?.logoForNavbar}
112
      name={backendVars?.fullName}
113
      {...backendVars}
114
    />
115
  )
6694 stevensc 116
}
117
 
118
export default Header