Proyectos de Subversion LeadersLinked - SPA

Rev

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