diff --git a/app/chat/page.tsx b/app/chat/page.tsx index 1554d17..176bb92 100644 --- a/app/chat/page.tsx +++ b/app/chat/page.tsx @@ -17,6 +17,7 @@ import { import { RoomMembersDialog } from "@/components/room-members-dialog"; import ConnectWallet from "@/components/wallet-connector"; import { RoomActivityPanel } from "@/components/room-activity-panel"; +import { MessageBubble } from "@/components/message-bubble"; import { cn } from "@/lib/utils"; import { handleAppError } from "@/lib/error-handler"; // Integrated Error Handler import { @@ -641,34 +642,13 @@ export default function ChatPage() { {!isLoadingMessagesByRoom[selectedChatId || ''] && messages.map((message) => ( -
-

- {message.text} -

-
- {message.time} - {message.author === "me" && ( - - {message.status === "sending" ? "..." : "✓✓"} - - )} -
-
+ text={message.text} + time={message.time} + isOwn={message.author === "me"} + status={message.status} + /> ))} diff --git a/components/message-bubble.tsx b/components/message-bubble.tsx new file mode 100644 index 0000000..bd04e92 --- /dev/null +++ b/components/message-bubble.tsx @@ -0,0 +1,38 @@ +"use client"; + +import { cn } from "@/lib/utils"; + +interface MessageBubbleProps { + text: string; + time: string; + isOwn: boolean; + status?: "sending" | "sent" | "delivered" | "read"; +} + +export function MessageBubble({ text, time, isOwn, status }: MessageBubbleProps) { + return ( +
+

{text}

+
+ {time} + {isOwn && ( + {status === "sending" ? "..." : "✓✓"} + )} +
+
+ ); +}