Proyectos de Subversion LeadersLinked - SPA

Rev

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