From faf7231d015fa3b6784bbce4cf25c5f7fe6baeff Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Thu, 18 Jan 2024 00:00:00 +0000 Subject: [PATCH] fix: clear pr summaries and responses on change prevent bug where PR responses and summaries are added to an incorrect pr or repo after the array has been cleared but before ensureSelectedRepo has returned --- src/lib/stores/PR.ts | 5 +++-- src/lib/stores/PRs.ts | 23 ++++++++--------------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/lib/stores/PR.ts b/src/lib/stores/PR.ts index 34396f5..48c9e29 100644 --- a/src/lib/stores/PR.ts +++ b/src/lib/stores/PR.ts @@ -29,6 +29,9 @@ export let ensurePRFull = (repo_id: string, pr_id: string) => { return; } + if (sub) sub.stop(); + if (sub_replies) sub_replies.stop(); + selected_pr_repo_id = repo_id; selected_pr_id = pr_id; selected_pr_status_date = 0; @@ -50,7 +53,6 @@ export let ensurePRFull = (repo_id: string, pr_id: string) => { new Promise(async (r) => { let repo = await ensureSelectedRepo(repo_id); - if (sub) sub.stop(); sub = ndk.subscribe( { ids: [pr_id], @@ -121,7 +123,6 @@ export let ensurePRFull = (repo_id: string, pr_id: string) => { }); }); - if (sub_replies) sub_replies.stop(); sub_replies = ndk.subscribe( { "#e": [pr_id], diff --git a/src/lib/stores/PRs.ts b/src/lib/stores/PRs.ts index e09bdd9..fe5358d 100644 --- a/src/lib/stores/PRs.ts +++ b/src/lib/stores/PRs.ts @@ -25,27 +25,20 @@ let sub: NDKSubscription; export let ensurePRSummaries = async (repo_id: string) => { if (selected_repo_id == repo_id) return; - if (repo_id == "") return pr_summaries.set({ - id: "", + pr_summaries.set({ + id: repo_id, summaries: [], - loading: false, + loading: repo_id !== "", }); - selected_repo_id = repo_id; - - let repo = await ensureSelectedRepo(repo_id); - - pr_summaries.update(prs => { - return { - ...prs, - id: repo_id, - loading: true, - }; - }); + if (sub) sub.stop(); + if (sub_statuses) sub_statuses.stop(); authors_unsubscribers.forEach(u => u()); authors_unsubscribers = []; - if (sub) sub.stop(); + selected_repo_id = repo_id; + + let repo = await ensureSelectedRepo(repo_id); sub = ndk.subscribe( {