|
|
|
@ -2,23 +2,25 @@ import React from 'react';
|
|
|
|
|
import { useSelector } from 'react-redux';
|
|
|
|
|
import Icon from 'Components/Icon';
|
|
|
|
|
import { icons } from 'Helpers/Props';
|
|
|
|
|
import Movie from 'Movie/Movie';
|
|
|
|
|
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
|
|
|
|
import formatDate from 'Utilities/Date/formatDate';
|
|
|
|
|
import getRelativeDate from 'Utilities/Date/getRelativeDate';
|
|
|
|
|
import translate from 'Utilities/String/translate';
|
|
|
|
|
import styles from './MovieReleaseDates.css';
|
|
|
|
|
|
|
|
|
|
interface MovieReleaseDatesProps {
|
|
|
|
|
inCinemas?: string;
|
|
|
|
|
digitalRelease?: string;
|
|
|
|
|
physicalRelease?: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function MovieReleaseDates(props: MovieReleaseDatesProps) {
|
|
|
|
|
const { inCinemas, digitalRelease, physicalRelease } = props;
|
|
|
|
|
type MovieReleaseDatesProps = Pick<
|
|
|
|
|
Movie,
|
|
|
|
|
'inCinemas' | 'digitalRelease' | 'physicalRelease'
|
|
|
|
|
>;
|
|
|
|
|
|
|
|
|
|
const { showRelativeDates, shortDateFormat, timeFormat } = useSelector(
|
|
|
|
|
createUISettingsSelector()
|
|
|
|
|
);
|
|
|
|
|
function MovieReleaseDates({
|
|
|
|
|
inCinemas,
|
|
|
|
|
digitalRelease,
|
|
|
|
|
physicalRelease,
|
|
|
|
|
}: MovieReleaseDatesProps) {
|
|
|
|
|
const { showRelativeDates, shortDateFormat, longDateFormat, timeFormat } =
|
|
|
|
|
useSelector(createUISettingsSelector());
|
|
|
|
|
|
|
|
|
|
if (!inCinemas && !physicalRelease && !digitalRelease) {
|
|
|
|
|
return (
|
|
|
|
@ -34,10 +36,16 @@ function MovieReleaseDates(props: MovieReleaseDatesProps) {
|
|
|
|
|
return (
|
|
|
|
|
<>
|
|
|
|
|
{inCinemas ? (
|
|
|
|
|
<div title={translate('InCinemas')}>
|
|
|
|
|
<div
|
|
|
|
|
title={`${translate('InCinemas')}: ${formatDate(
|
|
|
|
|
inCinemas,
|
|
|
|
|
longDateFormat
|
|
|
|
|
)}`}
|
|
|
|
|
>
|
|
|
|
|
<div className={styles.dateIcon}>
|
|
|
|
|
<Icon name={icons.IN_CINEMAS} />
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{getRelativeDate({
|
|
|
|
|
date: inCinemas,
|
|
|
|
|
shortDateFormat,
|
|
|
|
@ -49,10 +57,16 @@ function MovieReleaseDates(props: MovieReleaseDatesProps) {
|
|
|
|
|
) : null}
|
|
|
|
|
|
|
|
|
|
{digitalRelease ? (
|
|
|
|
|
<div title={translate('DigitalRelease')}>
|
|
|
|
|
<div
|
|
|
|
|
title={`${translate('DigitalRelease')}: ${formatDate(
|
|
|
|
|
digitalRelease,
|
|
|
|
|
longDateFormat
|
|
|
|
|
)}`}
|
|
|
|
|
>
|
|
|
|
|
<div className={styles.dateIcon}>
|
|
|
|
|
<Icon name={icons.MOVIE_FILE} />
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{getRelativeDate({
|
|
|
|
|
date: digitalRelease,
|
|
|
|
|
shortDateFormat,
|
|
|
|
@ -64,10 +78,16 @@ function MovieReleaseDates(props: MovieReleaseDatesProps) {
|
|
|
|
|
) : null}
|
|
|
|
|
|
|
|
|
|
{physicalRelease ? (
|
|
|
|
|
<div title={translate('PhysicalRelease')}>
|
|
|
|
|
<div
|
|
|
|
|
title={`${translate('PhysicalRelease')}: ${formatDate(
|
|
|
|
|
physicalRelease,
|
|
|
|
|
longDateFormat
|
|
|
|
|
)}`}
|
|
|
|
|
>
|
|
|
|
|
<div className={styles.dateIcon}>
|
|
|
|
|
<Icon name={icons.DISC} />
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{getRelativeDate({
|
|
|
|
|
date: physicalRelease,
|
|
|
|
|
shortDateFormat,
|
|
|
|
|