mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
feat: show file/image labels instead of link when requirePostLinkIsMedia is truthy
This commit is contained in:
@@ -174,6 +174,7 @@
|
|||||||
"user_banned": "User was banned for this post",
|
"user_banned": "User was banned for this post",
|
||||||
"replies": "replies",
|
"replies": "replies",
|
||||||
"links": "links",
|
"links": "links",
|
||||||
|
"images": "images",
|
||||||
"animated_gif": "Animated GIF",
|
"animated_gif": "Animated GIF",
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"failed": "Failed",
|
"failed": "Failed",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { Link, useLocation, useNavigate, useParams } from 'react-router-dom';
|
|||||||
import { useAccountComment, useComment, useSubscribe } from '@plebbit/plebbit-react-hooks';
|
import { useAccountComment, useComment, useSubscribe } from '@plebbit/plebbit-react-hooks';
|
||||||
import { isAllView, isCatalogView, isModView, isModQueueView, isPendingPostView, isPostPageView, isSubscriptionsView } from '../../lib/utils/view-utils';
|
import { isAllView, isCatalogView, isModView, isModQueueView, isPendingPostView, isPostPageView, isSubscriptionsView } from '../../lib/utils/view-utils';
|
||||||
import { usePostPageNumber } from '../../hooks/use-post-page-number';
|
import { usePostPageNumber } from '../../hooks/use-post-page-number';
|
||||||
import { useDirectories } from '../../hooks/use-directories';
|
import { useDirectories, useDirectoryByAddress } from '../../hooks/use-directories';
|
||||||
import { getBoardPath, isDirectoryBoard } from '../../lib/utils/route-utils';
|
import { getBoardPath, isDirectoryBoard } from '../../lib/utils/route-utils';
|
||||||
import { useResolvedSubplebbitAddress } from '../../hooks/use-resolved-subplebbit-address';
|
import { useResolvedSubplebbitAddress } from '../../hooks/use-resolved-subplebbit-address';
|
||||||
import useCatalogFiltersStore from '../../stores/use-catalog-filters-store';
|
import useCatalogFiltersStore from '../../stores/use-catalog-filters-store';
|
||||||
@@ -470,6 +470,8 @@ export const PostPageStats = () => {
|
|||||||
|
|
||||||
const { closed, pinned, replyCount } = post || {};
|
const { closed, pinned, replyCount } = post || {};
|
||||||
const linkCount = useCountLinksInReplies(post);
|
const linkCount = useCountLinksInReplies(post);
|
||||||
|
const directoryEntry = useDirectoryByAddress(subplebbitAddress);
|
||||||
|
const requirePostLinkIsMedia = directoryEntry?.features?.requirePostLinkIsMedia === true;
|
||||||
|
|
||||||
const isThreadView = isPostPageView(location.pathname, params);
|
const isThreadView = isPostPageView(location.pathname, params);
|
||||||
const pageNumber = usePostPageNumber({
|
const pageNumber = usePostPageNumber({
|
||||||
@@ -485,7 +487,8 @@ export const PostPageStats = () => {
|
|||||||
<span>
|
<span>
|
||||||
{pinned && `${capitalize(t('sticky'))} / `}
|
{pinned && `${capitalize(t('sticky'))} / `}
|
||||||
{closed && `${capitalize(t('closed'))} / `}
|
{closed && `${capitalize(t('closed'))} / `}
|
||||||
<Tooltip content={replyCountTooltip}>{displayReplyCount}</Tooltip> / <Tooltip content={capitalize(t('links'))}>{linkCount?.toString()}</Tooltip>
|
<Tooltip content={replyCountTooltip}>{displayReplyCount}</Tooltip> /{' '}
|
||||||
|
<Tooltip content={capitalize(requirePostLinkIsMedia ? t('images') : t('links'))}>{linkCount?.toString()}</Tooltip>
|
||||||
{isThreadView && (
|
{isThreadView && (
|
||||||
<>
|
<>
|
||||||
{' '}
|
{' '}
|
||||||
|
|||||||
@@ -128,6 +128,8 @@ const CatalogPost = memo(
|
|||||||
const isInAllView = isAllView(location.pathname);
|
const isInAllView = isAllView(location.pathname);
|
||||||
const isInSubscriptionsView = isSubscriptionsView(location.pathname, params);
|
const isInSubscriptionsView = isSubscriptionsView(location.pathname, params);
|
||||||
const directories = useDirectories();
|
const directories = useDirectories();
|
||||||
|
const directoryEntry = directories?.find((c) => c.address === subplebbitAddress);
|
||||||
|
const requirePostLinkIsMedia = directoryEntry?.features?.requirePostLinkIsMedia === true;
|
||||||
const boardPath = subplebbitAddress ? getBoardPath(subplebbitAddress, directories) : '';
|
const boardPath = subplebbitAddress ? getBoardPath(subplebbitAddress, directories) : '';
|
||||||
const postMenuProps = useMemo(() => selectPostMenuProps(post), [post]);
|
const postMenuProps = useMemo(() => selectPostMenuProps(post), [post]);
|
||||||
|
|
||||||
@@ -257,12 +259,12 @@ const CatalogPost = memo(
|
|||||||
) : (
|
) : (
|
||||||
threadIcons
|
threadIcons
|
||||||
)}
|
)}
|
||||||
<div className={styles.meta} title='(R)eplies / (L)ink Replies'>
|
<div className={styles.meta} title={requirePostLinkIsMedia ? '(R)eplies / (I)mage Replies' : '(R)eplies / (L)ink Replies'}>
|
||||||
R: <b>{replyCount || '0'}</b>
|
R: <b>{replyCount || '0'}</b>
|
||||||
{linkCount > 0 && (
|
{linkCount > 0 && (
|
||||||
<span>
|
<span>
|
||||||
{' '}
|
{' '}
|
||||||
/ L: <b>{linkCount}</b>
|
/ {requirePostLinkIsMedia ? 'I' : 'L'}: <b>{linkCount}</b>
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
<span className={`${styles.postMenu} ${hoveredCid && styles.postMenuVisible}`}>
|
<span className={`${styles.postMenu} ${hoveredCid && styles.postMenuVisible}`}>
|
||||||
|
|||||||
@@ -556,6 +556,8 @@ const PostMedia = ({
|
|||||||
const [showThumbnail, setShowThumbnail] = useState(true);
|
const [showThumbnail, setShowThumbnail] = useState(true);
|
||||||
|
|
||||||
const mediaDimensions = getMediaDimensions(commentMediaInfo);
|
const mediaDimensions = getMediaDimensions(commentMediaInfo);
|
||||||
|
const directoryEntry = directories?.find((c) => c.address === subplebbitAddress);
|
||||||
|
const requirePostLinkIsMedia = directoryEntry?.features?.requirePostLinkIsMedia === true;
|
||||||
const boardPath = getBoardPath(subplebbitAddress, directories);
|
const boardPath = getBoardPath(subplebbitAddress, directories);
|
||||||
const displayBoardPath =
|
const displayBoardPath =
|
||||||
boardPath !== subplebbitAddress
|
boardPath !== subplebbitAddress
|
||||||
@@ -572,7 +574,7 @@ const PostMedia = ({
|
|||||||
{t('board')}: <Link to={`/${boardPath}`}>{displayBoardPath}</Link>{' '}
|
{t('board')}: <Link to={`/${boardPath}`}>{displayBoardPath}</Link>{' '}
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
{t('link')}:{' '}
|
{requirePostLinkIsMedia ? t('file') : t('link')}:{' '}
|
||||||
<a href={url} target='_blank' rel='noopener noreferrer'>
|
<a href={url} target='_blank' rel='noopener noreferrer'>
|
||||||
{spoiler ? capitalize(t('spoiler')) : url && url.length > 30 ? url.slice(0, 30) + '...' : url}
|
{spoiler ? capitalize(t('spoiler')) : url && url.length > 30 ? url.slice(0, 30) + '...' : url}
|
||||||
</a>{' '}
|
</a>{' '}
|
||||||
|
|||||||
@@ -537,6 +537,8 @@ const PostMobile = ({
|
|||||||
const isInPendingPostView = isPendingPostView(location.pathname, params);
|
const isInPendingPostView = isPendingPostView(location.pathname, params);
|
||||||
const isInPostView = isPostPageView(location.pathname, params);
|
const isInPostView = isPostPageView(location.pathname, params);
|
||||||
const directories = useDirectories();
|
const directories = useDirectories();
|
||||||
|
const directoryEntry = directories?.find((c) => c.address === subplebbitAddress);
|
||||||
|
const requirePostLinkIsMedia = directoryEntry?.features?.requirePostLinkIsMedia === true;
|
||||||
const boardPath = subplebbitAddress ? getBoardPath(subplebbitAddress, directories) : undefined;
|
const boardPath = subplebbitAddress ? getBoardPath(subplebbitAddress, directories) : undefined;
|
||||||
const linksCount = useCountLinksInReplies(post);
|
const linksCount = useCountLinksInReplies(post);
|
||||||
const shouldFetchReplies = showReplies && !isModQueue;
|
const shouldFetchReplies = showReplies && !isModQueue;
|
||||||
@@ -695,7 +697,7 @@ const PostMobile = ({
|
|||||||
<div className={styles.postLink}>
|
<div className={styles.postLink}>
|
||||||
<span className={styles.info}>
|
<span className={styles.info}>
|
||||||
{replyCount > 0 && `${replyCount} Replies`}
|
{replyCount > 0 && `${replyCount} Replies`}
|
||||||
{linksCount > 0 && ` / ${linksCount} Links`}
|
{linksCount > 0 && ` / ${linksCount} ${requirePostLinkIsMedia ? 'Images' : 'Links'}`}
|
||||||
</span>
|
</span>
|
||||||
{isModQueue ? (
|
{isModQueue ? (
|
||||||
<div className={styles.modQueueActions}>
|
<div className={styles.modQueueActions}>
|
||||||
|
|||||||
Reference in New Issue
Block a user