Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5794 | Rev 5796 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3546 stevensc 1
/* eslint-disable react/prop-types */
5793 stevensc 2
import React, { useEffect, useState } from 'react'
3
import parse from 'html-react-parser'
4
import { axios } from '../../../utils'
5
import { setTimelineUrl } from '../../../redux/feed/feed.actions'
6
import { addNotification } from '../../../redux/notification/notification.actions'
7
import { feedTypes } from '../../../redux/feed/feed.types'
8
import FeedSection from '../../../dashboard/components/feed-section/FeedSection'
9
import ShareFeed from '../../../dashboard/components/share-feed/ShareFeed'
10
import GroupMembersHelper from '../../../shared/helpers/group-members-helper/GroupMembersHelper'
11
import GroupAttr from './component/GroupAttr'
12
import Cover from '../../../shared/cover/Cover'
13
import SuggestWidget from '../../../shared/helpers/my-groups-helper/SuggestWidget'
5794 stevensc 14
import { useDispatch } from 'react-redux'
5795 stevensc 15
import { setIntlLabels } from '../../../redux/intl/intl.action'
1 www 16
 
5794 stevensc 17
const View = ({
18
  routeTimeline,
19
  groupId,
20
  cover,
21
  image,
22
  totalMembers,
23
  name,
24
  overview,
25
  groupType,
26
  industry,
27
  privacy,
28
  accessibility,
29
  website,
30
  withoutFeeds,
31
  linkInmail,
5795 stevensc 32
  labels,
5794 stevensc 33
}) => {
1 www 34
  const groupTabs = {
5793 stevensc 35
    FEED_TAB: 'FEED_TAB',
36
    INFO_TAB: 'INFO_TAB',
37
  }
1068 stevensc 38
 
5794 stevensc 39
  const [actionLinks, setActionLinks] = useState({})
40
  const [linkInvite, setLinkInvite] = useState('')
5793 stevensc 41
  const [currentTab, setCurrentTab] = useState(
42
    withoutFeeds ? groupTabs.INFO_TAB : groupTabs.FEED_TAB
43
  )
5794 stevensc 44
  const dispatch = useDispatch()
2246 stevensc 45
 
46
  const load = () => {
5793 stevensc 47
    axios
48
      .get('')
3903 stevensc 49
      .then(({ data }) => {
50
        if (!data.success) {
5794 stevensc 51
          dispatch(addNotification({ style: 'error', msg: data.data }))
52
          return
1 www 53
        }
3903 stevensc 54
        setActionLinks(data.data)
1 www 55
      })
5793 stevensc 56
      .catch((err) => console.log('>>: err > ', err))
1 www 57
  }
2246 stevensc 58
 
5794 stevensc 59
  useEffect(() => load(), [])
1068 stevensc 60
 
5795 stevensc 61
  useEffect(() => {
62
    dispatch(setTimelineUrl(routeTimeline))
63
    dispatch(setIntlLabels(labels))
64
  }, [])
5794 stevensc 65
 
1 www 66
  const handleActionLink = (url) => {
5793 stevensc 67
    axios
68
      .post(url)
3903 stevensc 69
      .then(({ data }) => {
70
        if (!data.success) {
5794 stevensc 71
          dispatch(addNotification({ style: 'error', msg: data.data }))
72
          return
1 www 73
        }
5794 stevensc 74
        dispatch(addNotification({ style: 'success', msg: data.data }))
3903 stevensc 75
        window.location.reload()
1 www 76
      })
5793 stevensc 77
      .catch((err) => console.log('>>: err > ', err))
1 www 78
  }
2246 stevensc 79
 
1 www 80
  return (
3903 stevensc 81
    <>
5793 stevensc 82
      <Cover cover={cover} id={groupId} type="group" />
83
      <main className="main-section-data container px-0 mt-3">
84
        <div className="main-left-sidebar">
85
          <div className="user_profile">
86
            <div className="user-pro-img">
87
              <img
88
                src={`/storage/type/group/code/${groupId}/${
89
                  image ? `filename/${image}` : ''
90
                }`}
91
                alt="profile-image"
92
              />
93
            </div>
94
            <div className="user_pro_status">
95
              <h1 className="font-weight-bold" style={{ fontSize: '1.5rem' }}>
96
                {name}
97
              </h1>
98
              <ul className="flw-status">
99
                <div className="container horizontal-list">
100
                  <div className="row ">
101
                    {linkInmail && (
102
                      <a href={linkInmail || '#'} className="btn btn-primary">
103
                        Contactar con el Administrador
104
                      </a>
105
                    )}
106
                    <div className="members_count">
107
                      <b style={{ fontSize: '1rem' }}>{totalMembers}</b>
108
                      <p>Miembros</p>
3845 stevensc 109
                    </div>
5793 stevensc 110
                    {actionLinks.link_accept && (
111
                      <button
112
                        onClick={() =>
113
                          handleActionLink(actionLinks.link_accept)
114
                        }
115
                        className="btn btn-primary"
116
                      >
117
                        Aceptar invitacion
118
                      </button>
119
                    )}
120
                    {actionLinks.link_cancel && (
121
                      <button
122
                        onClick={() =>
123
                          handleActionLink(actionLinks.link_cancel)
124
                        }
125
                        className="btn btn-primary"
126
                      >
127
                        Cancelar invitacion
128
                      </button>
129
                    )}
130
                    {!linkInvite && actionLinks.link_leave && (
131
                      <button
132
                        onClick={() => handleActionLink(actionLinks.link_leave)}
133
                        className="btn btn-primary"
134
                      >
135
                        Abandonar grupo
136
                      </button>
137
                    )}
138
                    {actionLinks.link_request && (
139
                      <button
140
                        onClick={() =>
141
                          handleActionLink(actionLinks.link_request)
142
                        }
143
                        className="btn btn-primary"
144
                      >
145
                        {accessibility === 'Auto unirse'
146
                          ? 'Unirse'
147
                          : 'Solicitar membresia'}
148
                      </button>
149
                    )}
1 www 150
                  </div>
5793 stevensc 151
                </div>
152
              </ul>
3903 stevensc 153
            </div>
154
          </div>
5793 stevensc 155
          <GroupMembersHelper
156
            groupId={groupId}
157
            handleFirstLinkInvite={(link) => setLinkInvite(link)}
158
          />
159
        </div>
160
        <div className="main-ws-sec">
161
          <div className="user-tab-sec">
162
            {!withoutFeeds && (
163
              <div className="row">
164
                <div className="col text-left pl-0">
165
                  <button
166
                    className={` ${
167
                      currentTab === groupTabs.FEED_TAB ? 'active' : ''
168
                    } animated fadeIn btn btn-link p-0 text-decoration-none`}
169
                    onClick={() => setCurrentTab(groupTabs.FEED_TAB)}
170
                  >
171
                    <span className="font-weight-bold">Ver Publicaciones</span>
172
                  </button>
1 www 173
                </div>
5793 stevensc 174
                <div className="col text-right pr-0">
175
                  <button
176
                    className={` ${
177
                      currentTab === groupTabs.INFO_TAB ? 'active' : ''
178
                    } animated fadeIn btn btn-link p-0 text-decoration-none`}
179
                    onClick={() => setCurrentTab(groupTabs.INFO_TAB)}
180
                  >
181
                    <span className="font-weight-bold">Ver Información</span>
182
                  </button>
183
                </div>
184
              </div>
185
            )}
186
          </div>
187
          {currentTab === groupTabs.FEED_TAB && (
188
            <div className="product-feed-tab fadeIn">
3903 stevensc 189
              <ShareFeed
190
                feedType={feedTypes.GROUP}
191
                postUrl={`/feed/add/group/${groupId}`}
5793 stevensc 192
                image={`/storage/type/group/code/${groupId}/${
193
                  image ? `filename/${image}` : ''
194
                }`}
3903 stevensc 195
              />
196
              <div className="posts-section">
197
                <FeedSection
198
                  routeTimeline={routeTimeline}
5793 stevensc 199
                  image={`/storage/type/group/code/${groupId}/${
200
                    image ? `filename/${image}` : ''
201
                  }`}
3903 stevensc 202
                />
1 www 203
              </div>
3903 stevensc 204
            </div>
5793 stevensc 205
          )}
206
          {currentTab === groupTabs.INFO_TAB && (
207
            <div className="product-feed-tab fadeIn">
208
              {overview && (
209
                <GroupAttr title="Visión General">
210
                  <span>{parse(overview)}</span>
211
                </GroupAttr>
212
              )}
213
              {groupType && (
214
                <GroupAttr title="Tipo">
215
                  <span>{groupType}</span>
216
                </GroupAttr>
217
              )}
218
              {industry && (
219
                <GroupAttr title="Industria">
220
                  <span>{industry}</span>
221
                </GroupAttr>
222
              )}
223
              {!!privacy && (
224
                <GroupAttr title="Privacidad">
225
                  <span>{privacy}</span>
226
                </GroupAttr>
227
              )}
228
              {!!accessibility && (
229
                <GroupAttr title="Accesibilidad">
230
                  <span>{accessibility}</span>
231
                </GroupAttr>
232
              )}
233
              {!!website && (
234
                <GroupAttr title="Página Web">
235
                  <span>{website}</span>
236
                </GroupAttr>
237
              )}
1 www 238
            </div>
5793 stevensc 239
          )}
3903 stevensc 240
        </div>
5793 stevensc 241
        <div className="right-sidebar">
5795 stevensc 242
          <SuggestWidget
243
            title="Grupos:"
244
            url="/helpers/groups-suggestion"
245
            btnLabelAccept={labels.GROUP_VIEW}
246
          />
5793 stevensc 247
        </div>
248
      </main>
3903 stevensc 249
    </>
5793 stevensc 250
  )
251
}
1 www 252
 
5794 stevensc 253
export default View