import React, { type FC } from 'react'; import { useApi } from 'hooks/useApi'; import { useGetProgramsSectionsWithItems, useGetTimers } from 'hooks/useFetchItems'; import { appRouter } from 'components/router/appRouter'; import globalize from 'lib/globalize'; import Loading from 'components/loading/LoadingComponent'; import NoItemsMessage from 'components/common/NoItemsMessage'; import SectionContainer from 'components/common/SectionContainer'; import { CardShape } from 'utils/card'; import type { ParentId } from 'types/library'; import type { Section, SectionType } from 'types/sections'; interface ProgramsSectionViewProps { parentId: ParentId; sectionType: SectionType[]; isUpcomingRecordingsEnabled: boolean | undefined } const ProgramsSectionView: FC = ({ parentId, sectionType, isUpcomingRecordingsEnabled = false }) => { const { __legacyApiClient__ } = useApi(); const { isLoading, data: sectionsWithItems, refetch } = useGetProgramsSectionsWithItems(parentId, sectionType); const { isLoading: isUpcomingRecordingsLoading, data: upcomingRecordings } = useGetTimers(isUpcomingRecordingsEnabled); if (isLoading || isUpcomingRecordingsLoading) { return ; } if (!sectionsWithItems?.length && !upcomingRecordings?.length) { return ; } const getRouteUrl = (section: Section) => { return appRouter.getRouteUrl('list', { serverId: window.ApiClient.serverId(), itemTypes: section.itemTypes, isAiring: section.parametersOptions?.isAiring, isMovie: section.parametersOptions?.isMovie, isSports: section.parametersOptions?.isSports, isKids: section.parametersOptions?.isKids, isNews: section.parametersOptions?.isNews, isSeries: section.parametersOptions?.isSeries }); }; return ( <> {sectionsWithItems?.map(({ section, items }) => ( ))} {upcomingRecordings?.map((group) => ( ))} ); }; export default ProgramsSectionView;