import { Typography } from 'antd'; import React, { useEffect, useMemo } from 'react'; import { v4 as uuidv4 } from 'uuid'; import analytics, { EventType } from '@app/analytics'; import { renderTypeToRenderer } from '@app/recommendations/renderers'; import { RecommendationDisplayType } from '@app/recommendations/types'; import { RecommendationModule as RecommendationModuleType, ScenarioType } from '@types'; type Props = { module: RecommendationModuleType; scenarioType: ScenarioType; displayType?: RecommendationDisplayType; showTitle?: boolean; }; export const RecommendationModule = ({ module, scenarioType, displayType, showTitle }: Props) => { const finalDisplayType = displayType || RecommendationDisplayType.DEFAULT; const renderId = useMemo(() => uuidv4(), []); useEffect(() => { analytics.event({ type: EventType.RecommendationImpressionEvent, moduleId: module.moduleId, renderType: module.renderType, scenarioType, }); }, [module, scenarioType]); const RecommendationRenderer = renderTypeToRenderer.get(module.renderType); if (!RecommendationRenderer) { console.error(`Failed to find renderer corresponding to renderType ${module.renderType}`); return null; } return ( <> {showTitle && {module.title}} ); };