From 86a668032aec0625fb1a994d11c190276b429031 Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Sun, 10 May 2026 20:40:35 +0200 Subject: [PATCH] feat(ui): DmListItem uses AvatarStack + dm.name + group globe --- .../web/src/components/layout/DmListItem.tsx | 47 +++++++------------ 1 file changed, 17 insertions(+), 30 deletions(-) diff --git a/packages/web/src/components/layout/DmListItem.tsx b/packages/web/src/components/layout/DmListItem.tsx index 99f1cdca..47f10818 100644 --- a/packages/web/src/components/layout/DmListItem.tsx +++ b/packages/web/src/components/layout/DmListItem.tsx @@ -1,34 +1,12 @@ import type { DmChannel, User } from '@backspace/shared'; import { Avatar } from '../ui/Avatar'; +import { AvatarStack } from '../ui/AvatarStack'; import { Tooltip } from '../ui/Tooltip'; import { parseFederatedUsername, isSelf, isFederationGlobeApplicable } from '../../utils/identity'; import { useCanonicalUserView } from '../../utils/userViewLookup'; import { formatDmTimestamp, formatDmSidebarPreview } from '../../utils/dmFormatters'; import { getRejectedPeerOrigins, getAwaitingApprovalPeerOrigins } from '../../hooks/useWebSocket'; -/** - * Renders a single avatar slot in the group DM avatar pair. - * Extracted as a component so useCanonicalUserView can be called per-slot - * (hooks must not be called inside a variable-length .map()). - */ -function DmGroupAvatarSlot({ member, index }: { member: User; index: number }) { - const canonical = useCanonicalUserView(member); - const displayName = canonical.displayName ?? parseFederatedUsername(canonical.username).baseName; - return ( -