From 4e806cabd4e29b1c995a3b0801ef40ddacd50922 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 15 Jan 2026 12:04:32 +0000 Subject: [PATCH] refactor: extract CHAT_KINDS constant and include zap receipts - Create CHAT_KINDS constant in types/chat.ts with all chat event kinds - Include kind 9735 (zap receipts) as a chat kind - Update ChatViewer to use the new constant for validation - Improves maintainability and makes it easier to update chat kinds Chat kinds now include: - 9: NIP-29 group chat messages - 9321: NIP-61 nutzaps - 1311: NIP-53 live chat messages - 9735: NIP-57 zap receipts --- src/components/ChatViewer.tsx | 8 +++++--- src/types/chat.ts | 11 +++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/components/ChatViewer.tsx b/src/components/ChatViewer.tsx index 2a265d7..ad7c931 100644 --- a/src/components/ChatViewer.tsx +++ b/src/components/ChatViewer.tsx @@ -23,6 +23,7 @@ import type { Conversation, LiveActivityMetadata, } from "@/types/chat"; +import { CHAT_KINDS } 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"; @@ -277,10 +278,11 @@ const MessageItem = memo(function MessageItem({ // Only show reply preview if: // 1. The event exists in our store - // 2. The event is a chat kind (9, 9321, 1311) - const chatKinds = [9, 9321, 1311]; + // 2. The event is a chat kind (includes messages, nutzaps, live chat, and zap receipts) const shouldShowReplyPreview = - zapReplyTo && replyEvent && chatKinds.includes(replyEvent.kind); + zapReplyTo && + replyEvent && + (CHAT_KINDS as readonly number[]).includes(replyEvent.kind); return (
diff --git a/src/types/chat.ts b/src/types/chat.ts index 51b7b45..f81b518 100644 --- a/src/types/chat.ts +++ b/src/types/chat.ts @@ -1,5 +1,16 @@ import type { NostrEvent } from "./nostr"; +/** + * Event kinds that are considered chat messages across all protocols + * Used for filtering and validating chat-related events + */ +export const CHAT_KINDS = [ + 9, // NIP-29: Group chat messages + 9321, // NIP-61: Nutzaps (ecash zaps in groups/live chats) + 1311, // NIP-53: Live chat messages + 9735, // NIP-57: Zap receipts (part of chat context) +] as const; + /** * Chat protocol identifier */