recognize video links (#1357)

This commit is contained in:
Keyan 2024-09-03 18:35:14 -05:00 committed by GitHub
parent adcf048f4e
commit 6f68a700ce
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 5 deletions

View File

@ -22,6 +22,7 @@ export function decodeOriginalUrl (imgproxyUrl) {
function ImageOriginal ({ src, topLevel, rel, tab, children, onClick, ...props }) {
const me = useMe()
const [showImage, setShowImage] = useState(false)
const [showVideo, setShowVideo] = useState(false)
useEffect(() => {
if (me?.privates?.imgproxyOnly && tab !== 'preview') return
@ -29,10 +30,15 @@ function ImageOriginal ({ src, topLevel, rel, tab, children, onClick, ...props }
const img = new window.Image()
img.onload = () => setShowImage(true)
img.src = src
const video = document.createElement('video')
video.onloadeddata = () => setShowVideo(true)
video.src = src
return () => {
img.onload = null
img.src = ''
video.onloadeddata = null
video.src = ''
}
}, [src, showImage])
@ -45,6 +51,8 @@ function ImageOriginal ({ src, topLevel, rel, tab, children, onClick, ...props }
onError={() => setShowImage(false)}
/>
)
} else if (showVideo) {
return <video src={src} controls />
} else {
// user is not okay with loading original url automatically or there was an error loading the image

View File

@ -128,21 +128,24 @@
margin-bottom: .5rem;
}
.text img {
.text img, .text video {
display: block;
margin-top: .5rem;
margin-bottom: .5rem;
max-width: 100%;
cursor: zoom-in;
height: auto;
max-height: 25vh;
object-fit: contain;
object-position: left top;
min-width: 50%;
aspect-ratio: var(--aspect-ratio);
}
.text img.topLevel {
.text img {
cursor: zoom-in;
object-fit: contain;
object-position: left top;
}
.text img.topLevel, .text video.topLevel {
margin-top: .75rem;
margin-bottom: .75rem;
max-height: 35vh;