mirror of
https://github.com/purrgrammer/grimoire.git
synced 2026-06-05 02:01:22 +02:00
fix: support zapping addressable events (naddr)
ZapWindow now correctly handles naddr pointers by: - Using useNostrEvent hook which supports both EventPointer and AddressPointer - Falling back to addressPointer.pubkey when event hasn't loaded yet Previously, zapping an naddr would fail because the component only tried to load events via eventPointer.id, ignoring addressPointer.
This commit is contained in:
@@ -31,8 +31,7 @@ import { PrivateKeySigner } from "applesauce-signers";
|
||||
import { generateSecretKey } from "nostr-tools";
|
||||
import QRCode from "qrcode";
|
||||
import { useProfile } from "@/hooks/useProfile";
|
||||
import { use$ } from "applesauce-react/hooks";
|
||||
import eventStore from "@/services/event-store";
|
||||
import { useNostrEvent } from "@/hooks/useNostrEvent";
|
||||
import { useWallet } from "@/hooks/useWallet";
|
||||
import { getDisplayName } from "@/lib/nostr-utils";
|
||||
import { KindRenderer } from "./nostr/kinds";
|
||||
@@ -101,16 +100,18 @@ export function ZapWindow({
|
||||
customTags,
|
||||
relays: propsRelays,
|
||||
}: ZapWindowProps) {
|
||||
// Load event if we have an eventPointer and no recipient pubkey (derive from event author)
|
||||
const event = use$(() => {
|
||||
if (!eventPointer) return undefined;
|
||||
return eventStore.event(eventPointer.id);
|
||||
}, [eventPointer]);
|
||||
// Load event if we have a pointer - supports both EventPointer and AddressPointer
|
||||
const event = useNostrEvent(eventPointer || addressPointer);
|
||||
|
||||
// Resolve recipient: use provided pubkey or derive from semantic author
|
||||
// For zaps, this returns the zapper; for streams, returns the host; etc.
|
||||
// Resolve recipient pubkey:
|
||||
// 1. Use provided pubkey if available
|
||||
// 2. Otherwise derive from event's semantic author (zapper, host, etc.)
|
||||
// 3. Fall back to addressPointer.pubkey for addressable events
|
||||
const recipientPubkey =
|
||||
initialRecipientPubkey || (event ? getSemanticAuthor(event) : "");
|
||||
initialRecipientPubkey ||
|
||||
(event ? getSemanticAuthor(event) : "") ||
|
||||
addressPointer?.pubkey ||
|
||||
"";
|
||||
|
||||
const recipientProfile = useProfile(recipientPubkey);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user