From dc75548abade5379d07099d8ffb1fd7aacb45eee Mon Sep 17 00:00:00 2001 From: Yuval Adam <_@yuv.al> Date: Fri, 14 Nov 2025 08:56:02 +0100 Subject: Fix slider bug --- src/components/Geshem.tsx | 18 ++++++++++++++++-- src/components/Slider.tsx | 5 +++-- 2 files changed, 19 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/components/Geshem.tsx b/src/components/Geshem.tsx index c34cbc1..b235f6f 100644 --- a/src/components/Geshem.tsx +++ b/src/components/Geshem.tsx @@ -17,7 +17,7 @@ export function Geshem({ date }: GeshemProps) { (typeof window !== 'undefined' ? new URL(window.location.toString()).searchParams.get("history") : null) || undefined ); - const [slider, setSlider] = useState(playback ? PLAYBACK_SLOTS : 9); + const [slider, setSlider] = useState(0); useEffect(() => { const fetchImages = async () => @@ -55,11 +55,25 @@ export function Geshem({ date }: GeshemProps) { }; }, [playback]); + // Update slider to point to the latest image when images change + useEffect(() => { + if (images.length > 0) { + setSlider(prevSlider => { + const maxIndex = playback ? PLAYBACK_SLOTS : images.length - 1; + // If this is the first load (slider is 0) or if slider is out of bounds, set to max + if (prevSlider === 0 || prevSlider > maxIndex) { + return maxIndex; + } + return prevSlider; + }); + } + }, [images.length, playback]); + return ( <> - + ); } \ No newline at end of file diff --git a/src/components/Slider.tsx b/src/components/Slider.tsx index 22a8f8f..2d62b2c 100644 --- a/src/components/Slider.tsx +++ b/src/components/Slider.tsx @@ -5,13 +5,14 @@ interface SliderProps { playback?: string; slider: number; setSlider: React.Dispatch>; + imageCount: number; } -export function Slider({ playback, slider, setSlider }: SliderProps) { +export function Slider({ playback, slider, setSlider, imageCount }: SliderProps) { const sliderRef = useRef(null); const [isDragging, setIsDragging] = useState(false); - const max = playback ? PLAYBACK_SLOTS : 9; + const max = playback ? PLAYBACK_SLOTS : Math.max(0, imageCount - 1); const handleStart = useCallback((e: React.MouseEvent | React.TouchEvent) => { setIsDragging(true); -- cgit v1.3.1