From d1f3aea26e9269d4b6b28c2d4ac8e8220ec7c8ad Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 16 Sep 2026 18:03:25 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BE=A4=E8=81=8A=E6=B6=88=E6=81=AF=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E4=B8=AD=E7=82=B9=E5=87=BB=E5=8F=91=E9=80=81=E8=80=85?= =?UTF-8?q?=E5=A4=B4=E5=83=8F/=E5=90=8D=E5=AD=97=E5=8F=AF=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E6=9F=A5=E7=9C=8B=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit isGroup且非本人消息、非多选态时,头像与名字改为Link跳转到/contacts/{msg.from}, 其余情况(含选中模式,避免中断正在进行的批量选择)保持原有纯展示span不变。 Co-Authored-By: Claude Sonnet 5 --- web/src/features/messages/MessageBubble.tsx | 38 ++++++++++++++++----- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/web/src/features/messages/MessageBubble.tsx b/web/src/features/messages/MessageBubble.tsx index 0cdf581e..e6801e3d 100644 --- a/web/src/features/messages/MessageBubble.tsx +++ b/web/src/features/messages/MessageBubble.tsx @@ -141,17 +141,39 @@ export function MessageRow({ }} className={`flex flex-1 items-start gap-2.5 ${mine ? 'flex-row-reverse' : ''}`} > - - {avatarLetter(mine ? '我' : isGroup ? senderName || msg.from : peerName)} - + {/* Group members' avatar/name go to their profile (same destination ContactCardBubble's own + card already uses, which works for a non-friend group member too -- FriendProfileView's + relationship-aware buttons handle that case, it isn't friends-only). Not for `mine` -- that + slot always reads "我", and viewing "your own profile" via a route built around a two-party + relationship isn't a case this app has ever needed to support. Not during `selectMode` + either -- the checkbox is the only thing a tap in this row should do while bulk-selecting, + not navigate away and lose whatever's already been picked. */} + {isGroup && !mine && !selectMode && msg.from ? ( + + {avatarLetter(senderName || msg.from)} + + ) : ( + + {avatarLetter(mine ? '我' : isGroup ? senderName || msg.from : peerName)} + + )}
{isGroup ? (
- {mine ? '我' : senderName || msg.from} + {!mine && !selectMode && msg.from ? ( + + {senderName || msg.from} + + ) : ( + {mine ? '我' : senderName || msg.from} + )}
) : null}