import { Image, Group, Title, Badge, Text, ActionIcon, Anchor, ScrollArea, createStyles, } from '@mantine/core'; import { useMediaQuery } from '@mantine/hooks'; import { IconLink as Link } from '@tabler/icons'; import { useConfig } from '../../tools/state'; import { serviceItem } from '../../tools/types'; export interface IMedia { overview: string; imdbId?: any; artist?: string; title: string; poster?: string; genres: string[]; seasonNumber?: number; plexUrl?: string; episodeNumber?: number; } const useStyles = createStyles((theme) => ({ overview: { [theme.fn.largerThan('sm')]: { width: 400, }, }, })); export function MediaDisplay(props: { media: IMedia }) { const { media }: { media: IMedia } = props; const { classes, cx } = useStyles(); const phone = useMediaQuery('(min-width: 800px)'); return ( {media.poster && ( {media.title} )} {media.title} {media.plexUrl && ( )} {media.plexUrl && ( Available on Plex )} {media.imdbId && ( )} {media.artist && ( New release from {media.artist} )} {(media.episodeNumber || media.seasonNumber) && ( Season {media.seasonNumber} {media.episodeNumber && `episode ${media.episodeNumber}`} )} {media.overview} {media.genres.slice(-5).map((genre: string, i: number) => ( {genre} ))} ); } export function ReadarrMediaDisplay(props: any) { const { media }: { media: any } = props; const { config } = useConfig(); // Find lidarr in services const readarr = config.services.find((service: serviceItem) => service.type === 'Readarr'); // Find a poster CoverType const poster = media.images.find((image: any) => image.coverType === 'cover'); if (!readarr) { return null; } const baseUrl = new URL(readarr.url).origin; // Remove '/' from the end of the lidarr url const fullLink = `${baseUrl}${poster.url}`; // Return a movie poster containting the title and the description return ( ); } export function LidarrMediaDisplay(props: any) { const { media }: { media: any } = props; const { config } = useConfig(); // Find lidarr in services const lidarr = config.services.find((service: serviceItem) => service.type === 'Lidarr'); // Find a poster CoverType const poster = media.images.find((image: any) => image.coverType === 'cover'); if (!lidarr) { return null; } const baseUrl = new URL(lidarr.url).origin; // Remove '/' from the end of the lidarr url const fullLink = poster ? `${baseUrl}${poster.url}` : undefined; // Return a movie poster containting the title and the description return ( ); } export function RadarrMediaDisplay(props: any) { const { media }: { media: any } = props; // Find a poster CoverType const poster = media.images.find((image: any) => image.coverType === 'poster'); // Return a movie poster containting the title and the description return ( ); } export function SonarrMediaDisplay(props: any) { const { media }: { media: any } = props; // Find a poster CoverType const poster = media.series.images.find((image: any) => image.coverType === 'poster'); // Return a movie poster containting the title and the description return ( ); }