|
|
|
|
@ -2,7 +2,7 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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(() => { |
|
|
|
|
|