Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3094 | Rev 3185 | 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()
3096 stevensc 33
  const isMobile = useMediaQuery('(max-width: 900px)')
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} />
3096 stevensc 80
            {!isMobile && (
81
              <>
82
                <OnRoomWidget moodle={moodle} />
83
                <MicrolearningWidget />
84
                <AppsWidget microlearning={microlearning} />
85
              </>
86
            )}
2805 stevensc 87
            <GroupsWidget />
88
          </>
89
        )}
90
        renderMain={() => (
91
          <>
3094 stevensc 92
            {isMobile && (
3096 stevensc 93
              <>
94
                {data?.routeDailyPulse && (
95
                  <DailyPulse dailyPulseUrl={data?.routeDailyPulse} />
96
                )}
97
                <OnRoomWidget moodle={moodle} />
98
                <MicrolearningWidget />
99
                <AppsWidget microlearning={microlearning} />
100
              </>
3094 stevensc 101
            )}
2805 stevensc 102
            <FeedShare
103
              image={data?.image}
104
              feedType={feedTypes.DASHBOARD}
105
              postUrl='/feed/add'
106
            />
107
            {loading ? <Spinner /> : <FeedList feeds={allFeeds} />}
2964 stevensc 108
            <Pagination
2805 stevensc 109
              pages={pages}
2964 stevensc 110
              page={currentPage}
111
              onChange={onChangePageHandler}
2805 stevensc 112
            />
113
          </>
114
        )}
115
        renderAside={() => (
116
          <>
3094 stevensc 117
            {routeDailyPulse && !isMobile && (
118
              <DailyPulse dailyPulseUrl={routeDailyPulse} />
2805 stevensc 119
            )}
120
            <PeopleYouMayKnow />
121
            <HomeNews />
122
          </>
123
        )}
124
      />
2674 stevensc 125
      <ShareModal />
126
      <ReportModal />
127
    </>
128
  )
129
}
130
 
131
export default DashboardPage