From ef3fd9e9cc78d600bba01b97094aded5a1c57084 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Wed, 28 Feb 2024 10:24:51 +0000 Subject: [PATCH] feat: ComposeReply add nip10 p tags tag in pubkeys participating in thread --- src/lib/components/events/EventWrapper.svelte | 9 +--- src/lib/wrappers/ComposeIssue.svelte | 1 - src/lib/wrappers/ComposeReply.svelte | 44 ++++++++++++------- src/lib/wrappers/EventCard.svelte | 8 +--- src/lib/wrappers/ThreadTree.svelte | 2 +- 5 files changed, 31 insertions(+), 33 deletions(-) diff --git a/src/lib/components/events/EventWrapper.svelte b/src/lib/components/events/EventWrapper.svelte index 3aa6192..0a8edd0 100644 --- a/src/lib/components/events/EventWrapper.svelte +++ b/src/lib/components/events/EventWrapper.svelte @@ -10,8 +10,7 @@ export let type: 'proposal' | 'issue' = 'proposal' export let author: User = { ...user_defaults } export let created_at: number | undefined - export let event_id = '' - export let event: NDKEvent | undefined = undefined + export let event: NDKEvent let show_compose = false let show_raw_json_modal = false let created_at_ago = '' @@ -100,11 +99,7 @@ >
- replySent()} - /> + replySent()} />
{/if} diff --git a/src/lib/wrappers/ComposeIssue.svelte b/src/lib/wrappers/ComposeIssue.svelte index 21fc6ea..14e3ec3 100644 --- a/src/lib/wrappers/ComposeIssue.svelte +++ b/src/lib/wrappers/ComposeIssue.svelte @@ -31,7 +31,6 @@ 'root', ]) repo_event.maintainers.forEach((m) => event.tags.push(['p', m.hexpubkey])) - // TODO nip-10 reply chain p tags event.content = content submitting = true let relays = [ diff --git a/src/lib/wrappers/ComposeReply.svelte b/src/lib/wrappers/ComposeReply.svelte index ebeaa20..15401b9 100644 --- a/src/lib/wrappers/ComposeReply.svelte +++ b/src/lib/wrappers/ComposeReply.svelte @@ -2,7 +2,7 @@ import { base_relays, ndk } from '$lib/stores/ndk' import { NDKEvent, NDKRelaySet } from '@nostr-dev-kit/ndk' import { reply_kind, repo_kind } from '$lib/kinds' - import { getUserRelays, logged_in_user } from '$lib/stores/users' + import { getUserRelays, logged_in_user, user_relays } from '$lib/stores/users' import { selected_repo_collection, selected_repo_event, @@ -12,9 +12,10 @@ import { selected_issue_full } from '$lib/stores/Issue' import type { IssueFull } from '$lib/components/issues/type' import type { ProposalFull } from '$lib/components/proposals/type' + import { get } from 'svelte/store' export let type: 'proposal' | 'issue' = 'proposal' - export let reply_to_event_id = '' + export let event: NDKEvent export let sentFunction = () => {} let repo_identifier: string let selected_proposal_or_issue: IssueFull | ProposalFull @@ -36,43 +37,52 @@ async function sendReply(content: string) { if (!$logged_in_user) return - let event = new NDKEvent(ndk) - event.kind = reply_kind - event.tags.push([ + let new_event = new NDKEvent(ndk) + new_event.kind = reply_kind + new_event.tags.push([ 'e', selected_proposal_or_issue.summary.id, $selected_repo_event.relays[0] || '', 'root', ]) - if (reply_to_event_id.length > 0) { - event.tags.push([ + if (new_event.id.length > 0) { + new_event.tags.push([ 'e', - reply_to_event_id, + new_event.id, $selected_repo_event.relays[0] || '', 'reply', ]) } if ($selected_repo_event.unique_commit) { - event.tags.push(['r', $selected_repo_event.unique_commit]) + new_event.tags.push(['r', $selected_repo_event.unique_commit]) } - event.tags.push([ + new_event.tags.push([ 'a', `${repo_kind}:${$selected_repo_event.maintainers[0].hexpubkey}:${repo_identifier}`, ]) - $selected_repo_event.maintainers.forEach((m) => - event.tags.push(['p', m.hexpubkey]) + let parent_event_user_relay = user_relays[event.pubkey] + ? get(user_relays[event.pubkey]).ndk_relays?.writeRelayUrls[0] + : undefined + + new_event.tags.push( + parent_event_user_relay + ? ['p', event.pubkey, parent_event_user_relay] + : ['p', event.pubkey] ) - // TODO nip-10 reply chain p tags - event.content = content + new_event.tags + .filter((tag) => tag[0] === 'p') + .forEach((tag) => { + new_event.tags.push(tag) + }) + new_event.content = content submitting = true let relays = [ ...($selected_repo_event.relays.length > 3 ? $selected_repo_event.relays : [...base_relays].concat($selected_repo_event.relays)), ] - try { - event.sign() + new_event.sign() } catch { alert('failed to sign event') } @@ -89,7 +99,7 @@ alert('failed to get user relays') } try { - let _ = await event.publish(NDKRelaySet.fromRelayUrls(relays, ndk)) + let _ = await new_event.publish(NDKRelaySet.fromRelayUrls(relays, ndk)) submitting = false submitted = true setTimeout(() => { diff --git a/src/lib/wrappers/EventCard.svelte b/src/lib/wrappers/EventCard.svelte index 6dce90e..78b059b 100644 --- a/src/lib/wrappers/EventCard.svelte +++ b/src/lib/wrappers/EventCard.svelte @@ -26,13 +26,7 @@ }) - + {#if event.kind == patch_kind} {:else if event.kind && proposal_status_kinds.includes(event.kind)} diff --git a/src/lib/wrappers/ThreadTree.svelte b/src/lib/wrappers/ThreadTree.svelte index 6b8c6ec..a206e83 100644 --- a/src/lib/wrappers/ThreadTree.svelte +++ b/src/lib/wrappers/ThreadTree.svelte @@ -131,6 +131,6 @@ {/each} {#if show_compose} - + {/if}