From 0e29374773a8ee882bfc5a842bef47592d59e6c6 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Mon, 29 Jan 2024 07:43:35 +0000 Subject: [PATCH] fix(homepage): remove duplicate repo events temporary solution to users who accidentally ran `ngit claim` on a repo they didn't own ngit will select the version listed in `maintainers.yaml` if present but git together doesn't have a trusted copy of the underlying repo to find the correct `maintainers.yaml` presenting multiple options for the user combined with a staring / following system linked with WoT is the long term plan --- src/lib/components/RepoSummaryCard.svelte | 2 ++ src/lib/wrappers/ReposRecent.svelte | 21 ++++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/lib/components/RepoSummaryCard.svelte b/src/lib/components/RepoSummaryCard.svelte index 812dd1e..5517156 100644 --- a/src/lib/components/RepoSummaryCard.svelte +++ b/src/lib/components/RepoSummaryCard.svelte @@ -4,12 +4,14 @@ description: string; repo_id: string; loading?: boolean; + created_at: number; } export const defaults: Args = { name: "", repo_id: "", description: "", loading: false, + created_at: 0, }; diff --git a/src/lib/wrappers/ReposRecent.svelte b/src/lib/wrappers/ReposRecent.svelte index 5b215a4..a78709d 100644 --- a/src/lib/wrappers/ReposRecent.svelte +++ b/src/lib/wrappers/ReposRecent.svelte @@ -3,6 +3,7 @@ import ReposSummaryList from "$lib/components/ReposSummaryList.svelte"; import { repo_kind } from "$lib/kinds"; import { ndk } from "$lib/stores/ndk"; + import type { NDKEvent } from "@nostr-dev-kit/ndk"; import { onDestroy } from "svelte"; export let limit: number = 10; @@ -13,16 +14,30 @@ kinds: [repo_kind], limit, }); - sub.on("event", (event) => { + sub.on("event", (event: NDKEvent) => { if (repos.length < limit) { try { - if (event.kind == repo_kind) + if ( + event.kind == repo_kind && + !repos.some( + (r) => + r.repo_id == event.replaceableDTag() && + event.created_at && + r.created_at > event.created_at, + ) + ) repos = [ - ...repos, + ...repos.filter( + (r) => + !event.created_at || + r.repo_id !== event.replaceableDTag() || + r.created_at > event.created_at, + ), { name: event.tagValue("name") || "", description: event.tagValue("description") || "", repo_id: event.replaceableDTag(), + created_at: event.created_at || 0, }, ]; } catch {}