diff --git a/src/components/ChatViewer.tsx b/src/components/ChatViewer.tsx index 8216063..f8e228f 100644 --- a/src/components/ChatViewer.tsx +++ b/src/components/ChatViewer.tsx @@ -9,9 +9,11 @@ import type { ChatProtocol, ProtocolIdentifier, Conversation, + LiveActivityMetadata, } from "@/types/chat"; // import { NipC7Adapter } from "@/lib/chat/adapters/nip-c7-adapter"; // Coming soon import { Nip29Adapter } from "@/lib/chat/adapters/nip-29-adapter"; +import { Nip53Adapter } from "@/lib/chat/adapters/nip-53-adapter"; import type { ChatProtocolAdapter } from "@/lib/chat/adapters/base-adapter"; import type { Message } from "@/types/chat"; import { UserName } from "./nostr/UserName"; @@ -20,6 +22,7 @@ import Timestamp from "./Timestamp"; import { ReplyPreview } from "./chat/ReplyPreview"; import { MembersDropdown } from "./chat/MembersDropdown"; import { RelaysDropdown } from "./chat/RelaysDropdown"; +import { StatusBadge } from "./live/StatusBadge"; import { useGrimoire } from "@/core/state"; import { Button } from "./ui/button"; import { @@ -331,9 +334,16 @@ export function ChatViewer({ const handleNipClick = useCallback(() => { if (conversation?.protocol === "nip-29") { addWindow("nip", { number: 29 }); + } else if (conversation?.protocol === "nip-53") { + addWindow("nip", { number: 53 }); } }, [conversation?.protocol, addWindow]); + // Get live activity metadata if this is a NIP-53 chat + const liveActivity = conversation?.metadata?.liveActivity as + | LiveActivityMetadata + | undefined; + if (!conversation) { return (
@@ -348,11 +358,26 @@ export function ChatViewer({
+ {/* Live activity status badge */} + {liveActivity?.status && ( + + )}
-

+

{customTitle || conversation.title}

- {conversation.metadata?.description && ( + {/* Show host for live activities */} + {liveActivity?.hostPubkey && ( + + by{" "} + + + )} + {/* Show description for groups */} + {!liveActivity && conversation.metadata?.description && (

{conversation.metadata.description}

@@ -362,7 +387,8 @@ export function ChatViewer({
- {conversation.type === "group" && ( + {(conversation.type === "group" || + conversation.type === "live-chat") && (