Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3096 | Rev 3259 | 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'
3185 stevensc 27
import HabitsWidget from '@components/dashboard/widgets/HabitsWidget'
2674 stevensc 28
 
29
const DashboardPage = () => {
30
  const { feeds, timelineUrl, currentPage, loading, pages } = useSelector(
31
    ({ feed }) => feed
32
  )
33
  const dispatch = useDispatch()
3096 stevensc 34
  const isMobile = useMediaQuery('(max-width: 900px)')
2674 stevensc 35
 
36
  const { id } = useParams()
37
  const { data } = useFetch(id ? `/dashboard/feed/${id}` : '/dashboard')
38
 
39
  const allFeeds = feeds.allIds.map((id) => feeds.byId[id])
40
 
41
  const {
42
    moodle_image,
43
    moodle_name,
44
    microlearning_appstore,
45
    microlearning_playstore,
46
    microlearning_name,
47
    routeDailyPulse,
48
    routeTimeline
49
  } = data
50
 
51
  const moodle = {
52
    image: moodle_image,
53
    name: moodle_name
54
  }
55
 
56
  const microlearning = {
57
    playStore: microlearning_playstore,
58
    appStore: microlearning_appstore,
59
    name: microlearning_name
60
  }
61
 
62
  const onChangePageHandler = (currentPage) => {
63
    dispatch(setCurrentPage(currentPage))
64
    window.scrollTo(0, 0)
65
  }
66
 
67
  useEffect(() => {
68
    dispatch(setTimelineUrl(routeTimeline))
69
  }, [routeTimeline, id])
70
 
71
  useEffect(() => {
72
    dispatch(fetchFeeds(timelineUrl, currentPage))
73
  }, [timelineUrl, currentPage])
74
 
75
  return (
76
    <>
2805 stevensc 77
      <AppGrid
78
        renderSidebar={() => (
79
          <>
80
            <UserProfileCard user={data} />
3096 stevensc 81
            {!isMobile && (
82
              <>
83
                <OnRoomWidget moodle={moodle} />
3185 stevensc 84
                <HabitsWidget />
3096 stevensc 85
                <MicrolearningWidget />
86
                <AppsWidget microlearning={microlearning} />
87
              </>
88
            )}
2805 stevensc 89
            <GroupsWidget />
90
          </>
91
        )}
92
        renderMain={() => (
93
          <>
3094 stevensc 94
            {isMobile && (
3096 stevensc 95
              <>
96
                {data?.routeDailyPulse && (
97
                  <DailyPulse dailyPulseUrl={data?.routeDailyPulse} />
98
                )}
99
                <OnRoomWidget moodle={moodle} />
3185 stevensc 100
                <HabitsWidget />
3096 stevensc 101
                <MicrolearningWidget />
102
                <AppsWidget microlearning={microlearning} />
103
              </>
3094 stevensc 104
            )}
2805 stevensc 105
            <FeedShare
106
              image={data?.image}
107
              feedType={feedTypes.DASHBOARD}
108
              postUrl='/feed/add'
109
            />
110
            {loading ? <Spinner /> : <FeedList feeds={allFeeds} />}
2964 stevensc 111
            <Pagination
2805 stevensc 112
              pages={pages}
2964 stevensc 113
              page={currentPage}
114
              onChange={onChangePageHandler}
2805 stevensc 115
            />
116
          </>
117
        )}
118
        renderAside={() => (
119
          <>
3094 stevensc 120
            {routeDailyPulse && !isMobile && (
121
              <DailyPulse dailyPulseUrl={routeDailyPulse} />
2805 stevensc 122
            )}
123
            <PeopleYouMayKnow />
124
            <HomeNews />
125
          </>
126
        )}
127
      />
2674 stevensc 128
      <ShareModal />
129
      <ReportModal />
130
    </>
131
  )
132
}
133
 
134
export default DashboardPage