Rev 3287 | Rev 3444 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState, useEffect } from "react";import { Link, useLocation } from "react-router-dom";import { useDispatch, useSelector } from "react-redux";import { Button, Typography } from "@mui/material";import { axios, parse } from "@utils";import { addNotification } from "@store/notification/notification.actions";import colors from "@styles/colors";import Widget from "@components/UI/Widget";import Cover from "@components/UI/cover/Cover";import ConfirmModal from "@components/modals/ConfirmModal";import ProfileModal from "./ProfileModal";import Avatar from "@components/common/avatar";import Row from "@components/common/Row";const ProfileCard = ({cover,facebook,following,formatted_address: formattedAddress,full_name: fullName,image,instagram,link_cancel: linkCancel,link_inmail: linkInmail,link_request: linkRequest,overview,request_connection: requestConnection,show_contact: showContact,sizes,total_connections: totalConnections,twitter,user_experiences: userExperiences = [],view_following: viewFollowing,view_total_connections: viewTotalConnections,edit,}) => {const [isAdded, setIsAdded] = useState(false);const [connectionUrl, setConnectionUrl] = useState("");const [modalToShow, setModalToShow] = useState(null);const [settedOverview, setSettedOverview] = useState("");const [isModalShow, setIsModalShow] = useState(false);const labels = useSelector(({ intl }) => intl.labels);const { pathname } = useLocation();const dispatch = useDispatch();const displayModal = () => {setIsModalShow(!isModalShow);};const getProfileData = async () => {try {const response = await axios.get(pathname);const { link_request, link_cancel } = response.data;if (link_request) {setConnectionUrl(link_request);return;}setConnectionUrl(link_cancel);} catch (err) {dispatch(addNotification({ style: "danger", msg: err.message }));}};const connect = async () => {try {const response = await axios.post(connectionUrl);const { data, success } = response.data;if (!success) {return dispatch(addNotification({ style: "danger", msg: data }));}if (success && isModalShow) {displayModal();}await getProfileData();dispatch(addNotification({ style: "success", msg: data }));setIsAdded(!isAdded);} catch (error) {dispatch(addNotification({ style: "danger", msg: `Error: ${error}` }));}};const closeModal = () => {setModalToShow(null);};useEffect(() => {setIsAdded(!requestConnection);setSettedOverview(overview);}, [requestConnection, overview]);useEffect(() => {linkRequest ? setConnectionUrl(linkRequest) : setConnectionUrl(linkCancel);}, [linkRequest, linkCancel]);return (<Widget><Cover cover={cover} edit={edit} /><Widget.Body><Avatarsrc={image}alt={fullName}badgeStyles={{mt: { xs: "-50px", lg: "-75px" },}}styles={{width: { xs: "100px", lg: "150px" },height: { xs: "100px", lg: "150px" },border: `1px solid ${colors.border.primary}`,}}edit={edit}/><Typography variant="h2">{fullName}</Typography><Typography>{parse(settedOverview)}</Typography><Row><Typography>{formattedAddress}</Typography><Typography variant="overline"> - </Typography><Typography variant="overline" onClick={() => setModalToShow("info")}>{labels.personal_info}</Typography></Row><Row>{viewTotalConnections ? (<Link to="/connection/my-connections"><Typography variant="overline">{`${totalConnections} conexiones`}</Typography></Link>) : null}{viewFollowing ? (<Link onClick={(e) => e.preventDefault()}><Typography variant="overline">{`${following} siguiendo`}</Typography></Link>) : null}</Row><Row>{connectionUrl && isAdded && (<Button color="primary" onClick={() => displayModal()}>{labels.cancel}</Button>)}{connectionUrl && !isAdded && (<Button color="primary" onClick={connect}>{labels.connect}</Button>)}{showContact && (<Button to={linkInmail} LinkComponent={Link} color="secondary">{labels.message}</Button>)}</Row></Widget.Body>{/* {isEdit && (<><OverviewModalisOpen={modalToShow === 'overview'}overview={settedOverview}id={profileId}closeModal={() => closeModal()}onComplete={(newOverview) => setSettedOverview(newOverview)}/></>)} */}<ProfileModalshow={modalToShow === "info"}closeModal={() => closeModal()}fullName={fullName}facebook={facebook}twitter={twitter}instagram={instagram}following={following}formatted_address={formattedAddress}overview={overview}total_connections={totalConnections}// follower={follower}/><ConfirmModalshow={isModalShow}onClose={() => setIsModalShow(false)}onAccept={() => connect()}/></Widget>);};export default ProfileCard;