diff --git a/packages/web/app/components/beta-videos/beta-videos.tsx b/packages/web/app/components/beta-videos/beta-videos.tsx index 8e42240f..b13cb3a1 100644 --- a/packages/web/app/components/beta-videos/beta-videos.tsx +++ b/packages/web/app/components/beta-videos/beta-videos.tsx @@ -2,11 +2,57 @@ import React, { useState } from 'react'; import { Card, Row, Col, Typography, Empty, Modal } from 'antd'; -import { InstagramOutlined, UserOutlined } from '@ant-design/icons'; +import { InstagramOutlined, PlayCircleOutlined } from '@ant-design/icons'; import { BetaLink } from '@/app/lib/api-wrappers/sync-api-types'; import { themeTokens } from '@/app/theme/theme-config'; -const { Title, Text } = Typography; +const { Title } = Typography; + +interface ThumbnailProps { + betaLink: BetaLink; +} + +const BetaThumbnail: React.FC = ({ betaLink }) => { + const [hasError, setHasError] = useState(false); + + // If no thumbnail or it failed to load, show placeholder + if (!betaLink.thumbnail || hasError) { + return ( +
+ +
+ ); + } + + return ( + {`Beta setHasError(true)} + style={{ + position: 'absolute', + top: 0, + left: 0, + width: '100%', + height: '100%', + objectFit: 'cover', + }} + /> + ); +}; interface BetaVideosProps { betaLinks: BetaLink[]; @@ -51,91 +97,52 @@ const BetaVideos: React.FC = ({ betaLinks }) => { {betaLinks.length === 0 ? ( ) : ( - - {betaLinks.map((betaLink, index) => { - const embedUrl = getInstagramEmbedUrl(betaLink.link); - - return ( - - handleVideoClick(betaLink)} + + {betaLinks.map((betaLink, index) => ( + + handleVideoClick(betaLink)} + > +
- {embedUrl ? ( + + {(betaLink.foreign_username || betaLink.angle) && (
-