diff --git a/src/main/core/userDisplay.ts b/src/main/core/userDisplay.ts index c1babe8..7510ec6 100644 --- a/src/main/core/userDisplay.ts +++ b/src/main/core/userDisplay.ts @@ -22,6 +22,16 @@ export function isDeletedPeer(user: { return isDeletedUser(user) || isDeletedAccountUsername(user.username); } +/** Peers should treat suspended accounts like deleted (no PII). */ +export function isRedactedPeer(user: { + id?: number; + deleted?: boolean; + suspended?: boolean; + username?: string | null; +}): boolean { + return isDeletedPeer(user) || isSuspendedUser(user); +} + export const DELETED_ACCOUNT_LABEL = "Deleted account"; export function deletedUserLabel(): string { @@ -33,8 +43,9 @@ export function displayNameForUser(user: { display_name?: string | null; username?: string | null; deleted?: boolean; + suspended?: boolean; }): string { - if (isDeletedPeer(user)) { + if (isRedactedPeer(user)) { return deletedUserLabel(); } return user.display_name?.trim() || user.username?.trim() || ""; diff --git a/src/main/pages/chat/ui/left/UnifiedChatsList.tsx b/src/main/pages/chat/ui/left/UnifiedChatsList.tsx index 38df696..55d583b 100644 --- a/src/main/pages/chat/ui/left/UnifiedChatsList.tsx +++ b/src/main/pages/chat/ui/left/UnifiedChatsList.tsx @@ -10,7 +10,7 @@ import { onlineStatusManager } from "@/core/onlineStatusManager"; import { OnlineIndicator } from "@/pages/chat/ui/right/OnlineIndicator"; import defaultAvatar from "@/images/default-avatar.png"; import { MaterialBadge, MaterialCircularProgress, MaterialIcon, MaterialList, MaterialListItem } from "@/utils/material"; -import { displayNameForUser, isDeletedPeer } from "@/core/userDisplay"; +import { displayNameForUser, isRedactedPeer } from "@/core/userDisplay"; import { DeletedUserAvatar } from "@/core/DeletedUserAvatar"; import styles from "@/pages/chat/css/left-panel.module.scss"; @@ -229,7 +229,7 @@ export function UnifiedChatsList() { ); } - const isDeletedDm = isDeletedPeer(chat); + const isDeletedDm = isRedactedPeer(chat); const displayName = displayNameForUser({ ...chat, id: chat.id }); return ( diff --git a/src/main/pages/chat/ui/right/Message.tsx b/src/main/pages/chat/ui/right/Message.tsx index 7ae4c30..fa573d2 100644 --- a/src/main/pages/chat/ui/right/Message.tsx +++ b/src/main/pages/chat/ui/right/Message.tsx @@ -14,7 +14,7 @@ import { useImmer } from "use-immer"; import { createPortal } from "react-dom"; import { parseProfileLink } from "@/core/profileLinks"; import { MaterialCircularProgress, MaterialIconButton, MaterialList, MaterialListItem } from "@/utils/material"; -import { displayNameForUser, isDeletedPeer } from "@/core/userDisplay"; +import { displayNameForUser, isRedactedPeer } from "@/core/userDisplay"; import { DeletedUserAvatar } from "@/core/DeletedUserAvatar"; import styles from "@/pages/chat/css/Message.module.scss"; import replyPreviewStyles from "@/pages/chat/css/reply-preview.module.scss"; @@ -519,7 +519,7 @@ export function Message({ message, isAuthor, onContextMenu, onReactionClick, isD return messageText.length > 0 && emojiRegex.test(messageText) && messageText.length <= 4; // Most emojis are 1-4 characters }, [messageText]); - const isDeletedSender = isDeletedPeer({ id: message.user_id, username: message.username }); + const isDeletedSender = isRedactedPeer({ id: message.user_id, username: message.username }); return ( <>