Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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