Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
5413 stevensc 1
/* eslint-disable camelcase */
3552 stevensc 2
/* eslint-disable react/prop-types */
5411 stevensc 3
import React, { useEffect, useRef, useState } from 'react'
5414 stevensc 4
import parse from 'html-react-parser'
5406 stevensc 5
import { connect } from 'react-redux'
5414 stevensc 6
import { setIntlLabels } from '../../../redux/intl/intl.action'
7
import { setTimelineUrl } from '../../../redux/feed/feed.actions'
5406 stevensc 8
import { addNotification } from '../../../redux/notification/notification.actions'
9
import Spinner from '../../../shared/loading-spinner/Spinner'
10
import FeedSection from '../../../dashboard/components/feed-section/FeedSection'
5411 stevensc 11
import SuggestWidget from '../../../shared/helpers/my-groups-helper/SuggestWidget'
5414 stevensc 12
import CompanyFollowersHelper from '../../../shared/helpers/company-followers-helper/CompanyFollowers'
5416 stevensc 13
import CompanyInfo from '../components/CompanyInfo'
1 www 14
 
15
const TABS = {
5406 stevensc 16
  FEEDS: 'FEEDS',
17
  INFO: 'INFO'
18
}
1 www 19
 
5414 stevensc 20
const View = ({
21
  backendVars,
22
  addNotification,
23
  setTimelineUrl,
24
  setIntlLabels,
25
  labels
26
}) => {
1 www 27
  const {
28
    companyId,
29
    cover,
30
    image,
31
    totalFollowers,
32
    facebook,
33
    twitter,
34
    instagram,
35
    companyName,
36
    overview,
37
    locations,
38
    industry,
39
    companySize,
40
    foundationYear,
41
    website,
5406 stevensc 42
    timeline
5414 stevensc 43
  } = backendVars
5406 stevensc 44
  const [initialLoading, setInitialLoading] = useState(true)
45
  const [isFollower, setIsFollower] = useState(false)
46
  const [currentTab, setCurrentTab] = useState(TABS.INFO)
47
  const shouldSetInitialTab = useRef(true)
1 www 48
 
1110 stevensc 49
  useEffect(() => {
5406 stevensc 50
    setTimelineUrl(timeline)
51
    shouldSetInitialTab.current = false
52
    setInitialLoading(false)
5414 stevensc 53
    setIntlLabels(labels)
5406 stevensc 54
  }, [])
1108 stevensc 55
 
1107 stevensc 56
  useEffect(() => {
57
    isFollower
1108 stevensc 58
      ? setCurrentTab(TABS.FEEDS)
59
      : setCurrentTab(TABS.INFO)
5406 stevensc 60
  }, [isFollower])
1107 stevensc 61
 
5416 stevensc 62
  useEffect(() => {
63
    if (shouldSetInitialTab.current && isFollower) setCurrentTab(TABS.FEEDS)
64
  }, [isFollower])
1 www 65
 
5411 stevensc 66
  const changeCurrentTab = (tab) => setCurrentTab(tab)
67
 
5416 stevensc 68
  const markIsFollower = (val) => setIsFollower(val)
69
 
1 www 70
  return (
3930 stevensc 71
    <>
1 www 72
      <section className="cover-sec">
5416 stevensc 73
        <img src={`/storage/type/company-cover/code/${companyId}/${cover ? `filename/${cover}` : ''}`} alt="cover-image" />
1 www 74
      </section>
5411 stevensc 75
      <main className="main-section-data container px-0 mt-3">
76
        <div className="main-left-sidebar">
5416 stevensc 77
          <CompanyInfo
78
            companyId={companyId}
79
            companyName={companyName}
80
            image={image}
81
            facebook={facebook}
82
            instagram={instagram}
83
            totalFollowers={totalFollowers}
84
            twitter={twitter}
85
            markFollower={markIsFollower}
86
          />
5411 stevensc 87
          <div className="d-none d-md-block">
88
            <CompanyFollowersHelper companyId={companyId} />
89
          </div>
90
        </div>
91
        <div className="main-ws-sec">
92
          <div className="user-tab-sec rewivew">
93
            {!initialLoading &&
94
              <div className="row">
95
                {isFollower &&
96
                  <div className="col text-left pl-0">
3930 stevensc 97
                    <button
98
                      className="btn btn-link p-0 text-decoration-none"
5411 stevensc 99
                      onClick={() => changeCurrentTab(TABS.FEEDS)}
3930 stevensc 100
                      style={{ padding: '0 !important' }}
101
                    >
5411 stevensc 102
                      <span className="p-0 default-link font-weight-bold text-dark">Ver Publicaciones</span>
3930 stevensc 103
                    </button>
2442 stevensc 104
                  </div>
5411 stevensc 105
                }
106
                <div className="col text-right pr-0">
107
                  <button
108
                    className="btn btn-link p-0 text-decoration-none"
109
                    onClick={() => changeCurrentTab(TABS.INFO)}
110
                    style={{ padding: '0 !important' }}
111
                  >
112
                    <span className="p-0 default-link font-weight-bold text-dark">Ver Información</span>
113
                  </button>
3929 stevensc 114
                </div>
3930 stevensc 115
              </div>
116
            }
117
          </div>
5411 stevensc 118
          {
119
            currentTab === TABS.FEEDS &&
120
            <div
121
              className="product-feed-tab animated fadeIn"
122
              id="feed-dd feed"
123
              style={{ display: 'block' }}
124
            >
125
              <div className="posts-section">
126
                <FeedSection
127
                  routeTimeline={timeline}
128
                  image={`/storage/type/company/code/${companyId}/${image ? `filename/${image}` : ''}`}
129
                />
3930 stevensc 130
              </div>
1 www 131
            </div>
5411 stevensc 132
          }
133
          {
134
            currentTab === TABS.INFO &&
135
            < div
136
              className="product-feed-tab animated fadeIn"
137
              id="feed-dd info"
138
              style={{ display: 'block' }}
139
            >
140
              {
141
                overview &&
142
                <div className="user-profile-extended-ov">
143
                  <h3>Visión general</h3>
144
                  <span>{parse(overview)}</span>
145
                </div>
146
              }
147
              {
148
                locations &&
149
                <div className="user-profile-extended-ov st2">
150
                  <h3>Ubicación</h3>
151
                  <span>
152
                    {locations.map(
153
                      ({ formatted_address, is_main }, index) => (
154
                        <React.Fragment key={index}>
155
                          {index >= 0 ? <hr /> : ''}
156
                          <p>
157
                            {`${formatted_address} ${is_main === 'y' ? '(Principal)' : ''
158
                              }`}
159
                          </p>
160
                        </React.Fragment>
161
                      )
162
                    )}
163
                  </span>
164
                </div>
165
              }
166
              {
167
                industry &&
168
                <div className="user-profile-ov">
169
                  <h3>Industria</h3>
170
                  <span>{industry}</span>
171
                </div>
172
              }
173
              {
174
                companySize &&
175
                <div className="user-profile-ov">
176
                  <h3>Tamaño de la empresa</h3>
177
                  <span>{companySize}</span>
178
                </div>
179
              }
180
              {
181
                foundationYear &&
182
                <div className="user-profile-ov">
183
                  <h3>Año de fundación</h3>
184
                  <span>{foundationYear}</span>
185
                </div>
186
              }
187
              {
188
                website &&
189
                <div className="user-profile-ov">
190
                  <h3>Página web</h3>
191
                  <span>{website}</span>
192
                </div>
193
              }
194
            </div>
195
          }
196
          {
197
            initialLoading &&
198
            <div
199
              style={{
200
                display: 'flex',
201
                justifyContent: 'center',
202
                alignItems: 'center'
203
              }}
204
            >
205
              <Spinner />
206
            </div>
207
          }
1 www 208
        </div>
5411 stevensc 209
        <div className="right-sidebar">
210
          <SuggestWidget title='Empresas similares:' url={`/helpers/company-suggestion/${companyId}`} />
211
        </div>
212
      </main>
3930 stevensc 213
    </>
5406 stevensc 214
  )
215
}
1 www 216
 
217
const mapDispatchToProps = {
218
  addNotification: (notification) => addNotification(notification),
5414 stevensc 219
  setTimelineUrl: (url) => setTimelineUrl(url),
220
  setIntlLabels: (labels) => setIntlLabels(labels)
5406 stevensc 221
}
1 www 222
 
5406 stevensc 223
export default connect(null, mapDispatchToProps)(View)