From a9d330f0134fc9480640ef5e40c66cabfa380c12 Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Fri, 27 Mar 2026 02:23:04 +0100 Subject: [PATCH] fix(federation): normalize federated username display across UI Use parseFederatedUsername() consistently to show base username instead of raw user@domain format. Replace inline domain text in Username component with compact globe icon + tooltip. Add globe icons to DM header and sidebar for federated users. --- .../web/src/components/chat/FriendsPage.tsx | 12 ++++--- .../web/src/components/chat/MessageList.tsx | 7 +++-- .../src/components/layout/ChannelSidebar.tsx | 31 +++++++++++++------ .../web/src/components/layout/MainContent.tsx | 16 ++++++++-- .../src/components/layout/MobileDmsScreen.tsx | 10 +++--- packages/web/src/components/ui/Username.tsx | 15 ++++----- 6 files changed, 60 insertions(+), 31 deletions(-) diff --git a/packages/web/src/components/chat/FriendsPage.tsx b/packages/web/src/components/chat/FriendsPage.tsx index fae13ec5..3668f6d5 100644 --- a/packages/web/src/components/chat/FriendsPage.tsx +++ b/packages/web/src/components/chat/FriendsPage.tsx @@ -886,13 +886,15 @@ function TabButton({ children, active, onClick }: { children: React.ReactNode, a function FriendItem({ friend, onRemove, onDm }: { friend: TaggedFriend, onRemove: () => void, onDm: () => void }) { const instanceLabel = friend._instanceOrigin ? (() => { try { return new URL(friend._instanceOrigin).host; } catch { return friend._instanceOrigin; } })() : ''; + const { baseName: friendBaseName } = parseFederatedUsername(friend.username); + const friendDisplayName = friend.displayName ?? friendBaseName; return (
{previewSender && previewSender.id !== authUser?.id - ? `${previewSender.displayName ?? previewSender.username}: ${preview}` + ? `${previewSender.displayName ?? parseFederatedUsername(previewSender.username).baseName}: ${preview}` : preview}
)} diff --git a/packages/web/src/components/ui/Username.tsx b/packages/web/src/components/ui/Username.tsx index adcebe5e..05dbea2e 100644 --- a/packages/web/src/components/ui/Username.tsx +++ b/packages/web/src/components/ui/Username.tsx @@ -15,13 +15,14 @@ export function Username({ username, showAt, className, style }: UsernameProps) return {prefix}{username}; } const name = username.slice(0, atIndex); - const domain = username.slice(atIndex + 1); return ( -