your personal website on atproto - mirror
blento.app
1import { getRecord, listRecords, parseUri } from '$lib/atproto';
2import type { CardDefinition } from '../types';
3import StandardSiteDocumentListCard from './StandardSiteDocumentListCard.svelte';
4
5export const StandardSiteDocumentListCardDefinition = {
6 type: 'publicationList',
7 contentComponent: StandardSiteDocumentListCard,
8 createNew: (card) => {
9 card.w = 4;
10 card.mobileW = 8;
11 card.mobileH = 6;
12 },
13
14 loadData: async (items, { did }) => {
15 const records = await listRecords({ did, collection: 'site.standard.document' });
16
17 const publications: Record<string, string> = {};
18 for (const record of records) {
19 const site = record.value.site as string;
20
21 if (site.startsWith('at://')) {
22 if (!publications[site]) {
23 const siteParts = parseUri(site);
24
25 const publicationRecord = await getRecord(siteParts);
26
27 publications[site] = publicationRecord.value.url as string;
28 }
29
30 record.value.href = publications[site] + record.value.path;
31 } else {
32 record.value.href = site + record.value.path;
33 }
34 }
35
36 return records;
37 },
38
39 sidebarButtonText: 'site.standard.document list'
40} as CardDefinition & { type: 'site.standard.document list' };