Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 11225 | Autoría | Ultima modificación | Ver Log |

import React, { useState } from 'react'
import { deleteFeed } from '../../redux/feed/feed.actions'
import DeleteModal from '../../shared/DeleteModal'
import CommentSection from './CommentSection'
import parse from 'html-react-parser'

const FeedTemplate = ({ feed }) => {

        const [showDropdown, setShowDropdown] = useState(false)
        const [showDeleteModal, setShowDeleteModal] = useState(false)
        const [isReadMoreActive, setIsReadMoreActive] = useState(false)
        const closeModal = () => setShowDeleteModal(false)

        const readMoreHandler = () => {
                setIsReadMoreActive(!isReadMoreActive)
        }

        const htmlParsedText = (fullStringText) => {
                const fullText = parse(fullStringText)
                if (fullStringText.length > 500) {
                        const shortenedString = fullStringText.substr(0, 500)
                        const shortenedText = parse(`${shortenedString}... `)
                        return (
                                <React.Fragment>
                                        {isReadMoreActive ? fullText : shortenedText}
                                        <button className='btn py-0 px-1' onClick={readMoreHandler}>
                                                {isReadMoreActive ? ' Leer menos' : ' Leer más'}
                                        </button>
                                </React.Fragment>
                        )
                } else {
                        return fullText
                }
        }

        return (
                <>
                        <div className="card">
                                <div className="card-header border-0 pb-0">
                                        <div className="d-flex align-items-center justify-content-between">
                                                <div className="d-flex align-items-center">
                                                        <div className="avatar me-2">
                                                                <a href={feed.owner_url}>
                                                                        <img
                                                                                className="avatar-img rounded-circle"
                                                                                src={feed.owner_image}
                                                                                alt={`${feed.owner_name} profile image`}
                                                                        />
                                                                </a>
                                                        </div>
                                                        <div>
                                                                <div className="nav nav-divider">
                                                                        <h6 className="nav-item card-title mb-0">
                                                                                <a href="#!">{feed.owner_name}</a>
                                                                        </h6>
                                                                        <span className="nav-item small">{feed.owner_time_elapse}</span>
                                                                </div>
                                                        </div>
                                                </div>
                                                <div className="dropdown" onClick={() => setShowDropdown(!showDropdown)}>
                                                        <button
                                                                className="text-secondary btn btn-secondary-soft-hover py-1 px-2"
                                                        >
                                                                <i className="fa fa-ellipsis-h icon" />
                                                        </button>
                                                        <ul
                                                                className={`dropdown-menu dropdown-menu-end ${showDropdown ? 'show' : ''}`}
                                                                aria-labelledby="cardFeedAction"
                                                                data-popper-placement="bottom-end"
                                                                style={{
                                                                        position: 'absolute',
                                                                        inset: '0px 0px auto auto',
                                                                        margin: '0px',
                                                                        transform: 'translate(0px, 35px)'
                                                                }}
                                                        >
                                                                <li
                                                                        className="dropdown-item"
                                                                >
                                                                        <button
                                                                                className='btn'
                                                                                onClick={() => setShowDeleteModal(true)}
                                                                                type="button"
                                                                        >
                                                                                <i className="fa fa-trash pe-2" />
                                                                                Borrar
                                                                        </button>
                                                                </li>
                                                        </ul>
                                                </div>
                                        </div>
                                </div>
                                <div className="card-body">
                                        <p>{htmlParsedText(feed.owner_description)}</p>
                                        {
                                                feed.owner_file_image
                                                &&
                                                <img className="card-img" src={feed.owner_file_image} alt="Post" />
                                        }
                                        {
                                                feed.owner_file_document
                                                &&
                                                <a href={feed.owner_file_document} target="_blank" rel="noreferrer">
                                                        Descargar
                                                </a>
                                        }
                                        {
                                                feed.owner_file_video
                                                &&
                                                <video src={feed.owner_file_video} width="400" height="300" controls autoPlay muted />
                                        }
                                        <ul className="nav nav-stack py-3 small">
                                                <li className="nav-item">
                                                        <button className="btn nav-link">
                                                                <i className="fa fa-comments pe-1" />
                                                                Comentarios ({feed.comments.length})
                                                        </button>
                                                </li>
                                                <li className="nav-item dropdown">
                                                        <a className="btn nav-link mb-0" >
                                                                <i className="fa fa-share flip-horizontal ps-1" />
                                                                Compartido ({feed.owner_shared})
                                                        </a>
                                                </li>
                                        </ul>
                                        <CommentSection
                                                comments_link_add={feed.comment_add_url}
                                                comments={feed.comments}
                                                owner_image={feed.owner_image}
                                                owner_url={feed.owner_url}
                                        />
                                </div>
                        </div>
                        <DeleteModal
                                url={feed.feed_delete_url}
                                isOpen={showDeleteModal}
                                closeModal={closeModal}
                                title="Esta seguro de borrar esta publicación?"
                                action={() => deleteFeed(feed.feed_unique)}
                                message="La publicación ha sido borrada"
                        />
                </>
        )
}
export default React.memo(FeedTemplate)