Browse Source

feat: ComposeReply add nip10 p tags

tag in pubkeys participating in thread
master
DanConwayDev 2 years ago
parent
commit
ef3fd9e9cc
No known key found for this signature in database
GPG Key ID: 68E15486D73F75E1
  1. 9
      src/lib/components/events/EventWrapper.svelte
  2. 1
      src/lib/wrappers/ComposeIssue.svelte
  3. 44
      src/lib/wrappers/ComposeReply.svelte
  4. 8
      src/lib/wrappers/EventCard.svelte
  5. 2
      src/lib/wrappers/ThreadTree.svelte

9
src/lib/components/events/EventWrapper.svelte

@ -10,8 +10,7 @@
export let type: 'proposal' | 'issue' = 'proposal' export let type: 'proposal' | 'issue' = 'proposal'
export let author: User = { ...user_defaults } export let author: User = { ...user_defaults }
export let created_at: number | undefined export let created_at: number | undefined
export let event_id = '' export let event: NDKEvent
export let event: NDKEvent | undefined = undefined
let show_compose = false let show_compose = false
let show_raw_json_modal = false let show_raw_json_modal = false
let created_at_ago = '' let created_at_ago = ''
@ -100,11 +99,7 @@
> >
</div> </div>
<div class=""> <div class="">
<ComposeReply <ComposeReply {type} {event} sentFunction={() => replySent()} />
{type}
reply_to_event_id={event_id}
sentFunction={() => replySent()}
/>
</div> </div>
</div> </div>
{/if} {/if}

1
src/lib/wrappers/ComposeIssue.svelte

@ -31,7 +31,6 @@
'root', 'root',
]) ])
repo_event.maintainers.forEach((m) => event.tags.push(['p', m.hexpubkey])) repo_event.maintainers.forEach((m) => event.tags.push(['p', m.hexpubkey]))
// TODO nip-10 reply chain p tags
event.content = content event.content = content
submitting = true submitting = true
let relays = [ let relays = [

44
src/lib/wrappers/ComposeReply.svelte

@ -2,7 +2,7 @@
import { base_relays, ndk } from '$lib/stores/ndk' import { base_relays, ndk } from '$lib/stores/ndk'
import { NDKEvent, NDKRelaySet } from '@nostr-dev-kit/ndk' import { NDKEvent, NDKRelaySet } from '@nostr-dev-kit/ndk'
import { reply_kind, repo_kind } from '$lib/kinds' 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 { import {
selected_repo_collection, selected_repo_collection,
selected_repo_event, selected_repo_event,
@ -12,9 +12,10 @@
import { selected_issue_full } from '$lib/stores/Issue' import { selected_issue_full } from '$lib/stores/Issue'
import type { IssueFull } from '$lib/components/issues/type' import type { IssueFull } from '$lib/components/issues/type'
import type { ProposalFull } from '$lib/components/proposals/type' import type { ProposalFull } from '$lib/components/proposals/type'
import { get } from 'svelte/store'
export let type: 'proposal' | 'issue' = 'proposal' export let type: 'proposal' | 'issue' = 'proposal'
export let reply_to_event_id = '' export let event: NDKEvent
export let sentFunction = () => {} export let sentFunction = () => {}
let repo_identifier: string let repo_identifier: string
let selected_proposal_or_issue: IssueFull | ProposalFull let selected_proposal_or_issue: IssueFull | ProposalFull
@ -36,43 +37,52 @@
async function sendReply(content: string) { async function sendReply(content: string) {
if (!$logged_in_user) return if (!$logged_in_user) return
let event = new NDKEvent(ndk) let new_event = new NDKEvent(ndk)
event.kind = reply_kind new_event.kind = reply_kind
event.tags.push([ new_event.tags.push([
'e', 'e',
selected_proposal_or_issue.summary.id, selected_proposal_or_issue.summary.id,
$selected_repo_event.relays[0] || '', $selected_repo_event.relays[0] || '',
'root', 'root',
]) ])
if (reply_to_event_id.length > 0) { if (new_event.id.length > 0) {
event.tags.push([ new_event.tags.push([
'e', 'e',
reply_to_event_id, new_event.id,
$selected_repo_event.relays[0] || '', $selected_repo_event.relays[0] || '',
'reply', 'reply',
]) ])
} }
if ($selected_repo_event.unique_commit) { 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', 'a',
`${repo_kind}:${$selected_repo_event.maintainers[0].hexpubkey}:${repo_identifier}`, `${repo_kind}:${$selected_repo_event.maintainers[0].hexpubkey}:${repo_identifier}`,
]) ])
$selected_repo_event.maintainers.forEach((m) => let parent_event_user_relay = user_relays[event.pubkey]
event.tags.push(['p', m.hexpubkey]) ? 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 new_event.tags
event.content = content .filter((tag) => tag[0] === 'p')
.forEach((tag) => {
new_event.tags.push(tag)
})
new_event.content = content
submitting = true submitting = true
let relays = [ let relays = [
...($selected_repo_event.relays.length > 3 ...($selected_repo_event.relays.length > 3
? $selected_repo_event.relays ? $selected_repo_event.relays
: [...base_relays].concat($selected_repo_event.relays)), : [...base_relays].concat($selected_repo_event.relays)),
] ]
try { try {
event.sign() new_event.sign()
} catch { } catch {
alert('failed to sign event') alert('failed to sign event')
} }
@ -89,7 +99,7 @@
alert('failed to get user relays') alert('failed to get user relays')
} }
try { try {
let _ = await event.publish(NDKRelaySet.fromRelayUrls(relays, ndk)) let _ = await new_event.publish(NDKRelaySet.fromRelayUrls(relays, ndk))
submitting = false submitting = false
submitted = true submitted = true
setTimeout(() => { setTimeout(() => {

8
src/lib/wrappers/EventCard.svelte

@ -26,13 +26,7 @@
}) })
</script> </script>
<EventWrapper <EventWrapper {type} author={$author} created_at={event.created_at} {event}>
{type}
author={$author}
created_at={event.created_at}
event_id={event.id}
{event}
>
{#if event.kind == patch_kind} {#if event.kind == patch_kind}
<Patch content={event.content} tags={event.tags} /> <Patch content={event.content} tags={event.tags} />
{:else if event.kind && proposal_status_kinds.includes(event.kind)} {:else if event.kind && proposal_status_kinds.includes(event.kind)}

2
src/lib/wrappers/ThreadTree.svelte

@ -131,6 +131,6 @@
</ThreadWrapper> </ThreadWrapper>
{/each} {/each}
{#if show_compose} {#if show_compose}
<ComposeReply {type} reply_to_event_id={tree.event.id} /> <ComposeReply {type} event={tree.event} />
{/if} {/if}
</ThreadWrapper> </ThreadWrapper>

Loading…
Cancel
Save