import type { BaseItemDto } from "@jellyfin/sdk/lib/generated-client/models"; import { Image } from "expo-image"; import { useRouter } from "expo-router"; import { useAtom } from "jotai"; import React, { useCallback, useMemo } from "react"; import { TouchableOpacity, View } from "react-native"; import { Text } from "@/components/common/Text"; import { apiAtom } from "@/providers/JellyfinProvider"; import { getPrimaryImageUrl } from "@/utils/jellyfin/image/getPrimaryImageUrl"; interface Props { artist: BaseItemDto; size?: number; } export const MusicArtistCard: React.FC = ({ artist, size = 100 }) => { const [api] = useAtom(apiAtom); const router = useRouter(); const imageUrl = useMemo( () => getPrimaryImageUrl({ api, item: artist }), [api, artist], ); const handlePress = useCallback(() => { router.push({ pathname: "/music/artist/[artistId]", params: { artistId: artist.Id! }, }); }, [router, artist.Id]); return ( {imageUrl ? ( ) : ( 👤 )} {artist.Name} ); };