diff --git a/src/modules/common/MediaDisplay.tsx b/src/modules/common/MediaDisplay.tsx index 3cb7d8931..05a2aae25 100644 --- a/src/modules/common/MediaDisplay.tsx +++ b/src/modules/common/MediaDisplay.tsx @@ -9,9 +9,10 @@ import { ScrollArea, createStyles, Tooltip, + Button, } from '@mantine/core'; import { useMediaQuery } from '@mantine/hooks'; -import { IconLink, IconPlayerPlay } from '@tabler/icons'; +import { IconLink } from '@tabler/icons'; import { useConfig } from '../../tools/state'; import { serviceItem } from '../../tools/types'; @@ -20,6 +21,7 @@ export interface IMedia { imdbId?: any; artist?: string; title: string; + voteAverage?: string; poster?: string; genres: string[]; seasonNumber?: number; @@ -55,50 +57,48 @@ export function MediaDisplay(props: { media: IMedia }) { alt={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.artist && ( - window.open(media.plexUrl) + : () => { + // TODO: implement overseerr media requests + throw new Error('Need to implement media reqests'); + } + } > - New release from {media.artist} - + {media.plexUrl ? 'Available on Plex' : 'Request'} + )} - {(media.episodeNumber || media.seasonNumber) && ( - - Season {media.seasonNumber} {media.episodeNumber && `episode ${media.episodeNumber}`} - + {media.imdbId && ( + + + + + )} diff --git a/src/modules/overseerr/OverseerrMediaDisplay.tsx b/src/modules/overseerr/OverseerrMediaDisplay.tsx index a81416bfd..0af4c31a4 100644 --- a/src/modules/overseerr/OverseerrMediaDisplay.tsx +++ b/src/modules/overseerr/OverseerrMediaDisplay.tsx @@ -12,6 +12,7 @@ export default function OverseerrMediaDisplay(props: any) { seasonNumber: media.mediaInfo?.seasons.length, plexUrl: media.mediaInfo?.plexUrl, imdbId: media.mediaInfo?.imdbId, + ...media, }} /> ); diff --git a/src/modules/search/SearchModule.tsx b/src/modules/search/SearchModule.tsx index 2cff9a7ae..9911fc04b 100644 --- a/src/modules/search/SearchModule.tsx +++ b/src/modules/search/SearchModule.tsx @@ -41,6 +41,7 @@ export default function SearchBar(props: any) { const queryUrl = config.settings.searchUrl ?? 'https://www.google.com/search?q='; const [OverseerrResults, setOverseerrResults] = useState([]); + const [loading, setLoading] = useState(false); const [icon, setIcon] = useState(); const [results, setResults] = useState([]); const [opened, setOpened] = useState(false); @@ -82,7 +83,9 @@ export default function SearchBar(props: any) { ) .then((res) => { setOverseerrResults(res.data.results ?? []); + setLoading(false); }); + setLoading(true); } else { setOverseerrResults([]); axios @@ -142,10 +145,9 @@ export default function SearchBar(props: any) { })} > 0 && opened} position="bottom" placement="start" - withArrow radius="md" trapFocus={false} transition="pop-bottom-right"