Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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