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" ? "..." : "✓✓"}
+ )}
+
+
+ );
+}