import React from 'react' import {View} from 'react-native' import {Image} from 'expo-image' import {AppBskyGraphDefs, AppBskyGraphStarterpack, AtUri} from '@atproto/api' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useQueryClient} from '@tanstack/react-query' import {sanitizeHandle} from '#/lib/strings/handles' import {getStarterPackOgCard} from '#/lib/strings/starter-pack' import {precacheResolvedUri} from '#/state/queries/resolve-uri' import {precacheStarterPack} from '#/state/queries/starter-packs' import {useSession} from '#/state/session' import {atoms as a, useTheme} from '#/alf' import {StarterPack} from '#/components/icons/StarterPack' import {Link as BaseLink, LinkProps as BaseLinkProps} from '#/components/Link' import {Text} from '#/components/Typography' export function Default({ starterPack, }: { starterPack?: AppBskyGraphDefs.StarterPackViewBasic }) { if (!starterPack) return null return ( ) } export function Notification({ starterPack, }: { starterPack?: AppBskyGraphDefs.StarterPackViewBasic }) { if (!starterPack) return null return ( ) } export function Card({ starterPack, noIcon, noDescription, }: { starterPack: AppBskyGraphDefs.StarterPackViewBasic noIcon?: boolean noDescription?: boolean }) { const {record, creator, joinedAllTimeCount} = starterPack const {_} = useLingui() const t = useTheme() const {currentAccount} = useSession() if (!AppBskyGraphStarterpack.isRecord(record)) { return null } return ( {!noIcon ? : null} {record.name} {creator?.did === currentAccount?.did ? _(msg`Starter pack by you`) : _(msg`Starter pack by ${sanitizeHandle(creator.handle, '@')}`)} {!noDescription && record.description ? ( {record.description} ) : null} {!!joinedAllTimeCount && joinedAllTimeCount >= 50 && ( {joinedAllTimeCount} users have joined! )} ) } export function Link({ starterPack, children, }: { starterPack: AppBskyGraphDefs.StarterPackViewBasic onPress?: () => void children: BaseLinkProps['children'] }) { const {_} = useLingui() const queryClient = useQueryClient() const {record} = starterPack const {rkey, handleOrDid} = React.useMemo(() => { const rkey = new AtUri(starterPack.uri).rkey const {creator} = starterPack return {rkey, handleOrDid: creator.handle || creator.did} }, [starterPack]) if (!AppBskyGraphStarterpack.isRecord(record)) { return null } return ( { precacheResolvedUri( queryClient, starterPack.creator.handle, starterPack.creator.did, ) precacheStarterPack(queryClient, starterPack) }} style={[a.flex_col, a.align_start]}> {children} ) } export function Embed({ starterPack, }: { starterPack: AppBskyGraphDefs.StarterPackViewBasic }) { const t = useTheme() const imageUri = getStarterPackOgCard(starterPack) return ( ) }