Proyectos de Subversion LeadersLinked - Backend

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
7291 stevensc 1
import React, { useState } from 'react'
7480 stevensc 2
import { deleteFeed } from '../../redux/feed/feed.actions'
7427 stevensc 3
import DeleteModal from '../../shared/DeleteModal'
7386 stevensc 4
import CommentSection from './CommentSection'
11225 stevensc 5
import parse from 'html-react-parser'
7205 stevensc 6
 
11225 stevensc 7
const FeedTemplate = ({ feed }) => {
7205 stevensc 8
 
14867 stevensc 9
	const [displayOption, setDisplayOption] = useState(false)
11225 stevensc 10
	const [showDeleteModal, setShowDeleteModal] = useState(false)
15211 stevensc 11
	const [commentState, setCommentState] = useState(feed.owner_comments)
11225 stevensc 12
	const [isReadMoreActive, setIsReadMoreActive] = useState(false)
15213 stevensc 13
 
11225 stevensc 14
	const closeModal = () => setShowDeleteModal(false)
7291 stevensc 15
 
15213 stevensc 16
	const readMoreHandler = () => setIsReadMoreActive(!isReadMoreActive)
7291 stevensc 17
 
11225 stevensc 18
	const htmlParsedText = (fullStringText) => {
19
		const fullText = parse(fullStringText)
20
		if (fullStringText.length > 500) {
21
			const shortenedString = fullStringText.substr(0, 500)
22
			const shortenedText = parse(`${shortenedString}... `)
23
			return (
24
				<React.Fragment>
25
					{isReadMoreActive ? fullText : shortenedText}
26
					<button className='btn py-0 px-1' onClick={readMoreHandler}>
27
						{isReadMoreActive ? ' Leer menos' : ' Leer más'}
28
					</button>
29
				</React.Fragment>
30
			)
31
		} else {
32
			return fullText
33
		}
34
	}
35
 
36
	return (
37
		<>
15178 stevensc 38
			<div className={'postContainer'}>
14870 stevensc 39
				< div className="post_topbar d-flex justify-content-between w-100" >
14867 stevensc 40
					<div className="usy-dt">
41
						<a href={feed.owner_url}>
42
							<img src={feed.owner_image} alt="" style={{
43
								width: '50px',
44
								height: 'auto',
45
							}}
46
							/>
47
						</a>
48
						<div className="usy-name">
49
							<a href={feed.owner_url}>
50
								<h3>{feed.owner_name}</h3>
51
							</a>
52
							<span>
53
								{feed.Fowner_time_elapse}
54
							</span>
55
						</div>
56
					</div>
57
					{
58
						feed.feed_delete_url
59
						&&
60
						<div className="cursor-pointer d-flex align-items-center">
61
							<i
62
								className='fa fa-ellipsis-v'
63
								onClick={() => setDisplayOption(!displayOption)}
64
								style={{ fontSize: '1.5rem' }}
65
							/>
14872 stevensc 66
							<ul className={`my-dropdown-menu dropdown-menu-end ${displayOption ? 'show' : ''}`}>
14870 stevensc 67
								<li className="dropdown-item">
14869 stevensc 68
									<button
69
										className='btn'
70
										onClick={() => setShowDeleteModal(true)}
71
										type="button"
72
									>
73
										<i className="fa fa-trash pe-2" />
74
										Borrar
75
									</button>
76
								</li>
77
							</ul>
14867 stevensc 78
						</div>
79
					}
80
				</div >
81
				<div>
82
					<div className="job_descp">
15216 stevensc 83
						{feed.owner_description &&
14867 stevensc 84
							<div className="show-read-more">
85
								{htmlParsedText(feed.owner_description)}
86
							</div>
87
						}
88
						{feed.owner_file_image &&
89
							<img src={feed.owner_file_image} className="Entradas" />
90
						}
91
						{feed.owner_file_video &&
92
							<video
93
								src={feed.owner_file_video}
94
								controls
95
								poster={feed.owner_file_image_preview}
96
								preload="none"
97
							/>
98
						}
99
						{feed.owner_file_document &&
100
							<a href={feed.owner_file_document} target="_blank" rel="noreferrer">
101
								Descargar
102
							</a>
103
						}
104
						{feed.shared_name &&
105
							<div className="shared-post-bar">
106
								<div className="post-bar">
107
									<div className="post_topbar">
108
										<div className="usy-dt">
109
											<img
110
												src={feed.shared_image}
111
												alt=""
112
												style={{ width: '50px', height: 'auto', }}
113
											/>
114
											<div className="usy-name">
115
												<h3>{feed.shared_name}</h3>
116
												<span>
117
													{feed.shared_time_elapse}
118
												</span>
119
											</div>
120
										</div>
121
									</div>
122
									<div className="job_descp">
123
										<div className="show-read-more">
124
											{htmlParsedText(feed.shared_description)}
125
										</div>
126
										{feed.shared_file_image &&
127
											<img src={feed.shared_file_image} className="Entradas" />
128
										}
129
										{feed.shared_file_video &&
130
											<video
131
												src={feed.shared_file_video}
132
												controls
133
												poster={feed.shared_file_image_preview}
134
												preload="none"
135
											/>
136
										}
137
										{feed.shared_file_document &&
138
											<a href={feed.shared_file_document} target="_blank" rel="noreferrer">
139
												Descargar
140
											</a>
141
										}
142
									</div>
11225 stevensc 143
								</div>
144
							</div>
14867 stevensc 145
						}
146
					</div>
147
				</div>
148
				<div className="job-status-bar">
15216 stevensc 149
					<ul
150
						className="d-flex align-items-center justify-content-start"
151
						style={{ gap: '1rem', margin: '10px 0', padding: '0' }}>
14867 stevensc 152
						<li>
15218 stevensc 153
							<i className="btn-indicator fa fa-comments mr-1" />
154
							{commentState}
14867 stevensc 155
						</li>
156
						<li>
15218 stevensc 157
							<i className="btn-indicator fa fa-share flip-horizontal ps-1" />
158
							{feed.owner_shared}
11225 stevensc 159
						</li>
160
					</ul>
161
				</div>
14867 stevensc 162
				<CommentSection
163
					comments_link_add={feed.comment_add_url}
164
					comments={feed.comments}
165
					owner_image={feed.owner_image}
166
					owner_url={feed.owner_url}
15211 stevensc 167
					setComment={setCommentState}
14867 stevensc 168
				/>
169
 
14870 stevensc 170
			</div >
11225 stevensc 171
			<DeleteModal
172
				url={feed.feed_delete_url}
173
				isOpen={showDeleteModal}
174
				closeModal={closeModal}
175
				title="Esta seguro de borrar esta publicación?"
176
				action={() => deleteFeed(feed.feed_unique)}
177
				message="La publicación ha sido borrada"
178
			/>
179
		</>
180
	)
181
}
182
export default React.memo(FeedTemplate)