Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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