diff --git a/e2e-tests/playwright/tests/functional/channels/drafts/drafts_on_deleted_message.spec.ts b/e2e-tests/playwright/tests/functional/channels/drafts/drafts_on_deleted_message.spec.ts
index 9eb6846005d..3a82fb5e31d 100644
--- a/e2e-tests/playwright/tests/functional/channels/drafts/drafts_on_deleted_message.spec.ts
+++ b/e2e-tests/playwright/tests/functional/channels/drafts/drafts_on_deleted_message.spec.ts
@@ -62,7 +62,7 @@ test('MM-T5435_1 Global Drafts link in sidebar should be hidden when another use
}
// # Open the last post in the channel sent by admin again
- await lastPostByAdmin.threadFooter.reply();
+ await lastPostByAdmin.body.click();
// * Verify drafts in user's textbox is still visible
const rhsTextboxValue = await sidebarRight.postCreate.getInputValue();
diff --git a/webapp/channels/src/components/threading/channel_threads/thread_footer/thread_footer.tsx b/webapp/channels/src/components/threading/channel_threads/thread_footer/thread_footer.tsx
index 32ba2a30649..ba1e3cace16 100644
--- a/webapp/channels/src/components/threading/channel_threads/thread_footer/thread_footer.tsx
+++ b/webapp/channels/src/components/threading/channel_threads/thread_footer/thread_footer.tsx
@@ -10,6 +10,7 @@ import type {UserThread} from '@mattermost/types/threads';
import {threadIsSynthetic} from '@mattermost/types/threads';
import {setThreadFollow, getThread as fetchThread} from 'mattermost-redux/actions/threads';
+import {Posts} from 'mattermost-redux/constants';
import {getPost} from 'mattermost-redux/selectors/entities/posts';
import {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams';
import {makeGetThreadOrSynthetic} from 'mattermost-redux/selectors/entities/threads';
@@ -79,6 +80,10 @@ function ThreadFooter({
dispatch(setThreadFollow(currentUserId, currentTeamId, threadId, !isFollowing));
}, [isFollowing]);
+ if (post.delete_at > 0 || post.state === Posts.POST_DELETED) {
+ return null;
+ }
+
return (
{!isFollowing || threadIsSynthetic(thread) || !thread.unread_replies ? (
diff --git a/webapp/channels/src/components/threading/virtualized_thread_viewer/thread_viewer_row.tsx b/webapp/channels/src/components/threading/virtualized_thread_viewer/thread_viewer_row.tsx
index 06f3e6efe04..201332781fb 100644
--- a/webapp/channels/src/components/threading/virtualized_thread_viewer/thread_viewer_row.tsx
+++ b/webapp/channels/src/components/threading/virtualized_thread_viewer/thread_viewer_row.tsx
@@ -24,6 +24,7 @@ type Props = {
a11yIndex: number;
currentUserId: string;
isRootPost: boolean;
+ isDeletedPost: boolean;
isLastPost: boolean;
listId: string;
onCardClick: (post: Post) => void;
@@ -38,6 +39,7 @@ function ThreadViewerRow({
a11yIndex,
currentUserId,
isRootPost,
+ isDeletedPost,
isLastPost,
listId,
onCardClick,
@@ -76,7 +78,7 @@ function ThreadViewerRow({
timestampProps={timestampProps}
location={Locations.RHS_ROOT}
/>
-
+ {!isDeletedPost && }
>
);
case PostListUtils.isCombinedUserActivityPost(listId): {
diff --git a/webapp/channels/src/components/threading/virtualized_thread_viewer/virtualized_thread_viewer.tsx b/webapp/channels/src/components/threading/virtualized_thread_viewer/virtualized_thread_viewer.tsx
index d6eccc4fac6..cbb0a62a348 100644
--- a/webapp/channels/src/components/threading/virtualized_thread_viewer/virtualized_thread_viewer.tsx
+++ b/webapp/channels/src/components/threading/virtualized_thread_viewer/virtualized_thread_viewer.tsx
@@ -10,6 +10,7 @@ import AutoSizer from 'react-virtualized-auto-sizer';
import type {Post} from '@mattermost/types/posts';
import type {UserProfile} from '@mattermost/types/users';
+import {Posts} from 'mattermost-redux/constants';
import {getNewMessagesIndex, isDateLine, isStartOfNewMessages, isCreateComment} from 'mattermost-redux/utils/post_list';
import NewRepliesBanner from 'components/new_replies_banner';
@@ -349,6 +350,8 @@ class ThreadViewerVirtualized extends PureComponent {
const isLastPost = itemId === this.props.lastPost.id;
const isRootPost = itemId === this.props.selected.id;
+ const isDeletedPost = ('delete_at' in this.props.selected && this.props.selected.delete_at !== 0) ||
+ ('state' in this.props.selected && this.props.selected.state === Posts.POST_DELETED);
if (!isDateLine(itemId) && !isStartOfNewMessages(itemId) && !isCreateComment(itemId) && !isRootPost) {
a11yIndex++;
@@ -364,6 +367,7 @@ class ThreadViewerVirtualized extends PureComponent {
currentUserId={this.props.currentUserId}
isRootPost={isRootPost}
isLastPost={isLastPost}
+ isDeletedPost={isDeletedPost}
listId={itemId}
onCardClick={this.props.onCardClick}
previousPostId={getPreviousPostId(data, index)}