@ -2,6 +2,7 @@ import React from 'react';
import { defineMessages , useIntl } from 'react-intl' ;
import { MediaStatus } from '../../../server/constants/media' ;
import Spinner from '../../assets/spinner.svg' ;
import useSettings from '../../hooks/useSettings' ;
import { Permission , useUser } from '../../hooks/useUser' ;
import globalMessages from '../../i18n/globalMessages' ;
import Badge from '../Common/Badge' ;
@ -32,16 +33,46 @@ const StatusBadge: React.FC<StatusBadgeProps> = ({
} ) = > {
const intl = useIntl ( ) ;
const { hasPermission } = useUser ( ) ;
const settings = useSettings ( ) ;
const manageLink =
tmdbId && mediaType && hasPermission ( Permission . MANAGE_REQUESTS )
? ` / ${ mediaType } / ${ tmdbId } ?manage=1 `
: undefined ;
let mediaLink : string | undefined ;
if (
mediaType &&
plexUrl &&
hasPermission (
is4k
? [
Permission . REQUEST_4K ,
mediaType === 'movie'
? Permission . REQUEST_4K_MOVIE
: Permission . REQUEST_4K_TV ,
]
: [
Permission . REQUEST ,
mediaType === 'movie'
? Permission . REQUEST_MOVIE
: Permission . REQUEST_TV ,
] ,
{
type : 'or' ,
}
) &&
( ! is4k ||
( mediaType === 'movie'
? settings . currentSettings . movie4kEnabled
: settings . currentSettings . series4kEnabled ) )
) {
mediaLink = plexUrl ;
} else if ( hasPermission ( Permission . MANAGE_REQUESTS ) ) {
mediaLink =
mediaType && tmdbId ? ` / ${ mediaType } / ${ tmdbId } ?manage=1 ` : serviceUrl ;
}
switch ( status ) {
case MediaStatus . AVAILABLE :
return (
< Badge badgeType = "success" href = { plexUrl } >
< Badge badgeType = "success" href = { mediaLink } >
< div className = "flex items-center" >
< span >
{ intl . formatMessage ( is4k ? messages.status4k : messages.status , {
@ -55,7 +86,7 @@ const StatusBadge: React.FC<StatusBadgeProps> = ({
case MediaStatus . PARTIALLY_AVAILABLE :
return (
< Badge badgeType = "success" href = { plexUrl } >
< Badge badgeType = "success" href = { mediaLink } >
< div className = "flex items-center" >
< span >
{ intl . formatMessage ( is4k ? messages.status4k : messages.status , {
@ -69,7 +100,7 @@ const StatusBadge: React.FC<StatusBadgeProps> = ({
case MediaStatus . PROCESSING :
return (
< Badge badgeType = "primary" href = { m anage Link ? ? serviceUrl } >
< Badge badgeType = "primary" href = { m edi aLink} >
< div className = "flex items-center" >
< span >
{ intl . formatMessage ( is4k ? messages.status4k : messages.status , {
@ -85,7 +116,7 @@ const StatusBadge: React.FC<StatusBadgeProps> = ({
case MediaStatus . PENDING :
return (
< Badge badgeType = "warning" href = { m anage Link} >
< Badge badgeType = "warning" href = { m edi aLink} >
{ intl . formatMessage ( is4k ? messages.status4k : messages.status , {
status : intl.formatMessage ( globalMessages . pending ) ,
} ) }