feat(home): recent threads box only shows posts with media

This commit is contained in:
plebeius.eth
2023-10-03 10:00:20 +02:00
parent 685cbb3c17
commit de2ac49c1f
+19 -10
View File
@@ -13,24 +13,27 @@ import { Tooltip } from 'react-tooltip';
const { version } = packageJson; const { version } = packageJson;
const commitRef = process?.env?.REACT_APP_COMMIT_REF ? ` ${process.env.REACT_APP_COMMIT_REF.slice(0, 7)}` : ''; const commitRef = process?.env?.REACT_APP_COMMIT_REF ? ` ${process.env.REACT_APP_COMMIT_REF.slice(0, 7)}` : '';
const SubplebbitTitle = ({ address }) => {
const subplebbitAddress = address;
const subplebbit = useSubplebbit({ subplebbitAddress });
const title = subplebbit.title ?? null;
return <>{title ? <span>{title}</span> : <span style={{ userSelect: 'none' }}>&nbsp;</span>}</>;
};
const RecentThread = ({ commentCid }) => { const RecentThread = ({ commentCid }) => {
const comment = useComment({ commentCid }); const comment = useComment({ commentCid });
const subplebbit = useSubplebbit({ subplebbitAddress: comment?.subplebbitAddress }); const subplebbit = useSubplebbit({ subplebbitAddress: comment?.subplebbitAddress });
const { setSelectedAddress, setSelectedTitle } = useGeneralStore((state) => state); const { setSelectedAddress, setSelectedTitle } = useGeneralStore((state) => state);
const commentMediaInfo = getCommentMediaInfo(comment); const commentMediaInfo = getCommentMediaInfo(comment);
const isMediaShowed =
comment.link &&
commentMediaInfo &&
(commentMediaInfo.type === 'image' ||
commentMediaInfo.type === 'video' ||
(commentMediaInfo.type === 'webpage' && commentMediaInfo.thumbnail) ||
(commentMediaInfo.type === 'iframe' && commentMediaInfo.thumbnail))
? true
: false;
return ( return (
<>
{isMediaShowed ? (
<div className='board'> <div className='board'>
<div className='board-title' key='board-title'> <div className='board-title' key='board-title'>
<SubplebbitTitle address={comment?.subplebbitAddress} /> <span>{subplebbit.title || subplebbit.address}</span>
</div> </div>
<div className='board-avatar-container' key='board-avatar-container'> <div className='board-avatar-container' key='board-avatar-container'>
<Link <Link
@@ -46,6 +49,10 @@ const RecentThread = ({ commentCid }) => {
<img className='board-avatar' src={commentMediaInfo?.thumbnail} alt='post' /> <img className='board-avatar' src={commentMediaInfo?.thumbnail} alt='post' />
) : commentMediaInfo?.type === 'image' ? ( ) : commentMediaInfo?.type === 'image' ? (
<img className='board-avatar' src={commentMediaInfo?.url} alt='post' /> <img className='board-avatar' src={commentMediaInfo?.url} alt='post' />
) : commentMediaInfo?.type === 'video' ? (
<video className='board-avatar' src={commentMediaInfo?.url} alt='post' />
) : commentMediaInfo?.type === 'iframe' ? (
<img className='board-avatar' src={commentMediaInfo?.thumbnail} alt='post' />
) : ( ) : (
<BoardAvatar address={comment.subplebbitAddress} /> <BoardAvatar address={comment.subplebbitAddress} />
)} )}
@@ -57,6 +64,8 @@ const RecentThread = ({ commentCid }) => {
{comment?.content ? `: ${comment.content}` : null} {comment?.content ? `: ${comment.content}` : null}
</div> </div>
</div> </div>
) : null}
</>
); );
}; };
@@ -316,7 +325,7 @@ const Home = () => {
<h2>Recent Threads</h2> <h2>Recent Threads</h2>
</div> </div>
<BoardsContent> <BoardsContent>
{sfwListCids.slice(0, 8).map((cid) => ( {sfwListCids.map((cid) => (
<RecentThread commentCid={cid} /> <RecentThread commentCid={cid} />
))} ))}
</BoardsContent> </BoardsContent>