your personal website on atproto - mirror blento.app
at map 40 lines 1.2 kB view raw
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' };