diff --git a/src/lib/components/PublicationCard.svelte b/src/lib/components/PublicationCard.svelte index 80949bd..a0824c0 100644 --- a/src/lib/components/PublicationCard.svelte +++ b/src/lib/components/PublicationCard.svelte @@ -2,12 +2,16 @@ import { getContext } from "svelte"; import { createQuery } from "@tanstack/svelte-query"; import type { QuicksliceClient } from "quickslice-client-js"; - import { parseAtUri, resolveHandle, type MiniDoc, type PublicationNode } from "$lib/utils"; + import { parseAtUri, resolveHandle, type MiniDoc, type PublicationNode, type SubscriptionNode } from "$lib/utils"; const user = getContext("user") as MiniDoc; const atclient = getContext("atclient") as QuicksliceClient; - let { publication, showEmpty = false }: { publication: PublicationNode, showEmpty?: boolean } = $props(); + let { publication, showEmpty = false }: { + publication: PublicationNode & { viewerSiteStandardGraphSubscriptionViaPublication?: SubscriptionNode | null }, showEmpty?: boolean + } = $props(); + + const { rkey: pubRkey } = parseAtUri(publication.uri); let disableSubscribeButton = $state(false); let isSubscribeButtonHovered = $state(false); @@ -44,34 +48,11 @@ }, })); - const subscriptionQuery = createQuery(() => ({ - queryKey: ["isSubscribed", publication.uri, user && user.did], - queryFn: async () => { - if (!user.did) { - return { records: [] } - } - const constellationUrl = new URL("https://constellation.microcosm.blue/xrpc/blue.microcosm.links.getBacklinks"); - constellationUrl.searchParams.set("subject", publication.uri); - constellationUrl.searchParams.set("source", "site.standard.graph.subscription:publication"); - constellationUrl.searchParams.set("did", user.did); - const response = await fetch(constellationUrl, { - headers: { - "Accept": "application/json" - } - }); - - - const json = await response.json() as { records: { did: string, collection: string, rkey: string }[] }; - return json; - }, - select: (data) => data.records[0] && data.records[0].rkey - })); - let documents = $derived(countQuery.data?.documents || 0); let subscribers = $derived(countQuery.data?.subscribers || 0); - let subscriptionRkey = $derived(subscriptionQuery.data); - let blobSyncUrl = $derived((`${miniDocQuery.data?.pds}/xrpc/com.atproto.sync.getBlob?did=${publication.did}&cid=${publication.value.icon?.ref.$link}`)); - const theme = publication.value.basicTheme || { + let subscriptionRkey = $derived(parseAtUri(publication.viewerSiteStandardGraphSubscriptionViaPublication?.uri || "").rkey); + let blobSyncUrl = $derived(`${miniDocQuery.data?.pds}/xrpc/com.atproto.sync.getBlob?did=${publication.did}&cid=${publication.icon?.ref}`); + const theme = publication.basicTheme || { $type: "site.standard.theme.basic", background: { $type: "site.standard.theme.color#rgb", @@ -167,15 +148,15 @@ `} >
- {publication.value.description} + {publication.description}