From cca93434b0691037d733312f4ba337db02042d6f Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Wed, 10 Jan 2024 00:00:00 +0000 Subject: [PATCH] refactor: replace PRSummary with PRFull create PRFull in preparation for adding related events --- src/lib/components/prs/type.ts | 11 +++ src/lib/stores/PR.ts | 71 +++++++++++-------- .../repo/[repo_id]/pr/[pr_id]/+page.svelte | 6 +- 3 files changed, 54 insertions(+), 34 deletions(-) diff --git a/src/lib/components/prs/type.ts b/src/lib/components/prs/type.ts index 52ef402..6ca9d52 100644 --- a/src/lib/components/prs/type.ts +++ b/src/lib/components/prs/type.ts @@ -32,3 +32,14 @@ export const summaries_defaults: PRSummaries = { summaries: [], loading: true, }; + +export interface PRFull { + summary: PRSummary; + loading: boolean; +} + +export const full_defaults: PRFull = { + summary: { ...summary_defaults }, + loading: true, +}; + diff --git a/src/lib/stores/PR.ts b/src/lib/stores/PR.ts index 979083d..7d5f43a 100644 --- a/src/lib/stores/PR.ts +++ b/src/lib/stores/PR.ts @@ -1,41 +1,40 @@ import type { NDKEvent } from "@nostr-dev-kit/ndk"; import { writable, type Unsubscriber, type Writable } from "svelte/store" import { ndk } from "./ndk"; -import type { Repo } from "$lib/components/repo/type"; -import { defaults } from "$lib/components/repo/type"; import type { User } from "$lib/components/users/type"; -import { ensureUser, users } from "./users"; -import { summary_defaults, type PRSummary } from "$lib/components/prs/type"; +import { ensureUser } from "./users"; +import { type PRFull, full_defaults } from "$lib/components/prs/type"; let pr_kind: number = 318; -export let selected_pr_summary: Writable = writable({ ...summary_defaults }); +export let selected_pr_full: Writable = writable({ ...full_defaults }); let selected_repo_id: string = ""; let selected_pr_id: string = ""; let pr_summary_author_unsubsriber: Unsubscriber | undefined; -export let ensurePRSummary = (repo_id: string, pr_id: string) => { +export let ensurePRFull = (repo_id: string, pr_id: string) => { if (selected_pr_id == pr_id) return; - if (pr_id == "") return selected_pr_summary.set({ - ...summary_defaults, - }); + if (pr_id == "") return selected_pr_full.set({ ...full_defaults }); selected_repo_id = repo_id; selected_pr_id = pr_id; - selected_pr_summary.update(summary => { + selected_pr_full.update(full => { return { - ...summary, - id: pr_id, - repo_id: repo_id, + ...full, + summary: { + ...full.summary, + id: pr_id, + repo_id: repo_id, + loading: true, + }, loading: true, }; }); if (pr_summary_author_unsubsriber) pr_summary_author_unsubsriber(); pr_summary_author_unsubsriber = undefined; - let sub = ndk.subscribe({ ids: [pr_id], limit: 1, @@ -48,37 +47,47 @@ export let ensurePRSummary = (repo_id: string, pr_id: string) => { && event.id == pr_id ) { - selected_pr_summary.update(summary => { + selected_pr_full.update(full => { return { - ...summary, - title: event.tagValue("name") || "", - created_at: event.created_at, - comments: 0, - author: { - hexpubkey: event.pubkey, - loading: true, - npub: "", - }, - loading: false, + ...full, + summary: { + ...full.summary, + title: event.tagValue("name") || "", + created_at: event.created_at, + comments: 0, + author: { + hexpubkey: event.pubkey, + loading: true, + npub: "", + }, + loading: false, + } }; }); - pr_summary_author_unsubsriber = ensureUser(event.pubkey).subscribe((u: User) => { - selected_pr_summary.update(summary => { + selected_pr_full.update(full => { return { - ...summary, - author: event.pubkey == u.hexpubkey ? u : summary.author, + ...full, + summary: { + ...full.summary, + author: event.pubkey == u.hexpubkey ? u : full.summary.author, + } }; }); }); } } catch { } }); + sub.on("eose", () => { - selected_pr_summary.update(summary => { + selected_pr_full.update(full => { return { - ...summary, + ...full, + summary: { + ...full.summary, + loading: false, + }, loading: false, }; }); 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 85cd85c..ecc2e91 100644 --- a/src/routes/repo/[repo_id]/pr/[pr_id]/+page.svelte +++ b/src/routes/repo/[repo_id]/pr/[pr_id]/+page.svelte @@ -1,6 +1,6 @@ - +