Skip to content

Commit 64438b8

Browse files
committed
feat(movierequestmodal): warning for no non-theatrical release (or in the future)
1 parent ff4ab21 commit 64438b8

2 files changed

Lines changed: 41 additions & 0 deletions

File tree

src/components/RequestModal/MovieRequestModal.tsx

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import Modal from '@app/components/Common/Modal';
33
import type { RequestOverrides } from '@app/components/RequestModal/AdvancedRequester';
44
import AdvancedRequester from '@app/components/RequestModal/AdvancedRequester';
55
import QuotaDisplay from '@app/components/RequestModal/QuotaDisplay';
6+
import useSettings from '@app/hooks/useSettings';
67
import { useUser } from '@app/hooks/useUser';
78
import globalMessages from '@app/i18n/globalMessages';
89
import defineMessages from '@app/utils/defineMessages';
@@ -24,6 +25,9 @@ const messages = defineMessages('components.RequestModal', {
2425
requestCancel: 'Request for <strong>{title}</strong> canceled.',
2526
requestmovietitle: 'Request Movie',
2627
requestmovie4ktitle: 'Request Movie in 4K',
28+
requestmovieNonTheattricalInTheFuture:
29+
'The Digital or Physical release is in the future',
30+
requestMovieHasNoNonTheatricalRealease: 'There is no non-Theatrical Release',
2731
edit: 'Edit Request',
2832
approve: 'Approve Request',
2933
cancel: 'Cancel Request',
@@ -61,8 +65,23 @@ const MovieRequestModal = ({
6165
const { data, error } = useSWR<MovieDetails>(`/api/v1/movie/${tmdbId}`, {
6266
revalidateOnMount: true,
6367
});
68+
6469
const intl = useIntl();
6570
const { user, hasPermission } = useUser();
71+
const settings = useSettings();
72+
73+
const discoverRegion = user?.settings?.discoverRegion
74+
? user.settings.discoverRegion
75+
: settings.currentSettings.discoverRegion
76+
? settings.currentSettings.discoverRegion
77+
: 'US';
78+
const nonTheatricalReleases = data?.releases.results
79+
.find((r) => r.iso_3166_1 === discoverRegion)
80+
?.release_dates?.filter((r) => r.type > 3 && r.type < 6);
81+
const nonTheatricalInTheFuture =
82+
(!nonTheatricalReleases || nonTheatricalReleases.length > 0) &&
83+
nonTheatricalReleases?.every((r) => new Date(r.release_date) > new Date());
84+
6685
const { data: quota } = useSWR<QuotaResponse>(
6786
user &&
6887
(!requestOverrides?.user?.id || hasPermission(Permission.MANAGE_USERS))
@@ -335,6 +354,26 @@ const MovieRequestModal = ({
335354
okButtonType={'primary'}
336355
backdrop={`https://image.tmdb.org/t/p/w1920_and_h800_multi_faces/${data?.backdropPath}`}
337356
>
357+
{!nonTheatricalReleases?.length && (
358+
<div className="mt-6">
359+
<Alert
360+
title={intl.formatMessage(
361+
messages.requestMovieHasNoNonTheatricalRealease
362+
)}
363+
type="warning"
364+
/>
365+
</div>
366+
)}
367+
{nonTheatricalInTheFuture && (
368+
<div className="mt-6">
369+
<Alert
370+
title={intl.formatMessage(
371+
messages.requestmovieNonTheattricalInTheFuture
372+
)}
373+
type="warning"
374+
/>
375+
</div>
376+
)}
338377
{hasAutoApprove && !quota?.movie.restricted && (
339378
<div className="mt-6">
340379
<Alert

src/i18n/locale/en.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,8 @@
566566
"components.RequestModal.requesterror": "Something went wrong while submitting the request.",
567567
"components.RequestModal.requestfrom": "{username}'s request is pending approval.",
568568
"components.RequestModal.requestmovie4ktitle": "Request Movie in 4K",
569+
"components.RequestModal.requestmovieNonTheattricalInTheFuture": "The Digital or Physical release is in the future",
570+
"components.RequestModal.requestMovieHasNoNonTheatricalRealease": "There is no non-Theatrical Release",
569571
"components.RequestModal.requestmovies": "Request {count} {count, plural, one {Movie} other {Movies}}",
570572
"components.RequestModal.requestmovies4k": "Request {count} {count, plural, one {Movie} other {Movies}} in 4K",
571573
"components.RequestModal.requestmovietitle": "Request Movie",

0 commit comments

Comments
 (0)