diff --git a/frontend/src/App/State/CalendarAppState.ts b/frontend/src/App/State/CalendarAppState.ts index d439c62b59..0fcf1692da 100644 --- a/frontend/src/App/State/CalendarAppState.ts +++ b/frontend/src/App/State/CalendarAppState.ts @@ -7,6 +7,9 @@ import { CalendarItem } from 'typings/Calendar'; interface CalendarOptions { showMovieInformation: boolean; + showCinemaRelease: boolean; + showDigitalRelease: boolean; + showPhysicalRelease: boolean; showCutoffUnmetIcon: boolean; fullColorEvents: boolean; } diff --git a/frontend/src/Calendar/CalendarPage.tsx b/frontend/src/Calendar/CalendarPage.tsx index 0c78a62109..96e59cc444 100644 --- a/frontend/src/Calendar/CalendarPage.tsx +++ b/frontend/src/Calendar/CalendarPage.tsx @@ -48,9 +48,10 @@ function createMissingMovieIdsSelector() { if ( !movie.movieFileId && + inCinemas && moment(inCinemas).isAfter(start) && moment(inCinemas).isBefore(end) && - isBefore(movie.inCinemas) && + isBefore(inCinemas) && !queueDetails.some( (details) => !!details.movie && details.movie.id === movie.id ) diff --git a/frontend/src/Calendar/Day/CalendarDay.tsx b/frontend/src/Calendar/Day/CalendarDay.tsx index 5ccc892672..1f02df3459 100644 --- a/frontend/src/Calendar/Day/CalendarDay.tsx +++ b/frontend/src/Calendar/Day/CalendarDay.tsx @@ -21,27 +21,29 @@ function sort(items: CalendarEventModel[]) { function createCalendarEventsConnector(date: string) { return createSelector( (state: AppState) => state.calendar.items, - (items) => { + (state: AppState) => state.calendar.options, + (items, options) => { + const { showCinemaRelease, showDigitalRelease, showPhysicalRelease } = + options; const momentDate = moment(date); const filtered = items.filter( ({ inCinemas, digitalRelease, physicalRelease }) => { return ( - (inCinemas && momentDate.isSame(moment(inCinemas), 'day')) || - (digitalRelease && + (showCinemaRelease && + inCinemas && + momentDate.isSame(moment(inCinemas), 'day')) || + (showDigitalRelease && + digitalRelease && momentDate.isSame(moment(digitalRelease), 'day')) || - (physicalRelease && + (showPhysicalRelease && + physicalRelease && momentDate.isSame(moment(physicalRelease), 'day')) ); } ); - return sort( - filtered.map((item) => ({ - isGroup: false, - ...item, - })) - ); + return sort(filtered); } ); } diff --git a/frontend/src/Calendar/Events/CalendarEvent.tsx b/frontend/src/Calendar/Events/CalendarEvent.tsx index 117130b18c..c4800fceca 100644 --- a/frontend/src/Calendar/Events/CalendarEvent.tsx +++ b/frontend/src/Calendar/Events/CalendarEvent.tsx @@ -52,8 +52,14 @@ function CalendarEvent({ const { enableColorImpairedMode } = useSelector(createUISettingsSelector()); - const { showMovieInformation, showCutoffUnmetIcon, fullColorEvents } = - useSelector((state: AppState) => state.calendar.options); + const { + showMovieInformation, + showCinemaRelease, + showDigitalRelease, + showPhysicalRelease, + showCutoffUnmetIcon, + fullColorEvents, + } = useSelector((state: AppState) => state.calendar.options); const isDownloading = !!(queueItem || grabbed); const statusStyle = getStatusStyle( @@ -70,20 +76,40 @@ function CalendarEvent({ const types = []; - if (inCinemas && momentDate.isSame(moment(inCinemas), 'day')) { + if ( + showCinemaRelease && + inCinemas && + momentDate.isSame(moment(inCinemas), 'day') + ) { types.push('Cinemas'); } - if (digitalRelease && momentDate.isSame(moment(digitalRelease), 'day')) { + if ( + showDigitalRelease && + digitalRelease && + momentDate.isSame(moment(digitalRelease), 'day') + ) { types.push('Digital'); } - if (physicalRelease && momentDate.isSame(moment(physicalRelease), 'day')) { + if ( + showPhysicalRelease && + physicalRelease && + momentDate.isSame(moment(physicalRelease), 'day') + ) { types.push('Physical'); } return types; - }, [date, inCinemas, digitalRelease, physicalRelease]); + }, [ + date, + showCinemaRelease, + showDigitalRelease, + showPhysicalRelease, + inCinemas, + digitalRelease, + physicalRelease, + ]); return (