diff --git a/src/components/views/All.jsx b/src/components/views/All.jsx index 868821f6..870a0f85 100755 --- a/src/components/views/All.jsx +++ b/src/components/views/All.jsx @@ -108,8 +108,10 @@ const All = () => { const [moderatorPermissions, setModeratorPermissions] = useState({}); const [executeAnonMode, setExecuteAnonMode] = useState(false); const [cidTracker, setCidTracker] = useState({}); - const [isThumbnailClicked, setIsThumbnailClicked] = useState({}); - const [isMobileThumbnailClicked, setIsMobileThumbnailClicked] = useState({}); + const [isThreadThumbnailClicked, setIsThreadThumbnailClicked] = useState({}); + const [isReplyThumbnailClicked, setIsReplyThumbnailClicked] = useState({}); + const [isMobileThreadThumbnailClicked, setIsMobileThreadThumbnailClicked] = useState({}); + const [isMobileReplyThumbnailClicked, setIsMobileReplyThumbnailClicked] = useState({}); const [isCreateBoardOpen, setIsCreateBoardOpen] = useState(false); const setSelectedThreadCid = (cid) => { selectedThreadCidRef.current = cid }; @@ -132,17 +134,34 @@ const All = () => { }, [feed, setFeedCacheState]); - const handleThumbnailClick = (index, isMobile=false) => { - if (isMobile) { - setIsMobileThumbnailClicked(prevState => ({ - ...prevState, - [index]: !prevState[index], - })); - } else { - setIsThumbnailClicked(prevState => ({ - ...prevState, - [index]: !prevState[index], - })); + const handleThumbnailClick = (index, type) => { + switch(type) { + case 'thread': + setIsThreadThumbnailClicked(prevState => ({ + ...prevState, + [index]: !prevState[index], + })); + break; + case 'reply': + setIsReplyThumbnailClicked(prevState => ({ + ...prevState, + [index]: !prevState[index], + })); + break; + case 'mobileThread': + setIsMobileThreadThumbnailClicked(prevState => ({ + ...prevState, + [index]: !prevState[index], + })); + break; + case 'mobileReply': + setIsMobileReplyThumbnailClicked(prevState => ({ + ...prevState, + [index]: !prevState[index], + })); + break; + default: + break; } }; @@ -665,6 +684,21 @@ const All = () => { const commentMediaInfo = getCommentMediaInfo(thread); const fallbackImgUrl = "assets/filedeleted-res.gif"; const isModerator = moderatorPermissions[thread.subplebbitAddress]; + let displayWidth, displayHeight, displayWidthMobile, displayHeightMobile; + if (thread.linkWidth && thread.linkHeight) { + let scale = Math.min(1, 250 / Math.max(thread.linkWidth, thread.linkHeight)); + displayWidth = `${thread.linkWidth * scale}px`; + displayHeight = `${thread.linkHeight * scale}px`; + + scale = Math.min(1, 100 / Math.max(thread.linkWidth, thread.linkHeight)); + displayWidthMobile = `${thread.linkWidth * scale}px`; + displayHeightMobile = `${thread.linkHeight * scale}px`; + } else { + displayWidth = '250px'; + displayHeight = '250px'; + displayWidthMobile = '100px'; + displayHeightMobile = '100px'; + } return (
@@ -682,21 +716,21 @@ const All = () => { commentMediaInfo?.url.slice(0, 30) + "(...)" : commentMediaInfo?.url } ({commentMediaInfo?.type === "iframe" ? "video" : commentMediaInfo?.type}) - {isThumbnailClicked[index] ? ( + {isThreadThumbnailClicked[index] ? ( -[ {handleThumbnailClick(index)}}>Close + onClick={() => {handleThumbnailClick(index, 'thread')}}>Close ] ) : null}
{commentMediaInfo?.type === 'iframe' && (
- - {(isThumbnailClicked[index] || !commentMediaInfo.thumbnail) && commentMediaInfo.embedUrl ? ( + className={`img-container ${isThreadThumbnailClicked[index] ? 'expanded-container' : ''}`}> + + {(isThreadThumbnailClicked[index] || !commentMediaInfo.thumbnail) && commentMediaInfo.embedUrl ? (