This repository has no description
0

Configure Feed

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

semble / src / webapp / features / platforms / bluesky / components / feedEmbed / FeedEmbed.tsx
1.8 kB 67 lines
1'use client'; 2 3import { AppBskyFeedDefs } from '@atproto/api'; 4import { Avatar, Card, Group, Stack, Text } from '@mantine/core'; 5 6import { getFeedLink } from '../../lib/utils/link'; 7import { useUserSettings } from '@/features/settings/lib/queries/useUserSettings'; 8 9interface Props { 10 feed: AppBskyFeedDefs.GeneratorView; 11} 12 13export default function FeedEmbed(props: Props) { 14 const { settings } = useUserSettings(); 15 16 if (settings.cardView === 'grid') { 17 return ( 18 <Card p={'xs'} withBorder> 19 <Group gap={'xs'} wrap="nowrap"> 20 {props.feed.avatar && ( 21 <Avatar 22 src={props.feed.avatar?.replace('avatar', 'avatar_thumbnail')} 23 alt={props.feed.displayName} 24 /> 25 )} 26 27 <Stack gap={0}> 28 <Text fz={'sm'} fw={500} c={'bright'} lineClamp={1}> 29 {props.feed.displayName} 30 </Text> 31 <Text fz={'sm'} fw={500} c={'gray'} lineClamp={1} span> 32 Feed by @{props.feed.creator.handle} 33 </Text> 34 </Stack> 35 </Group> 36 </Card> 37 ); 38 } 39 40 return ( 41 <Card 42 p={'xs'} 43 component="a" 44 href={getFeedLink(props.feed)} 45 target="_blank" 46 withBorder 47 > 48 <Group gap={'xs'} wrap="nowrap"> 49 {props.feed.avatar && ( 50 <Avatar 51 src={props.feed.avatar?.replace('avatar', 'avatar_thumbnail')} 52 alt={props.feed.displayName} 53 /> 54 )} 55 56 <Stack gap={0}> 57 <Text fz={'sm'} fw={500} c={'bright'} lineClamp={1}> 58 {props.feed.displayName} 59 </Text> 60 <Text fz={'sm'} fw={500} c={'gray'} lineClamp={1} span> 61 Feed by @{props.feed.creator.handle} 62 </Text> 63 </Stack> 64 </Group> 65 </Card> 66 ); 67}