Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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