diff --git a/packages/web/src/components/layout/DmListItem.tsx b/packages/web/src/components/layout/DmListItem.tsx index fe8ea415..e67e3c5b 100644 --- a/packages/web/src/components/layout/DmListItem.tsx +++ b/packages/web/src/components/layout/DmListItem.tsx @@ -3,7 +3,7 @@ import { Avatar } from '../ui/Avatar'; import { Tooltip } from '../ui/Tooltip'; import { parseFederatedUsername, isSelf } from '../../utils/identity'; import { formatDmTimestamp, formatDmPreview } from '../../utils/dmFormatters'; -import { getRejectedPeerOrigins } from '../../hooks/useWebSocket'; +import { getRejectedPeerOrigins, getAwaitingApprovalPeerOrigins } from '../../hooks/useWebSocket'; function isMemberUnreachable(homeInstance: string | null | undefined): boolean { if (!homeInstance) return false; @@ -11,6 +11,12 @@ function isMemberUnreachable(homeInstance: string | null | undefined): boolean { return getRejectedPeerOrigins().has(normalized); } +function isMemberAwaitingApproval(homeInstance: string | null | undefined): boolean { + if (!homeInstance) return false; + const normalized = homeInstance.startsWith('http') ? homeInstance : `https://${homeInstance}`; + return getAwaitingApprovalPeerOrigins().has(normalized); +} + interface DmListItemProps { dm: DmChannel; isActive: boolean; @@ -160,12 +166,19 @@ export function DmListItem({ dm, isActive, isUnread, user, onSelect, onClose, on )} {firstOther && isMemberUnreachable(firstOther.homeInstance) && ( - - + + )} + {firstOther && !isMemberUnreachable(firstOther.homeInstance) && isMemberAwaitingApproval(firstOther.homeInstance) && ( + + + + + + )} {dm.lastMessage && ( {formatDmTimestamp(dm.lastMessage.createdAt)}