1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00
jellyfin-web/src/components/common/RecommendationContainer.tsx

49 lines
1.6 KiB
TypeScript
Raw Normal View History

import type { RecommendationDto } from '@jellyfin/sdk/lib/generated-client';
2022-10-02 19:07:42 +03:00
import React, { FC } from 'react';
2022-08-07 02:33:25 +03:00
import globalize from '../../scripts/globalize';
import escapeHTML from 'escape-html';
2022-09-02 02:46:05 +03:00
import SectionContainer from './SectionContainer';
2022-08-07 02:33:25 +03:00
2022-10-14 02:07:54 +03:00
interface RecommendationContainerProps {
2022-08-07 02:33:25 +03:00
getPortraitShape: () => string;
enableScrollX: () => boolean;
recommendation?: RecommendationDto;
}
2022-10-14 02:07:54 +03:00
const RecommendationContainer: FC<RecommendationContainerProps> = ({ getPortraitShape, enableScrollX, recommendation = {} }) => {
2022-08-07 02:33:25 +03:00
let title = '';
switch (recommendation.RecommendationType) {
case 'SimilarToRecentlyPlayed':
title = globalize.translate('RecommendationBecauseYouWatched', recommendation.BaselineItemName);
break;
case 'SimilarToLikedItem':
title = globalize.translate('RecommendationBecauseYouLike', recommendation.BaselineItemName);
break;
case 'HasDirectorFromRecentlyPlayed':
case 'HasLikedDirector':
title = globalize.translate('RecommendationDirectedBy', recommendation.BaselineItemName);
break;
case 'HasActorFromRecentlyPlayed':
case 'HasLikedActor':
title = globalize.translate('RecommendationStarring', recommendation.BaselineItemName);
break;
}
2022-09-02 02:46:05 +03:00
return <SectionContainer
sectionTitle={escapeHTML(title)}
enableScrollX={enableScrollX}
items={recommendation.Items || []}
cardOptions={{
2022-08-07 02:33:25 +03:00
shape: getPortraitShape(),
2022-09-02 02:46:05 +03:00
showYear: true
}}
/>;
2022-08-07 02:33:25 +03:00
};
export default RecommendationContainer;