diff --git a/src/lib/stores/PR.ts b/src/lib/stores/PR.ts index 3a6d8ed..f8be872 100644 --- a/src/lib/stores/PR.ts +++ b/src/lib/stores/PR.ts @@ -9,8 +9,10 @@ import { isPRStatus, type PRStatus, } from '$lib/components/prs/type' -import { pr_kind, pr_status_kind } from '$lib/kinds' +import { pr_status_kind } from '$lib/kinds' import { ensureSelectedRepo } from './repo' +import { extractPatchMessage } from '$lib/components/events/content/utils' +import { goto } from '$app/navigation' export const selected_pr_full: Writable = writable({ ...full_defaults }) @@ -62,30 +64,33 @@ export const ensurePRFull = (repo_id: string, pr_id: string) => { sub = ndk.subscribe( { ids: [pr_id], - kinds: [pr_kind], - '#r': [`r-${repo_id}`], limit: 50, }, { - closeOnEose: false, + closeOnEose: true, }, - 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}`) && - event.id == pr_id - ) { + if (event.id == pr_id) { + const event_repo_id = event.tagValue('a')?.split(':')[2] + if (event_repo_id && event_repo_id !== repo_id) { + goto(`/repo/${encodeURIComponent(event_repo_id)}/pr/${pr_id}`) + } selected_pr_full.update((full) => { return { ...full, pr_event: event, summary: { ...full.summary, - title: event.tagValue('name') || '', + title: + event.tagValue('name') || + extractPatchMessage(event.content) || + '', descritpion: event.tagValue('description') || '', created_at: event.created_at, comments: 0, @@ -140,7 +145,9 @@ export const ensurePRFull = (repo_id: string, pr_id: string) => { { closeOnEose: false, }, - NDKRelaySet.fromRelayUrls(repo.relays, ndk) + repo.relays.length > 0 + ? NDKRelaySet.fromRelayUrls(repo.relays, ndk) + : undefined ) sub_replies.on('event', (event: NDKEvent) => { diff --git a/src/routes/repo/[repo_id]/pr/[pr_id]/+page.svelte b/src/routes/repo/[repo_id]/pr/[pr_id]/+page.svelte index 122003a..b8d0c79 100644 --- a/src/routes/repo/[repo_id]/pr/[pr_id]/+page.svelte +++ b/src/routes/repo/[repo_id]/pr/[pr_id]/+page.svelte @@ -12,13 +12,15 @@ import Container from '$lib/components/Container.svelte' import ParsedContent from '$lib/components/events/content/ParsedContent.svelte' import Compose from '$lib/wrappers/Compose.svelte' + import { patch_kind } from '$lib/kinds' + import Patch from '$lib/components/events/content/Patch.svelte' export let data: { repo_id: string pr_id: string } - let repo_id = decodeURI(data.repo_id) + let repo_id = data.repo_id let pr_id = data.pr_id ensureSelectedRepo(repo_id) @@ -62,7 +64,14 @@
- + {#if $selected_pr_full.pr_event && $selected_pr_full.pr_event.kind === patch_kind} + + {:else} + + {/if}
+ {#each $selected_pr_replies as event} {/each} diff --git a/src/routes/repo/[repo_id]/pr/[pr_id]/+page.ts b/src/routes/repo/[repo_id]/pr/[pr_id]/+page.ts index 418d202..701c3b6 100644 --- a/src/routes/repo/[repo_id]/pr/[pr_id]/+page.ts +++ b/src/routes/repo/[repo_id]/pr/[pr_id]/+page.ts @@ -1,6 +1,6 @@ export const load = ({ params }) => { return { - repo_id: params.repo_id, + repo_id: decodeURIComponent(params.repo_id), pr_id: params.pr_id, } }