From 878190a8954738cf0d5d8afce89603c78afb257c Mon Sep 17 00:00:00 2001 From: hzrd149 Date: Fri, 19 Jul 2024 16:23:29 -0500 Subject: [PATCH] mention zapper when quoting a zap --- .../common-menu-items/quote-event.tsx | 13 +++++++++- .../debug-modal/event-debug-modal.tsx | 25 +++++++++++-------- src/helpers/nostr/event.ts | 15 ++++++++++- 3 files changed, 41 insertions(+), 12 deletions(-) diff --git a/src/components/common-menu-items/quote-event.tsx b/src/components/common-menu-items/quote-event.tsx index 797d6129c..3c45eb4d6 100644 --- a/src/components/common-menu-items/quote-event.tsx +++ b/src/components/common-menu-items/quote-event.tsx @@ -1,11 +1,13 @@ import { useCallback, useContext, useMemo } from "react"; import { MenuItem, useToast } from "@chakra-ui/react"; +import { kinds, nip19 } from "nostr-tools"; import { NostrEvent } from "../../types/nostr-event"; import { QuoteEventIcon } from "../icons"; import useUserMetadata from "../../hooks/use-user-metadata"; import { PostModalContext } from "../../providers/route/post-modal-provider"; import relayHintService from "../../services/event-relay-hint"; +import { getParsedZap } from "../../helpers/nostr/zaps"; export default function QuoteEventMenuItem({ event }: { event: NostrEvent }) { const toast = useToast(); @@ -14,7 +16,16 @@ export default function QuoteEventMenuItem({ event }: { event: NostrEvent }) { const { openModal } = useContext(PostModalContext); const share = useCallback(async () => { - openModal({ cacheFormKey: null, initContent: "\nnostr:" + address }); + let content = ""; + + // if its a zap, mention the original author + if (event.kind === kinds.Zap) { + const parsed = getParsedZap(event); + if (parsed) content += "nostr:" + nip19.npubEncode(parsed.event.pubkey) + "\n"; + } + + content += "\nnostr:" + address; + openModal({ cacheFormKey: null, initContent: content }); }, [metadata, event, toast, address]); return ( diff --git a/src/components/debug-modal/event-debug-modal.tsx b/src/components/debug-modal/event-debug-modal.tsx index 53c757a4c..e1827c4f1 100644 --- a/src/components/debug-modal/event-debug-modal.tsx +++ b/src/components/debug-modal/event-debug-modal.tsx @@ -1,4 +1,4 @@ -import { PropsWithChildren, ReactNode, useCallback, useState } from "react"; +import { PropsWithChildren, ReactNode, useMemo } from "react"; import { Modal, ModalOverlay, @@ -19,10 +19,9 @@ import { import { ModalProps } from "@chakra-ui/react"; import { nip19 } from "nostr-tools"; -import { getContentTagRefs, getThreadReferences } from "../../helpers/nostr/event"; +import { getContentPointers, getContentTagRefs, getThreadReferences } from "../../helpers/nostr/event"; import { NostrEvent } from "../../types/nostr-event"; import RawValue from "./raw-value"; -import { usePublishEvent } from "../../providers/global/publish-provider"; import { CopyIconButton } from "../copy-icon-button"; import DebugEventTags from "./event-tags"; import relayHintService from "../../services/event-relay-hint"; @@ -60,13 +59,7 @@ function JsonCode({ data }: { data: any }) { } export default function EventDebugModal({ event, ...props }: { event: NostrEvent } & Omit) { - const publish = usePublishEvent(); - const [loading, setLoading] = useState(false); - const broadcast = useCallback(async () => { - setLoading(true); - await publish("Broadcast", event); - setLoading(false); - }, []); + const contentRefs = useMemo(() => getContentPointers(event.content), [event]); return ( @@ -90,6 +83,18 @@ export default function EventDebugModal({ event, ...props }: { event: NostrEvent {event.content} + + + embeds + + {contentRefs.map((pointer, i) => ( + <> + + {pointer.type + "\n"} + {JSON.stringify(pointer.data, null, 2)} + + + ))}