diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 0000000..a5b75d7 --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,7 @@ +{ + "permissions": { + "allow": [ + "Bash(rtk tsc *)" + ] + } +} diff --git a/frontend/src/components/EpisodeCard.tsx b/frontend/src/components/EpisodeCard.tsx index 67d7bce..7dd3196 100644 --- a/frontend/src/components/EpisodeCard.tsx +++ b/frontend/src/components/EpisodeCard.tsx @@ -1,16 +1,17 @@ import React from 'react'; import { Episode } from '../services/episodeService'; -import { Play, Calendar, Activity, Check, Sparkles } from 'lucide-react'; +import { Play, Pause, Calendar, Activity, Check, CheckCircle2, Circle } from 'lucide-react'; import { useAudio } from '../context/AudioContext'; interface EpisodeCardProps { episode: Episode; onPlay: (episode: Episode) => void; onDetails?: (episode: Episode) => void; + onToggleRead?: (episode: Episode, completed: boolean) => void; } -export default function EpisodeCard({ episode, onPlay, onDetails }: EpisodeCardProps) { - const { currentEpisode, isPlaying } = useAudio(); +export default function EpisodeCard({ episode, onPlay, onDetails, onToggleRead }: EpisodeCardProps) { + const { currentEpisode, isPlaying, togglePlay } = useAudio(); const isCurrent = currentEpisode?._id === episode._id; const podcast = typeof episode.podcastId === 'object' ? episode.podcastId : null; const pubDate = new Date(episode.pubDate).toLocaleDateString('fr-FR', { @@ -41,7 +42,16 @@ export default function EpisodeCard({ episode, onPlay, onDetails }: EpisodeCardP const handlePlayClick = (e: React.MouseEvent) => { e.stopPropagation(); - onPlay(episode); + if (isCurrent) { + togglePlay(); + } else { + onPlay(episode); + } + }; + + const handleToggleRead = (e: React.MouseEvent) => { + e.stopPropagation(); + if (onToggleRead) onToggleRead(episode, !isCompleted); }; return ( @@ -72,12 +82,15 @@ export default function EpisodeCard({ episode, onPlay, onDetails }: EpisodeCardP {/* Hover Play Button Overlay */} -