import {View, ViewProps} from "react-native"; import {Image} from "expo-image"; import {MaterialCommunityIcons} from "@expo/vector-icons"; import {Text} from "@/components/common/Text"; import {useEffect, useMemo, useState} from "react"; import {MovieResult, Results, TvResult} from "@/utils/jellyseerr/server/models/Search"; import {MediaStatus, MediaType} from "@/utils/jellyseerr/server/constants/media"; import {useJellyseerr} from "@/hooks/useJellyseerr"; import {hasPermission, Permission} from "@/utils/jellyseerr/server/lib/permissions"; import {TouchableJellyseerrRouter} from "@/components/common/JellyseerrItemRouter"; import JellyseerrIconStatus from "@/components/icons/JellyseerrIconStatus"; interface Props extends ViewProps { item: MovieResult | TvResult; } const JellyseerrPoster: React.FC = ({ item, ...props }) => { const {jellyseerrUser, jellyseerrApi} = useJellyseerr(); // const imageSource = const imageSrc = useMemo(() => item.posterPath ? `https://image.tmdb.org/t/p/w300_and_h450_face${item.posterPath}` : jellyseerrApi?.axios?.defaults.baseURL + `/images/overseerr_poster_not_found_logo_top.png`, [item, jellyseerrApi] ) const title = useMemo(() => item.mediaType === MediaType.MOVIE ? item.title : item.name, [item]) const releaseYear = useMemo(() => new Date(item.mediaType === MediaType.MOVIE ? item.releaseDate : item.firstAirDate).getFullYear(), [item] ) const showRequestButton = useMemo(() => jellyseerrUser && hasPermission( [ Permission.REQUEST, item.mediaType === 'movie' ? Permission.REQUEST_MOVIE : Permission.REQUEST_TV, ], jellyseerrUser.permissions, {type: 'or'} ), [item, jellyseerrUser] ) const canRequest = useMemo(() => { const status = item?.mediaInfo?.status return showRequestButton && !status || status === MediaStatus.UNKNOWN }, [item]) return ( {title} {releaseYear} ) } export default JellyseerrPoster;