diff --git a/src/lib/components/RepoSummaryCard.svelte b/src/lib/components/RepoSummaryCard.svelte index 1d51175..8b2b77e 100644 --- a/src/lib/components/RepoSummaryCard.svelte +++ b/src/lib/components/RepoSummaryCard.svelte @@ -22,8 +22,9 @@
{:else} - {short_name}{short_name} {#if short_descrption.length > 0}

diff --git a/src/lib/stores/PRs.ts b/src/lib/stores/PRs.ts index c73afeb..b179298 100644 --- a/src/lib/stores/PRs.ts +++ b/src/lib/stores/PRs.ts @@ -6,8 +6,9 @@ import type { User } from '$lib/components/users/type' import { ensureUser } from './users' import type { PRStatus, PRSummaries } from '$lib/components/prs/type' import { ensureSelectedRepo } from './repo' -import { pr_status_kind } from '$lib/kinds' +import { patch_kind, pr_kind, pr_status_kind, repo_kind } from '$lib/kinds' import type { Repo } from '$lib/components/repo/type' +import { extractPatchMessage } from '$lib/components/events/content/utils' export const pr_summaries: Writable = writable({ id: '', @@ -15,8 +16,6 @@ export const pr_summaries: Writable = writable({ loading: false, }) -const pr_kind: number = 318 - let selected_repo_id: string = '' let authors_unsubscribers: Unsubscriber[] = [] @@ -41,23 +40,58 @@ export const ensurePRSummaries = async (repo_id: string) => { const repo = await ensureSelectedRepo(repo_id) sub = ndk.subscribe( + [ + { + kinds: [pr_kind], + '#a': repo.maintainers.map( + (m) => `${repo_kind}:${m.hexpubkey}:${repo.repo_id}` + ), + limit: 50, + }, + { + kinds: [patch_kind], + '#a': repo.maintainers.map( + (m) => `${repo_kind}:${m.hexpubkey}:${repo.repo_id}` + ), + limit: 50, + }, + ], { - kinds: [pr_kind], - '#r': [`r-${repo_id}`], - limit: 50, + closeOnEose: true, }, - { - closeOnEose: false, - }, - NDKRelaySet.fromRelayUrls(repo.relays, ndk) + repo.relays.length > 0 + ? NDKRelaySet.fromRelayUrls(repo.relays, ndk) + : undefined ) sub.on('event', (event: NDKEvent) => { try { - if ( - event.kind == pr_kind && - event.getMatchingTags('r').find((t) => t[1] === `r-${repo_id}`) - ) { + if (event.kind == patch_kind && event.content.length > 0) { + pr_summaries.update((prs) => { + return { + ...prs, + summaries: [ + ...prs.summaries, + { + ...summary_defaults, + id: event.id, + repo_id: repo_id, + title: extractPatchMessage(event.content) || '', + descritpion: event.tagValue('description') || '', + created_at: event.created_at, + comments: 0, + author: { + hexpubkey: event.pubkey, + loading: true, + npub: '', + }, + loading: false, + }, + ], + } + }) + } + if (event.kind == pr_kind) { pr_summaries.update((prs) => { return { ...prs, @@ -81,21 +115,21 @@ export const ensurePRSummaries = async (repo_id: string) => { ], } }) + } - authors_unsubscribers.push( - ensureUser(event.pubkey).subscribe((u: User) => { - pr_summaries.update((prs) => { - return { - ...prs, - summaries: prs.summaries.map((o) => ({ - ...o, - author: u, - })), - } - }) + authors_unsubscribers.push( + ensureUser(event.pubkey).subscribe((u: User) => { + pr_summaries.update((prs) => { + return { + ...prs, + summaries: prs.summaries.map((o) => ({ + ...o, + author: event.pubkey === o.author.hexpubkey ? u : o.author, + })), + } }) - ) - } + }) + ) } catch {} }) sub.on('eose', () => { diff --git a/src/routes/repo/[repo_id]/+page.ts b/src/routes/repo/[repo_id]/+page.ts index 6afa119..4559657 100644 --- a/src/routes/repo/[repo_id]/+page.ts +++ b/src/routes/repo/[repo_id]/+page.ts @@ -1,5 +1,5 @@ export const load = ({ params }) => { return { - repo_id: params.repo_id, + repo_id: decodeURIComponent(params.repo_id), } }