Skip to content

Commit 9113733

Browse files
committed
fix: update chat bubble components to use w-fit for improved layout responsiveness
1 parent a86016f commit 9113733

File tree

5 files changed

+16
-10
lines changed

5 files changed

+16
-10
lines changed

packages/webapp/src/components/chat/MessageBubble.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ function isProbableImageUrl(value: string): boolean {
4747

4848
function alignedCard(align: "left" | "right", content: import("react").ReactNode) {
4949
return (
50-
<div className="max-w-[88%]">{content}</div>
50+
<div className="w-fit">{content}</div>
5151
)
5252
}
5353

@@ -186,7 +186,7 @@ export function MessageBubble({ message, align, onRetry }: MessageBubbleProps) {
186186
return (
187187
<ContextMenu>
188188
<ContextMenuTrigger asChild>
189-
<div>
189+
<div className="w-fit">
190190
{renderedContent}
191191
{deliveryState(align, message, onRetry)}
192192
</div>

packages/webapp/src/components/chat/MessageList.tsx

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { useTranslation } from "react-i18next"
33
import { useVirtualizer } from "@tanstack/react-virtual"
44

55
import { useMessageSender } from "@/hooks/use-message-sender"
6+
import { decodeUtf8Hex } from "@/lib/message-content"
67
import { DidAvatar } from "@/components/shared/DidAvatar"
78
import { useIdentityStore } from "@/stores/identity"
89
import { useContactStore } from "@/stores/contact"
@@ -153,8 +154,8 @@ export function MessageList({ messages }: MessageListProps) {
153154
)
154155
}
155156

156-
const senderHint = row.value.sealedHeader
157-
const isSelf = selfDid ? senderHint.includes(selfDid.slice(-8)) : false
157+
const senderDid = decodeUtf8Hex(row.value.sealedHeader)
158+
const isSelf = !!(selfDid && senderDid && senderDid === selfDid)
158159
const avatarDid = isSelf
159160
? (selfDid ?? "did:claw:me")
160161
: (peerDid ?? "did:claw:unknown")
@@ -172,15 +173,20 @@ export function MessageList({ messages }: MessageListProps) {
172173
data-index={virtualItem.index}
173174
ref={rowVirtualizer.measureElement}
174175
>
175-
<div className={`flex items-end gap-2 py-[3px] ${isSelf ? "flex-row-reverse justify-end" : "flex-row justify-start"}`}>
176-
<DidAvatar did={avatarDid} avatarUrl={avatarUrl} className="size-8 shrink-0 rounded-full" />
177-
<div className="min-w-0" style={{ maxWidth: "min(720px, 80%)" }}>
176+
<div className={`flex items-end gap-2 py-[3px] ${isSelf ? "justify-end" : "justify-start"}`}>
177+
{!isSelf && (
178+
<DidAvatar did={avatarDid} avatarUrl={avatarUrl} className="size-8 shrink-0 rounded-full" />
179+
)}
180+
<div style={{ maxWidth: "min(720px, 80%)" }}>
178181
<MemoMessageBubble
179182
message={row.value}
180183
align={isSelf ? "right" : "left"}
181184
onRetry={handleRetry}
182185
/>
183186
</div>
187+
{isSelf && (
188+
<DidAvatar did={avatarDid} avatarUrl={avatarUrl} className="size-8 shrink-0 rounded-full" />
189+
)}
184190
</div>
185191
</div>
186192
)

packages/webapp/src/components/chat/bubbles/FileBubble.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export function FileBubble({
2424
return (
2525
<div
2626
className={cn(
27-
"inline-block rounded-2xl px-3.5 py-2 shadow-sm",
27+
"w-fit rounded-2xl px-3.5 py-2 shadow-sm",
2828
align === "right"
2929
? "rounded-br-md bg-[color:var(--chat-bubble-self)] text-[color:var(--chat-bubble-self-fg)]"
3030
: "rounded-bl-md bg-[color:var(--chat-bubble-peer)] text-[color:var(--chat-bubble-peer-fg)]",

packages/webapp/src/components/chat/bubbles/ImageBubble.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export function ImageBubble({
5656
<div
5757
ref={containerRef}
5858
className={cn(
59-
"inline-block overflow-hidden rounded-2xl shadow-sm",
59+
"w-fit overflow-hidden rounded-2xl shadow-sm",
6060
align === "right"
6161
? "rounded-br-md bg-[color:var(--chat-bubble-self)]"
6262
: "rounded-bl-md bg-[color:var(--chat-bubble-peer)]",

packages/webapp/src/components/chat/bubbles/TextBubble.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export function TextBubble({ align, text, timestamp, provisional, attachmentMani
1414
return (
1515
<div
1616
className={cn(
17-
"inline-block rounded-2xl px-3.5 py-2 text-[16px] leading-[22px] shadow-sm",
17+
"w-fit rounded-2xl px-3.5 py-2 text-[16px] leading-[22px] shadow-sm",
1818
self
1919
? "rounded-br-md bg-[color:var(--chat-bubble-self)] text-[color:var(--chat-bubble-self-fg)]"
2020
: "rounded-bl-md bg-[color:var(--chat-bubble-peer)] text-[color:var(--chat-bubble-peer-fg)]",

0 commit comments

Comments
 (0)