Browse Source

fix: compose reply tags

proposal revisions are tagged as root when replied to,
or in a revision reply chain

user doesnt tag themselves

user doesnt tag people twice
master
DanConwayDev 2 years ago
parent
commit
9730750d5f
No known key found for this signature in database
GPG Key ID: 68E15486D73F75E1
  1. 31
      src/lib/wrappers/ComposeReply.svelte

31
src/lib/wrappers/ComposeReply.svelte

@ -34,6 +34,15 @@
selected_proposal_or_issue.summary.id.length > 0 && selected_proposal_or_issue.summary.id.length > 0 &&
!submitted !submitted
} }
/** to get the proposal revision id rather than the root proposal */
const getRootId = (event: NDKEvent): string | undefined => {
// exclude 'a' references to repo events
return event.tags.find(
(t) => t[0] === 'e' && t.length === 4 && t[3] === 'root'
) || event.tags.some((t) => t[0] === 't' && t[1] === 'root')
? event.id
: undefined
}
async function sendReply(content: string) { async function sendReply(content: string) {
if (!$logged_in_user) return if (!$logged_in_user) return
@ -41,14 +50,14 @@
new_event.kind = reply_kind new_event.kind = reply_kind
new_event.tags.push([ new_event.tags.push([
'e', 'e',
selected_proposal_or_issue.summary.id, getRootId(event) || selected_proposal_or_issue.summary.id,
$selected_repo_event.relays[0] || '', $selected_repo_event.relays[0] || '',
'root', 'root',
]) ])
if (new_event.id.length > 0) { if (event.id.length > 0) {
new_event.tags.push([ event.tags.push([
'e', 'e',
new_event.id, event.id,
$selected_repo_event.relays[0] || '', $selected_repo_event.relays[0] || '',
'reply', 'reply',
]) ])
@ -64,15 +73,17 @@
? get(user_relays[event.pubkey]).ndk_relays?.writeRelayUrls[0] ? get(user_relays[event.pubkey]).ndk_relays?.writeRelayUrls[0]
: undefined : undefined
new_event.tags.push( if (event.pubkey !== $logged_in_user?.hexpubkey)
parent_event_user_relay new_event.tags.push(
? ['p', event.pubkey, parent_event_user_relay] parent_event_user_relay
: ['p', event.pubkey] ? ['p', event.pubkey, parent_event_user_relay]
) : ['p', event.pubkey]
)
new_event.tags new_event.tags
.filter((tag) => tag[0] === 'p') .filter((tag) => tag[0] === 'p')
.forEach((tag) => { .forEach((tag) => {
new_event.tags.push(tag) if (tag[1] !== event.pubkey && tag[1] !== $logged_in_user?.hexpubkey)
new_event.tags.push(tag)
}) })
new_event.content = content new_event.content = content
submitting = true submitting = true

Loading…
Cancel
Save