Browse Source

feat: support nip34 revision format

gather replies from revisions where the main proposal
event may not be tagged

tag revisions in the status change event
master
DanConwayDev 2 years ago
parent
commit
199a2c48a1
No known key found for this signature in database
GPG Key ID: 68E15486D73F75E1
  1. 11
      src/lib/components/prs/StatusSelector.svelte
  2. 23
      src/lib/stores/PR.ts
  3. 6
      src/lib/stores/PRs.ts

11
src/lib/components/prs/StatusSelector.svelte

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
<script lang="ts">
import { ndk } from '$lib/stores/ndk'
import { NDKEvent, NDKRelaySet } from '@nostr-dev-kit/ndk'
import { selected_pr_full } from '$lib/stores/PR'
import { selected_pr_full, selected_pr_replies } from '$lib/stores/PR'
import {
proposal_status_applied,
proposal_status_closed,
@ -29,7 +29,16 @@ @@ -29,7 +29,16 @@
if (!$logged_in_user) return
let event = new NDKEvent(ndk)
event.kind = new_status_kind
// tag pr event
event.tags.push(['e', pr_id, 'root'])
// tag pr revision event
$selected_pr_replies
.filter((reply) =>
reply.tags.some((t) => t.length > 1 && t[1] === 'revision-root')
)
.forEach((revision) => {
event.tags.push(['e', revision.id, 'mention'])
})
event.tags.push(['r', `${repo_id}`])
loading = true
let relays = [...$selected_repo.relays]

23
src/lib/stores/PR.ts

@ -147,7 +147,7 @@ export const ensurePRFull = (repo_id: string, pr_id: string) => { @@ -147,7 +147,7 @@ export const ensurePRFull = (repo_id: string, pr_id: string) => {
: undefined
)
sub_replies.on('event', (event: NDKEvent) => {
const process_replies = (event: NDKEvent) => {
if (
event.kind &&
pr_status_kinds.includes(event.kind) &&
@ -172,6 +172,27 @@ export const ensurePRFull = (repo_id: string, pr_id: string) => { @@ -172,6 +172,27 @@ export const ensurePRFull = (repo_id: string, pr_id: string) => {
(a, b) => (a.created_at || 0) - (b.created_at || 0)
)
})
if (event.tags.some((t) => t.length > 1 && t[1] === 'revision-root')) {
const sub_revision_replies = ndk.subscribe(
{
ids: [pr_id],
limit: 50,
},
{
closeOnEose: true,
},
repo.relays.length > 0
? NDKRelaySet.fromRelayUrls(repo.relays, ndk)
: undefined
)
sub_revision_replies.on('event', (event: NDKEvent) => {
process_replies(event)
})
}
}
sub_replies.on('event', (event: NDKEvent) => {
process_replies(event)
})
sub_replies.on('eose', () => {

6
src/lib/stores/PRs.ts

@ -80,7 +80,11 @@ export const ensurePRSummaries = async (repo_id: string) => { @@ -80,7 +80,11 @@ export const ensurePRSummaries = async (repo_id: string) => {
sub.on('event', (event: NDKEvent) => {
try {
if (event.kind == patch_kind && event.content.length > 0) {
if (
event.kind == patch_kind &&
event.content.length > 0 &&
!event.tags.some((t) => t.length > 1 && t[1] === 'revision-root')
) {
pr_summaries.update((prs) => {
return {
...prs,

Loading…
Cancel
Save