Browse Source

refactor: replace PRSummary with PRFull

create PRFull in preparation for adding related events
master
DanConwayDev 2 years ago
parent
commit
cca93434b0
No known key found for this signature in database
GPG Key ID: 68E15486D73F75E1
  1. 11
      src/lib/components/prs/type.ts
  2. 71
      src/lib/stores/PR.ts
  3. 6
      src/routes/repo/[repo_id]/pr/[pr_id]/+page.svelte

11
src/lib/components/prs/type.ts

@ -32,3 +32,14 @@ export const summaries_defaults: PRSummaries = { @@ -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,
};

71
src/lib/stores/PR.ts

@ -1,41 +1,40 @@ @@ -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<PRSummary> = writable({ ...summary_defaults });
export let selected_pr_full: Writable<PRFull> = 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) => { @@ -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,
};
});

6
src/routes/repo/[repo_id]/pr/[pr_id]/+page.svelte

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
<script lang="ts">
import { ensureSelectedRepo, selected_repo } from "$lib/stores/repo";
import { ensurePRSummary, selected_pr_summary } from "$lib/stores/PR";
import { ensurePRFull, selected_pr_full } from "$lib/stores/PR";
import PrHeader from "$lib/components/prs/PRHeader.svelte";
import RepoHeader from "$lib/components/repo/RepoHeader.svelte";
@ -13,11 +13,11 @@ @@ -13,11 +13,11 @@
let pr_id = data.pr_id;
ensureSelectedRepo(repo_id);
ensurePRSummary(repo_id, pr_id);
ensurePRFull(repo_id, pr_id);
</script>
<RepoHeader {...$selected_repo} />
<PrHeader {...$selected_pr_summary} />
<PrHeader {...$selected_pr_full.summary} />
<div class="flex">
<div class="w-2/3 mx-2">

Loading…
Cancel
Save