import { useEffect, useState } from 'react'; import { Link } from 'react-router-dom'; import { supabase } from '@/lib/supabaseClient'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { RideCard } from '@/components/rides/RideCard'; interface SimilarRidesProps { currentRideId: string; parkId: string; parkSlug: string; category: string; } interface SimilarRide { id: string; name: string; slug: string; image_url: string | null; average_rating: number | null; status: string; category: string; description: string | null; max_speed_kmh: number | null; max_height_meters: number | null; duration_seconds: number | null; review_count: number | null; park: { name: string; slug: string; }; } export function SimilarRides({ currentRideId, parkId, parkSlug, category }: SimilarRidesProps) { const [rides, setRides] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { async function fetchSimilarRides() { const { data, error } = await supabase .from('rides') .select(` id, name, slug, image_url, average_rating, status, category, description, max_speed_kmh, max_height_meters, duration_seconds, review_count, park:parks!inner(name, slug) `) .eq('park_id', parkId) .eq('category', category) .neq('id', currentRideId) .order('average_rating', { ascending: false }) .limit(4); if (!error && data) { setRides(data); } setLoading(false); } fetchSimilarRides(); }, [currentRideId, parkId, category]); if (loading || rides.length === 0) { return null; } return ( Similar Rides You Might Enjoy
{rides.map((ride) => ( ))}
); }