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 @@ `} >
- {#if publication.value.icon} + {#if publication.icon} {publication.value.name} {/if}

- {publication.value.name} + {publication.name}

- {publication.value.description} + {publication.description}

-
↗ -
+
+ {#if user} + 🏠 Home + {:else} + + + {/if}
                                                                                                
diff --git a/src/routes/[handle]/[pubRkey]/+page.svelte b/src/routes/[handle]/[pubRkey]/+page.svelte
deleted file mode 100644
index 282e556..0000000
--- a/src/routes/[handle]/[pubRkey]/+page.svelte
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-

{handle} {pubRkey}

diff --git a/src/routes/explore/+page.svelte b/src/routes/explore/+page.svelte index 71aedf9..655dfe0 100644 --- a/src/routes/explore/+page.svelte +++ b/src/routes/explore/+page.svelte @@ -1,6 +1,6 @@