Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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