Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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