+ {!isInPostPageView && !isDescription && !isRules && (
+
+
- {linksCount > 0 ? (
-
}}
- values={{ repliesCount, linksCount }}
- />
- ) : (
-
}} values={{ repliesCount }} />
- )}
-
- )}
- {!(pinned && !isInPostView) &&
- !isInPendingPostView &&
- !isDescription &&
- !isRules &&
- replies &&
- (showAllReplies ? replies : replies.slice(-5)).map((reply, index) => (
-
-
-
{'>>'}
-
-
- {reply.link && isValidURL(reply.link) &&
}
- {reply.content &&
}
+ )}
+ {link && !blocked && isValidURL(link) &&
}
+
+ {!blocked && !content &&
}
+ {!blocked && content &&
}
+ {!blocked && !isDescription && !isRules && !isInPendingPostView && (replies.length > 5 || (pinned && replies.length > 0)) && !isInPostPageView && (
+
+
+
+
+ {linksCount > 0 ? (
+ }}
+ values={{ repliesCount, linksCount }}
+ />
+ ) : (
+ }} values={{ repliesCount }} />
+ )}
+
+ )}
+ {!blocked &&
+ !(pinned && !isInPostPageView) &&
+ !isInPendingPostView &&
+ !isDescription &&
+ !isRules &&
+ replies &&
+ (showAllReplies ? replies : replies.slice(-5)).map((reply, index) => (
+
+
+
{'>>'}
+
+
+ {reply.link && isValidURL(reply.link) &&
}
+ {reply.content &&
}
+
-
- ))}
+ ))}
+
);
};
diff --git a/src/components/post/post-desktop/post-menu-desktop/post-menu-desktop.tsx b/src/components/post/post-desktop/post-menu-desktop/post-menu-desktop.tsx
index a363b952..41d5b89b 100644
--- a/src/components/post/post-desktop/post-menu-desktop/post-menu-desktop.tsx
+++ b/src/components/post/post-desktop/post-menu-desktop/post-menu-desktop.tsx
@@ -1,12 +1,12 @@
import { useState } from 'react';
import { createPortal } from 'react-dom';
-import { useLocation } from 'react-router-dom';
+import { useLocation, useParams } from 'react-router-dom';
import { autoUpdate, flip, FloatingFocusManager, offset, shift, useClick, useDismiss, useFloating, useId, useInteractions, useRole } from '@floating-ui/react';
-import { Comment } from '@plebbit/plebbit-react-hooks';
+import { Comment, useBlock } from '@plebbit/plebbit-react-hooks';
import styles from './post-menu-desktop.module.css';
import { getCommentMediaInfo } from '../../../../lib/utils/media-utils';
import { copyShareLinkToClipboard, isValidURL } from '../../../../lib/utils/url-utils';
-import { isCatalogView } from '../../../../lib/utils/view-utils';
+import { isCatalogView, isPostPageView } from '../../../../lib/utils/view-utils';
interface PostMenuDesktopProps {
cid: string;
@@ -101,7 +101,12 @@ const PostMenuDesktop = ({ post }: { post: Comment }) => {
const { thumbnail, type, url } = commentMediaInfo || {};
const [menuBtnRotated, setMenuBtnRotated] = useState(false);
- const isInCatalogView = isCatalogView(useLocation().pathname);
+ const { blocked, unblock, block } = useBlock({ address: cid });
+
+ const location = useLocation();
+ const params = useParams();
+ const isInCatalogView = isCatalogView(location.pathname);
+ const isInPostPageView = isPostPageView(location.pathname, params);
const { refs, floatingStyles, context } = useFloating({
placement: 'bottom-start',
@@ -135,6 +140,11 @@ const PostMenuDesktop = ({ post }: { post: Comment }) => {
{cid && subplebbitAddress &&
}
+ {!isInPostPageView && !isDescription && !isRules && (
+
+ {blocked ? 'Unhide' : 'Hide'} {postCid === cid ? 'thread' : 'post'}
+
+ )}
{link && isValidURL(link) && (type === 'image' || type === 'gif' || thumbnail) && url &&
}
diff --git a/src/components/post/post.module.css b/src/components/post/post.module.css
index 8cfe0d3b..d3b1df28 100644
--- a/src/components/post/post.module.css
+++ b/src/components/post/post.module.css
@@ -11,6 +11,8 @@
}
.hideButtonWrapper {
+ height: 15px;
+ width: 18px;
padding-right: 5px;
float: left;
}
@@ -26,6 +28,10 @@
transform: translateY(-1px);
}
+.postDesktopBlocked {
+ opacity: 0.5;
+}
+
/* clearfix to contain float elements */
.postDesktop::after {
content: "";
@@ -52,7 +58,6 @@
}
.postDesktop .postInfo {
- padding-top: 3px;
width: 100%;
}
@@ -307,7 +312,7 @@
}
.replyDesktop {
- padding-bottom: 4px;
+ padding-top: 4px;
}
.replyDesktop .sideArrows {
diff --git a/src/components/post/post.tsx b/src/components/post/post.tsx
index 2dc6569b..d1f4e853 100644
--- a/src/components/post/post.tsx
+++ b/src/components/post/post.tsx
@@ -6,6 +6,7 @@ import PostMobile from './post-mobile';
export interface PostProps {
index?: number;
+ isBlocked?: boolean;
post?: any;
reply?: any;
roles?: Role[];
diff --git a/src/lib/utils/view-utils.ts b/src/lib/utils/view-utils.ts
index cb209a3d..1f3918a4 100644
--- a/src/lib/utils/view-utils.ts
+++ b/src/lib/utils/view-utils.ts
@@ -8,6 +8,12 @@ export const isAllView = (pathname: string): boolean => {
return pathname.startsWith('/p/all');
};
+export const isBoardView = (pathname: string, params: ParamsType): boolean => {
+ // some subs might use emojis in their address, so we need to decode the pathname
+ const decodedPathname = decodeURIComponent(pathname);
+ return params.subplebbitAddress ? decodedPathname.startsWith(`/p/${params.subplebbitAddress}`) : false;
+};
+
export const isCatalogView = (pathname: string): boolean => {
return pathname.endsWith('/catalog') || pathname.endsWith('/catalog/settings');
};
@@ -44,6 +50,8 @@ export const isSubscriptionsView = (pathname: string): boolean => {
export const isNotFoundView = (pathname: string, params: ParamsType): boolean => {
return (
+ !isAllView(pathname) &&
+ !isBoardView(pathname, params) &&
!isCatalogView(pathname) &&
!isDescriptionView(pathname, params) &&
!isHomeView(pathname) &&
diff --git a/src/views/home/home.module.css b/src/views/home/home.module.css
index be829aaa..721bb6c3 100644
--- a/src/views/home/home.module.css
+++ b/src/views/home/home.module.css
@@ -119,7 +119,6 @@
}
.list a {
-
color: var(--homepage-box-link-text-color);
text-decoration: var(--homepage-box-link-text-decoration);
}