import { useState } from 'react';
import { useUserReviews } from '@/hooks/reviews/useUserReviews';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';
import { Badge } from '@/components/ui/badge';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { Star, Calendar, MapPin, Edit, Trash2, ThumbsUp } from 'lucide-react';
import { supabase } from '@/lib/supabaseClient';
import { StarRating } from '@/components/reviews/StarRating';
import { Button } from '@/components/ui/button';
import { Link } from 'react-router-dom';
import { toast } from 'sonner';
import { getErrorMessage } from '@/lib/errorHandler';
interface ReviewWithEntity {
id: string;
rating: number;
title: string | null;
content: string | null;
visit_date: string | null;
wait_time_minutes: number | null;
helpful_votes: number;
moderation_status: string;
created_at: string;
parks?: {
id: string;
name: string;
slug: string;
} | null;
rides?: {
id: string;
name: string;
slug: string;
parks?: {
name: string;
slug: string;
} | null;
} | null;
}
interface UserReviewsListProps {
userId: string;
reviewCount: number;
}
export function UserReviewsList({ userId, reviewCount }: UserReviewsListProps) {
const [filter, setFilter] = useState<'all' | 'parks' | 'rides'>('all');
const [sortBy, setSortBy] = useState<'date' | 'rating'>('date');
// Use cached user reviews hook
const { data: reviews = [], isLoading: loading } = useUserReviews(userId, filter, sortBy);
const formatDate = (dateString: string) => {
return new Date(dateString).toLocaleDateString('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric'
});
};
const getStatusBadge = (status: string) => {
switch (status) {
case 'approved':
return
Start sharing your park and ride experiences
{review.content}
)} {/* Metadata */}