Rev 6876 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState, useEffect } from 'react'import { useParams } from 'react-router-dom'import { useSelector } from 'react-redux'import { getBackendVars } from '../../services/backendVars'import ProfileCard from '../../components/linkedin/profile/ProfileCard'import ProfileWidget from '../../components/linkedin/profile/ProfileWidget'import ExperienceCard from '../../components/linkedin/profile/cards/ExperienceCard'import EducationCard from '../../components/linkedin/profile/cards/EducationCard'import EmptySection from '../../components/UI/EmptySection'import ItemsList from '../../components/linkedin/profile/cards/ItemsList'import '../../styles/profile/profile.scss'import ExperienceModal from '../../components/experiences/ExperienceModal'import EducationModal from '../../components/educations/EducationModal'import SkillsModal from '../../components/skills/SkillsModal'import LanguagesModal from '../../components/languages/LanguagesModal'import AptitudesModal from '../../components/aptitudes/AptitudesModal'import HobbiesModal from '../../components/hobbies-and-interests/HobbiesModal'import LocationModal from '../../components/location/LocationModal'const View = () => {const [profile, setProfile] = useState({})const [experiences, setExperiences] = useState([])const [educations, setEducations] = useState([])const [languages, setLanguages] = useState([])const [skills, setSkills] = useState([])const [aptitudes, setAptitudes] = useState([])const [hobbiesAndInterests, setHobbiesAndInterests] = useState([])const [address, setAddress] = useState('')const [modalShow, setModalShow] = useState(null)const [settedDescription, setSettedDescription] = useState('')const [postUrl, setPostUrl] = useState('')const [isEdit, setIsEdit] = useState(false)const labels = useSelector(({ intl }) => intl.labels)const { uuid } = useParams()const handleEdit = (modalName, url, description) => {setModalShow(modalName)setPostUrl(url)setSettedDescription(description)}const handleAdd = (modalName, url) => {setModalShow(modalName)setPostUrl(url)}const closeModal = () => {setSettedDescription('')setPostUrl('')setIsEdit(false)setModalShow(null)}const renderModal = {Experiencia: (<ExperienceModalshow={modalShow === 'Experiencia'}url={postUrl}isEdit={isEdit}onClose={closeModal}onComplete={(newExperiences) => setExperiences(newExperiences)}/>),Educación: (<EducationModalshow={modalShow === 'Educación'}postUrl={postUrl}closeModal={closeModal}setEducations={(newEducations) => setEducations(newEducations)}settedDescription={settedDescription}/>),Habilidades: (<SkillsModalshow={modalShow === 'Habilidades'}userSkills={skills}userId={profile?.user_profile_uuid}onClose={closeModal}onComplete={(newSkills) => setSkills(newSkills)}/>),Idiomas: (<LanguagesModalshow={modalShow === 'Idiomas'}userId={profile?.user_profile_uuid}userLanguages={languages}onClose={closeModal}onComplete={(newLanguages) => setLanguages(newLanguages)}/>),Aptitudes: (<AptitudesModalshow={modalShow === 'Aptitudes'}userId={profile?.user_profile_uuid}userAptitudes={aptitudes}onClose={closeModal}onComplete={(newAptitudes) => setAptitudes(newAptitudes)}/>),'Hobbies e Intereses': (<HobbiesModalonClose={closeModal}show={modalShow === 'Hobbies e Intereses'}userId={profile?.user_profile_uuid}userHobbies={hobbiesAndInterests}onComplete={(newHobbiesAndInterests) =>setHobbiesAndInterests(newHobbiesAndInterests)}/>),Ubicación: (<LocationModalshow={modalShow === 'Ubicación'}onClose={() => setModalShow(null)}onComplete={(newAddress) => setAddress(newAddress)}id={profile?.user_profile_uuid}/>),}useEffect(() => {getBackendVars(`/profile/my-profiles/edit/${uuid}`).then((vars) => {const {user_experiences,user_educations,user_hobbies_and_interests,user_skills,user_aptitudes,user_languages,formatted_address,...profileInfo} = varsconst attrAdapter = (attr) => {return Object.entries(attr).map(([key, value]) => {return { name: value, value: key }})}setExperiences(user_experiences)setEducations(user_educations)setAddress(formatted_address)setProfile(profileInfo)setHobbiesAndInterests(attrAdapter(user_hobbies_and_interests))setSkills(attrAdapter(user_skills))setAptitudes(attrAdapter(user_aptitudes))setLanguages(attrAdapter(user_languages))}).catch((err) => {console.log(`Error: ${err}`)throw new Error(err)})}, [])return (<><main className="w-100"><div className="container"><div className="main d-flex flex-column" style={{ gap: '.5rem' }}><ProfileCard{...profile}sizes={{image: profile.image_size_profile,cover: profile.image_size_cover,}}uuid={profile.user_uuid}image={`/storage/type/user-profile/code/${profile.user_uuid}/filename/${profile.image}`}cover={`/storage/type/user-profile/code/${profile.user_uuid}/filename/${profile.cover}`}/><ProfileWidgettitle={labels.experience}onEdit={() => setIsEdit(!isEdit)}onAdd={handleAdd}addUrl={`/profile/my-profiles/experience/${uuid}/operation/add`}>{experiences.length ? (experiences.map((experience, index) => (<ExperienceCardkey={index}isEdit={isEdit}experience={experience}onEdit={handleEdit}onDelete={(newExperiences) =>setExperiences(newExperiences)}/>))) : (<EmptySection align="left" message={labels.empty} />)}</ProfileWidget><ProfileWidgettitle={labels.education}onEdit={() => setIsEdit(!isEdit)}onAdd={handleAdd}addUrl={`/profile/my-profiles/education/${profile?.user_profile_uuid}/operation/add`}>{educations.length ? (educations.map((education, index) => (<EducationCard key={index} education={education} />))) : (<EmptySection align="left" message={labels.empty} />)}</ProfileWidget><ProfileWidgettitle={labels.location}onEdit={() => setModalShow('Ubicación')}justEdit><div className="card__items"><p>{address}</p></div></ProfileWidget><ProfileWidgettitle={labels.languages}onEdit={() => setModalShow('Idiomas')}justEdit>{languages.length ? (<ItemsList value={languages} />) : (<EmptySection align="left" message={labels.empty} />)}</ProfileWidget><ProfileWidgettitle={labels.skills}onEdit={() => setModalShow('Habilidades')}justEdit>{skills.length ? (<ItemsList value={skills} />) : (<EmptySection align="left" message={labels.empty} />)}</ProfileWidget><ProfileWidgettitle={labels.aptitudes}onEdit={() => setModalShow('Aptitudes')}justEdit>{aptitudes.length ? (<ItemsList value={aptitudes} />) : (<EmptySection align="left" message={labels.empty} />)}</ProfileWidget><ProfileWidgettitle={labels.hobbies_and_interests}onEdit={() => setModalShow('Hobbies e Intereses')}justEdit>{hobbiesAndInterests.length ? (<ItemsList value={hobbiesAndInterests} />) : (<EmptySection align="left" message={labels.empty} />)}</ProfileWidget></div></div></main>{renderModal[modalShow]}</>)}export default View