From 901b68732f932082f0fe6c2959a80b3971dee335 Mon Sep 17 00:00:00 2001 From: ajnart Date: Tue, 9 Aug 2022 17:04:19 +0200 Subject: [PATCH] :sparkles: Add open result to overseerr button --- src/modules/common/MediaDisplay.tsx | 67 +++++++++++++++++++---------- 1 file changed, 45 insertions(+), 22 deletions(-) diff --git a/src/modules/common/MediaDisplay.tsx b/src/modules/common/MediaDisplay.tsx index f1a193e7f..2e4f2632a 100644 --- a/src/modules/common/MediaDisplay.tsx +++ b/src/modules/common/MediaDisplay.tsx @@ -1,6 +1,7 @@ -import { Badge, Button, Group, Image, Stack, Text, Title } from '@mantine/core'; +import { ActionIcon, Badge, Button, Group, Image, Stack, Text, Title } from '@mantine/core'; import { IconDownload, IconExternalLink, IconPlayerPlay } from '@tabler/icons'; import { useState } from 'react'; +import { useColorTheme } from '../../tools/color'; import { useConfig } from '../../tools/state'; import { serviceItem } from '../../tools/types'; import { RequestModal } from '../overseerr/RequestModal'; @@ -9,6 +10,7 @@ import { Result } from '../overseerr/SearchResult'; export interface IMedia { overview: string; imdbId?: any; + tmdbId?: any; artist?: string; title?: string; type: 'movie' | 'tvshow' | 'book' | 'music' | 'overseer'; @@ -24,19 +26,27 @@ export interface IMedia { export function OverseerrMediaDisplay(props: any) { const { media }: { media: Result } = props; + const { config } = useConfig(); + const service = config.services.find( + (service) => service.type === 'Overseerr' || service.type === 'Jellyseerr' + ); + return ( @@ -66,7 +76,7 @@ export function ReadarrMediaDisplay(props: any) { artist: media.authorTitle, overview: `new book release by ${media.authorTitle}`, genres: media.genres ?? [], - voteAverage: media.ratings.value.toString() ?? undefined, + voteAverage: media.ratings.value.toString(), type: 'book', }} /> @@ -111,9 +121,9 @@ export function RadarrMediaDisplay(props: any) { title: media.title ?? media.originalTitle, overview: media.overview ?? '', genres: media.genres ?? [], - poster: media.images.find((image: any) => image.coverType === 'poster')?.url ?? undefined, - voteAverage: media.ratings.tmdb.value.toString() ?? undefined, - imdbId: media.imdbId ?? undefined, + poster: media.images.find((image: any) => image.coverType === 'poster')?.url, + voteAverage: media.ratings.tmdb.value.toString(), + imdbId: media.imdbId, type: 'movie', }} /> @@ -131,13 +141,13 @@ export function SonarrMediaDisplay(props: any) { ...media, genres: media.series.genres ?? [], overview: media.overview ?? media.series.overview ?? '', - title: media.series.title ?? undefined, + title: media.series.title, poster: poster ? poster.url : undefined, - episodeNumber: media.episodeNumber ?? undefined, - seasonNumber: media.seasonNumber ?? undefined, - episodetitle: media.title ?? undefined, - imdbId: media.series.imdbId ?? undefined, - voteAverage: media.series.ratings.value.toString() ?? undefined, + episodeNumber: media.episodeNumber, + seasonNumber: media.seasonNumber, + episodetitle: media.title, + imdbId: media.series.imdbId, + voteAverage: media.series.ratings.value.toString(), type: 'tvshow', }} /> @@ -146,6 +156,8 @@ export function SonarrMediaDisplay(props: any) { export function MediaDisplay({ media }: { media: IMedia }) { const [opened, setOpened] = useState(false); + const { secondaryColor } = useColorTheme(); + return ( @@ -185,7 +197,7 @@ export function MediaDisplay({ media }: { media: IMedia }) { {media.overview} - + {media.plexUrl && ( + + )} - {media.type === 'overseer' && ( + {media.overseerrId && ( + + + + )} + {media.type === 'overseer' && !media.overseerrResult?.mediaInfo?.mediaAddedAt && ( <>