Proyectos de Subversion LeadersLinked - SPA

Rev

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