import { Link, useSearchParams } from 'react-router-dom'; import Routes from '../configuration/routes/RouteList'; import { VideoType, ViewLayoutType } from '../pages/Home'; import iconPlay from '/img/icon-play.svg'; import iconDotMenu from '/img/icon-dot-menu.svg'; import iconClose from '/img/icon-close.svg'; import updateWatchedState from '../api/actions/updateWatchedState'; import formatDate from '../functions/formatDates'; import WatchedCheckBox from './WatchedCheckBox'; import MoveVideoMenu from './MoveVideoMenu'; import { useState } from 'react'; import deleteVideoProgressById from '../api/actions/deleteVideoProgressById'; import VideoThumbnail from './VideoThumbail'; type VideoListItemProps = { video: VideoType; viewLayout: ViewLayoutType; playlistId?: string; showReorderButton?: boolean; refreshVideoList: (refresh: boolean) => void; }; const VideoListItem = ({ video, viewLayout, playlistId, showReorderButton = false, refreshVideoList, }: VideoListItemProps) => { const [, setSearchParams] = useSearchParams(); const [showReorderMenu, setShowReorderMenu] = useState(false); if (!video) { return

No video found.

; } return (
{ setSearchParams({ videoId: video.youtube_id }); }} >
{video.player.progress && (
)} {!video.player.progress && (
)}
play-icon
{ await updateWatchedState({ id: video.youtube_id, is_watched: status, }); }} onDone={() => { refreshVideoList(true); }} /> {video.player.progress && ( { await deleteVideoProgressById(video.youtube_id); refreshVideoList(true); }} /> )} {formatDate(video.published)} | {video.player.duration_str}

{video.channel.channel_name}

{video.title}

{showReorderButton && !showReorderMenu && ( dot-menu-icon { setShowReorderMenu(true); }} /> )}
{showReorderButton && showReorderMenu && ( setShowReorderMenu(!status)} setRefresh={refreshVideoList} /> )}
); }; export default VideoListItem;