- Deleted ProtectedRoute, ContentWrapper, CustomCarousel, CustomContainer, CustomModal, Footer, Header, and Building components as they were no longer needed. - Removed associated CSS files for the deleted components. - Introduced PasswordInput and PasswordModal components to handle password input and modal display for protected pastes. - Updated PastePanel to utilize new PasswordInput and PasswordModal components for better password management. - Refactored Home component to streamline data fetching and improve readability. - Enhanced error handling in useData hook and improved session management logic.
30 lines
957 B
JavaScript
30 lines
957 B
JavaScript
import PropTypes from "prop-types";
|
|
import { Link } from "react-router-dom";
|
|
|
|
const trimContent = (text, maxLength = 80) => {
|
|
if (!text) return "";
|
|
return text.length <= maxLength ? text : text.slice(0, maxLength) + "...";
|
|
};
|
|
|
|
const PublicPasteItem = ({ paste, onSelect }) => {
|
|
return (
|
|
<div className="public-paste-item p-2 mb-2 rounded custom-border" style={{ cursor: "pointer" }} onClick={() => onSelect(paste.pasteKey)}>
|
|
<h5 className="m-0">{(paste.title ?? "").trim() || "Sin título"}</h5>
|
|
<p className="m-0 text-truncate">{trimContent(paste.content, 100)}</p>
|
|
<small className="custom-text-muted">
|
|
{new Date(paste.createdAt).toLocaleString()}
|
|
</small>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
PublicPasteItem.propTypes = {
|
|
paste: PropTypes.shape({
|
|
title: PropTypes.string.isRequired,
|
|
content: PropTypes.string.isRequired,
|
|
createdAt: PropTypes.string.isRequired,
|
|
}).isRequired,
|
|
};
|
|
|
|
export default PublicPasteItem;
|