Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
2674 stevensc 1
import React, { useEffect } from 'react'
2
import { useDispatch, useSelector } from 'react-redux'
3
import { useParams } from 'react-router-dom'
4
 
2780 stevensc 5
import { useFetch } from '@hooks'
2674 stevensc 6
import {
7
  fetchFeeds,
8
  setCurrentPage,
9
  setTimelineUrl
10
} from '@app/redux/feed/feed.actions'
11
import { feedTypes } from '@app/redux/feed/feed.types'
12
 
13
import PaginationComponent from '@app/components/UI/PaginationComponent'
14
import Spinner from '@app/components/UI/Spinner'
15
import AppGrid from '@app/components/UI/layout/AppGrid'
16
import GroupsWidget from '@app/components/dashboard/linkedin/Groups'
2678 stevensc 17
import UserProfileCard from '@app/components/dashboard/linkedin/user-profile-card'
2674 stevensc 18
import FeedList from '@app/components/dashboard/linkedin/feed-list/FeedList'
19
import FeedShare from '@app/components/dashboard/linkedin/share/ShareComponent'
20
import ReportModal from '@app/components/modals/ReportModal'
21
import ShareModal from '@app/components/modals/ShareModal'
22
import DailyPulse from '@app/components/widgets/default/DailyPulse'
23
import HomeNews from '@app/components/widgets/default/HomeNews'
24
import PeopleYouMayKnow from '@app/components/widgets/default/PeopleYouMayKnow'
2875 stevensc 25
import AppsWidget from '@components/dashboard/widgets/AppsWidget'
26
import OnRoomWidget from '@components/dashboard/widgets/OnRoomWidget'
2674 stevensc 27
 
28
const DashboardPage = () => {
29
  const { feeds, timelineUrl, currentPage, loading, pages } = useSelector(
30
    ({ feed }) => feed
31
  )
32
  const dispatch = useDispatch()
33
 
34
  const { id } = useParams()
35
  const { data } = useFetch(id ? `/dashboard/feed/${id}` : '/dashboard')
36
 
37
  const allFeeds = feeds.allIds.map((id) => feeds.byId[id])
38
 
39
  const {
40
    moodle_image,
41
    moodle_name,
42
    microlearning_appstore,
43
    microlearning_playstore,
44
    microlearning_name,
45
    routeDailyPulse,
46
    routeTimeline
47
  } = data
48
 
49
  const moodle = {
50
    image: moodle_image,
51
    name: moodle_name
52
  }
53
 
54
  const microlearning = {
55
    playStore: microlearning_playstore,
56
    appStore: microlearning_appstore,
57
    name: microlearning_name
58
  }
59
 
60
  const onChangePageHandler = (currentPage) => {
61
    dispatch(setCurrentPage(currentPage))
62
    window.scrollTo(0, 0)
63
  }
64
 
65
  useEffect(() => {
66
    dispatch(setTimelineUrl(routeTimeline))
67
  }, [routeTimeline, id])
68
 
69
  useEffect(() => {
70
    dispatch(fetchFeeds(timelineUrl, currentPage))
71
  }, [timelineUrl, currentPage])
72
 
73
  return (
74
    <>
2805 stevensc 75
      <AppGrid
76
        renderSidebar={() => (
77
          <>
78
            <UserProfileCard user={data} />
2875 stevensc 79
            <AppsWidget microlearning={microlearning} />
80
            <OnRoomWidget moodle={moodle} />
2805 stevensc 81
            <GroupsWidget />
82
          </>
83
        )}
84
        renderMain={() => (
85
          <>
86
            {data?.routeDailyPulse && (
2674 stevensc 87
              <div className='d-md-none'>
2805 stevensc 88
                <DailyPulse dailyPulseUrl={data?.routeDailyPulse} />
2674 stevensc 89
              </div>
2805 stevensc 90
            )}
91
            <div className='d-md-none'>
92
              <AppsWidget moodle={moodle} microlearning={microlearning} />
93
            </div>
94
            <FeedShare
95
              image={data?.image}
96
              feedType={feedTypes.DASHBOARD}
97
              postUrl='/feed/add'
98
            />
99
            {loading ? <Spinner /> : <FeedList feeds={allFeeds} />}
100
            <PaginationComponent
101
              pages={pages}
102
              currentActivePage={currentPage}
103
              onChangePage={onChangePageHandler}
104
            />
105
          </>
106
        )}
107
        renderAside={() => (
108
          <>
109
            {routeDailyPulse && (
110
              <div className='d-none d-md-block'>
111
                <DailyPulse dailyPulseUrl={routeDailyPulse} />
112
              </div>
113
            )}
114
            <PeopleYouMayKnow />
115
            <HomeNews />
116
          </>
117
        )}
118
      />
2674 stevensc 119
      <ShareModal />
120
      <ReportModal />
121
    </>
122
  )
123
}
124
 
125
export default DashboardPage