[READ-ONLY] Mirror of https://github.com/flo-bit/atmo-garden. atmo.garden
0

Configure Feed

Select the types of activity you want to include in your feed.

atmo-garden / src / lib / components / embed / index.ts
1.4 kB 46 lines
1export type { 2 ImageData, 3 EmbedImageData, 4 EmbedExternalData, 5 EmbedVideoData, 6 EmbedRecord, 7 EmbedRecordData, 8 UnknownEmbed, 9 Embed 10} from './types'; 11 12export { default as EmbedImage } from './Image.svelte'; 13export { default as EmbedImages } from './Images.svelte'; 14export { default as EmbedExternal } from './External.svelte'; 15export { default as EmbedVideo } from './Video.svelte'; 16export { default as EmbedQuotedPost } from './QuotedPost.svelte'; 17export { default as EmbedRouter } from './Embed.svelte'; 18 19import type { Embed } from './types'; 20 21/** 22 * Attaches onclick/onclickhandle callbacks to record embeds (quoted posts). 23 * `navigate` is called with (handle, rkey) extracted from the quoted post's href. 24 * `navigateToProfile` is called with a handle. 25 */ 26export function wireEmbedClicks( 27 embeds: Embed[], 28 navigate: (handle: string, rkey: string) => void, 29 navigateToProfile: (handle: string) => void 30): Embed[] { 31 for (const embed of embeds) { 32 if (embed.type === 'record' && embed.record) { 33 embed.record.onclick = (_data, href) => { 34 if (href) { 35 const parts = href.split('/'); 36 const handle = parts[parts.length - 3]; 37 const rkey = parts[parts.length - 1]; 38 navigate(handle, rkey); 39 } 40 }; 41 embed.record.onclickhandle = (handle) => navigateToProfile(handle); 42 embed.record.handleHref = (handle) => `/profile/${handle}`; 43 } 44 } 45 return embeds; 46}