2024-02-28 23:10:31 +03:00
|
|
|
import { BaseItemKind } from '@jellyfin/sdk/lib/generated-client/models/base-item-kind';
|
2024-02-28 21:02:05 +03:00
|
|
|
import React, { type FC } from 'react';
|
2024-01-31 04:20:42 +03:00
|
|
|
import DragHandleIcon from '@mui/icons-material/DragHandle';
|
|
|
|
import Box from '@mui/material/Box';
|
|
|
|
|
|
|
|
import useIndicator from 'components/indicators/useIndicator';
|
|
|
|
import PrimaryMediaInfo from '../../mediainfo/PrimaryMediaInfo';
|
|
|
|
import ListContentWrapper from './ListContentWrapper';
|
|
|
|
import ListItemBody from './ListItemBody';
|
|
|
|
import ListImageContainer from './ListImageContainer';
|
|
|
|
import ListViewUserDataButtons from './ListViewUserDataButtons';
|
|
|
|
|
2024-03-03 01:31:35 +03:00
|
|
|
import type { ItemDto } from 'types/base/models/item-dto';
|
2024-01-31 04:20:42 +03:00
|
|
|
import type { ListOptions } from 'types/listOptions';
|
|
|
|
|
|
|
|
interface ListContentProps {
|
|
|
|
item: ItemDto;
|
|
|
|
listOptions: ListOptions;
|
|
|
|
enableContentWrapper?: boolean;
|
|
|
|
enableOverview?: boolean;
|
|
|
|
enableSideMediaInfo?: boolean;
|
|
|
|
clickEntireItem?: boolean;
|
|
|
|
action?: string;
|
|
|
|
isLargeStyle: boolean;
|
|
|
|
downloadWidth?: number;
|
|
|
|
}
|
|
|
|
|
|
|
|
const ListContent: FC<ListContentProps> = ({
|
|
|
|
item,
|
|
|
|
listOptions,
|
|
|
|
enableContentWrapper,
|
|
|
|
enableOverview,
|
|
|
|
enableSideMediaInfo,
|
|
|
|
clickEntireItem,
|
|
|
|
action,
|
|
|
|
isLargeStyle,
|
|
|
|
downloadWidth
|
|
|
|
}) => {
|
|
|
|
const indicator = useIndicator(item);
|
|
|
|
return (
|
|
|
|
<ListContentWrapper
|
|
|
|
itemOverview={item.Overview}
|
|
|
|
enableContentWrapper={enableContentWrapper}
|
|
|
|
enableOverview={enableOverview}
|
|
|
|
>
|
|
|
|
|
|
|
|
{!clickEntireItem && listOptions.dragHandle && (
|
|
|
|
<DragHandleIcon className='listViewDragHandle listItemIcon listItemIcon-transparent' />
|
|
|
|
)}
|
|
|
|
|
|
|
|
{listOptions.image !== false && (
|
|
|
|
<ListImageContainer
|
|
|
|
item={item}
|
|
|
|
listOptions={listOptions}
|
|
|
|
action={action}
|
|
|
|
isLargeStyle={isLargeStyle}
|
|
|
|
clickEntireItem={clickEntireItem}
|
|
|
|
downloadWidth={downloadWidth}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
|
|
|
|
{listOptions.showIndexNumberLeft && (
|
|
|
|
<Box className='listItem-indexnumberleft'>
|
|
|
|
{item.IndexNumber ?? <span> </span>}
|
|
|
|
</Box>
|
|
|
|
)}
|
|
|
|
|
|
|
|
<ListItemBody
|
|
|
|
item={item}
|
|
|
|
listOptions={listOptions}
|
|
|
|
action={action}
|
|
|
|
enableContentWrapper={enableContentWrapper}
|
|
|
|
enableOverview={enableOverview}
|
|
|
|
enableSideMediaInfo={enableSideMediaInfo}
|
|
|
|
getMissingIndicator={indicator.getMissingIndicator}
|
|
|
|
/>
|
|
|
|
|
2024-08-08 04:25:05 +03:00
|
|
|
{listOptions.showMediaInfo !== false && enableSideMediaInfo && (
|
2024-01-31 04:20:42 +03:00
|
|
|
<PrimaryMediaInfo
|
|
|
|
className='secondary listItemMediaInfo'
|
2024-08-22 00:50:43 +03:00
|
|
|
infoclass='mediaInfoText'
|
2024-01-31 04:20:42 +03:00
|
|
|
item={item}
|
2024-08-10 04:09:59 +03:00
|
|
|
showRuntimeInfo
|
2024-08-22 00:50:43 +03:00
|
|
|
showOfficialRatingInfo
|
|
|
|
showOriginalAirDateInfo
|
2024-08-10 04:09:59 +03:00
|
|
|
showStarRatingInfo
|
|
|
|
showCaptionIndicatorInfo
|
2024-01-31 04:20:42 +03:00
|
|
|
getMissingIndicator={indicator.getMissingIndicator}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
|
|
|
|
{listOptions.recordButton
|
|
|
|
&& (item.Type === 'Timer' || item.Type === BaseItemKind.Program) && (
|
|
|
|
indicator.getTimerIndicator('listItemAside')
|
|
|
|
)}
|
|
|
|
|
|
|
|
{!clickEntireItem && (
|
|
|
|
<ListViewUserDataButtons
|
|
|
|
item={item}
|
|
|
|
listOptions={listOptions}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
</ListContentWrapper>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default ListContent;
|