import { apiAtom } from "@/providers/JellyfinProvider"; import { getItemImage } from "@/utils/getItemImage"; import { Ionicons } from "@expo/vector-icons"; import { BaseItemDto } from "@jellyfin/sdk/lib/generated-client/models"; import { Image, ImageProps } from "expo-image"; import { useAtom } from "jotai"; import {FC, useMemo} from "react"; import { View, ViewProps } from "react-native"; interface Props extends ImageProps { item: BaseItemDto; variant?: | "Primary" | "Backdrop" | "ParentBackdrop" | "ParentLogo" | "Logo" | "AlbumPrimary" | "SeriesPrimary" | "Screenshot" | "Thumb"; quality?: number; width?: number; onError?: () => void; } export const ItemImage: FC = ({ item, variant = "Primary", quality = 90, width = 1000, onError, ...props }) => { const [api] = useAtom(apiAtom); const source = useMemo(() => { if (!api) { onError && onError(); return; } return getItemImage({ item, api, variant, quality, width, }); }, [api, item, quality, variant, width]); // return placeholder icon if no source if (!source?.uri) return ( ); return ( ); };