Add attachment thumbnails and ACP refinements
This commit is contained in:
@@ -34,6 +34,7 @@ export default function ThreadView() {
|
||||
const [previewHtml, setPreviewHtml] = useState('')
|
||||
const [previewLoading, setPreviewLoading] = useState(false)
|
||||
const [previewUrls, setPreviewUrls] = useState([])
|
||||
const [lightboxImage, setLightboxImage] = useState('')
|
||||
const [replyAttachmentTab, setReplyAttachmentTab] = useState('options')
|
||||
const [replyAttachmentOptions, setReplyAttachmentOptions] = useState({
|
||||
disableBbcode: false,
|
||||
@@ -452,19 +453,40 @@ export default function ThreadView() {
|
||||
return (
|
||||
<div className="bb-attachment-list">
|
||||
{attachments.map((attachment) => (
|
||||
<a
|
||||
key={attachment.id}
|
||||
href={attachment.download_url}
|
||||
className="bb-attachment-item"
|
||||
download
|
||||
>
|
||||
<i className="bi bi-paperclip" aria-hidden="true" />
|
||||
<span className="bb-attachment-name">{attachment.original_name}</span>
|
||||
<span className="bb-attachment-meta">
|
||||
{attachment.mime_type}
|
||||
{attachment.size_bytes ? ` · ${formatBytes(attachment.size_bytes)}` : ''}
|
||||
</span>
|
||||
</a>
|
||||
attachment.is_image ? (
|
||||
<button
|
||||
key={attachment.id}
|
||||
type="button"
|
||||
className="bb-attachment-item border-0 text-start"
|
||||
onClick={() => setLightboxImage(attachment.download_url)}
|
||||
>
|
||||
<img
|
||||
src={attachment.thumbnail_url || attachment.download_url}
|
||||
alt={attachment.original_name}
|
||||
className="img-fluid rounded"
|
||||
style={{ width: 72, height: 72, objectFit: 'cover' }}
|
||||
/>
|
||||
<span className="bb-attachment-name">{attachment.original_name}</span>
|
||||
<span className="bb-attachment-meta">
|
||||
{attachment.mime_type}
|
||||
{attachment.size_bytes ? ` · ${formatBytes(attachment.size_bytes)}` : ''}
|
||||
</span>
|
||||
</button>
|
||||
) : (
|
||||
<a
|
||||
key={attachment.id}
|
||||
href={attachment.download_url}
|
||||
className="bb-attachment-item"
|
||||
download
|
||||
>
|
||||
<i className="bi bi-paperclip" aria-hidden="true" />
|
||||
<span className="bb-attachment-name">{attachment.original_name}</span>
|
||||
<span className="bb-attachment-meta">
|
||||
{attachment.mime_type}
|
||||
{attachment.size_bytes ? ` · ${formatBytes(attachment.size_bytes)}` : ''}
|
||||
</span>
|
||||
</a>
|
||||
)
|
||||
))}
|
||||
</div>
|
||||
)
|
||||
@@ -727,6 +749,12 @@ export default function ThreadView() {
|
||||
</div>
|
||||
<div
|
||||
className="bb-post-body"
|
||||
onClick={(event) => {
|
||||
if (event.target?.tagName === 'IMG') {
|
||||
event.preventDefault()
|
||||
setLightboxImage(event.target.src)
|
||||
}
|
||||
}}
|
||||
dangerouslySetInnerHTML={{ __html: post.body_html || post.body }}
|
||||
/>
|
||||
{renderAttachments(post.attachments)}
|
||||
@@ -852,6 +880,18 @@ export default function ThreadView() {
|
||||
/>
|
||||
</Modal.Body>
|
||||
</Modal>
|
||||
<Modal
|
||||
show={Boolean(lightboxImage)}
|
||||
onHide={() => setLightboxImage('')}
|
||||
centered
|
||||
size="lg"
|
||||
>
|
||||
<Modal.Body className="text-center">
|
||||
{lightboxImage && (
|
||||
<img src={lightboxImage} alt="" className="img-fluid rounded" />
|
||||
)}
|
||||
</Modal.Body>
|
||||
</Modal>
|
||||
</Container>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user