@@ -3,6 +3,7 @@ import Modal from '@app/components/Common/Modal';
33import type { RequestOverrides } from '@app/components/RequestModal/AdvancedRequester' ;
44import AdvancedRequester from '@app/components/RequestModal/AdvancedRequester' ;
55import QuotaDisplay from '@app/components/RequestModal/QuotaDisplay' ;
6+ import useSettings from '@app/hooks/useSettings' ;
67import { useUser } from '@app/hooks/useUser' ;
78import globalMessages from '@app/i18n/globalMessages' ;
89import 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
0 commit comments