import React from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { MediaStatus } from '../../../server/constants/media'; import Spinner from '../../assets/spinner.svg'; import globalMessages from '../../i18n/globalMessages'; import Badge from '../Common/Badge'; const messages = defineMessages({ status4k: '4K {status}', }); interface StatusBadgeProps { status?: MediaStatus; is4k?: boolean; inProgress?: boolean; plexUrl?: string; plexUrl4k?: string; } const StatusBadge: React.FC = ({ status, is4k = false, inProgress = false, plexUrl, plexUrl4k, }) => { const intl = useIntl(); if (is4k) { switch (status) { case MediaStatus.AVAILABLE: if (plexUrl4k) { return ( {intl.formatMessage(messages.status4k, { status: intl.formatMessage(globalMessages.available), })} ); } return ( {intl.formatMessage(messages.status4k, { status: intl.formatMessage(globalMessages.available), })} ); case MediaStatus.PARTIALLY_AVAILABLE: if (plexUrl4k) { return ( {intl.formatMessage(messages.status4k, { status: intl.formatMessage(globalMessages.partiallyavailable), })} ); } return ( {intl.formatMessage(messages.status4k, { status: intl.formatMessage(globalMessages.partiallyavailable), })} ); case MediaStatus.PROCESSING: return (
{intl.formatMessage(messages.status4k, { status: inProgress ? intl.formatMessage(globalMessages.processing) : intl.formatMessage(globalMessages.requested), })} {inProgress && }
); case MediaStatus.PENDING: return ( {intl.formatMessage(messages.status4k, { status: intl.formatMessage(globalMessages.pending), })} ); default: return null; } } switch (status) { case MediaStatus.AVAILABLE: if (plexUrl) { return (
{intl.formatMessage(globalMessages.available)} {inProgress && }
); } return (
{intl.formatMessage(globalMessages.available)} {inProgress && }
); case MediaStatus.PARTIALLY_AVAILABLE: if (plexUrl) { return (
{intl.formatMessage(globalMessages.partiallyavailable)} {inProgress && }
); } return (
{intl.formatMessage(globalMessages.partiallyavailable)} {inProgress && }
); case MediaStatus.PROCESSING: return (
{inProgress ? intl.formatMessage(globalMessages.processing) : intl.formatMessage(globalMessages.requested)} {inProgress && }
); case MediaStatus.PENDING: return ( {intl.formatMessage(globalMessages.pending)} ); default: return null; } }; export default StatusBadge;