Refactor: Fix type safety and auth

This commit is contained in:
gpt-engineer-app[bot]
2025-10-16 12:54:47 +00:00
parent e79eaf76ba
commit e340f1c489
5 changed files with 162 additions and 42 deletions

View File

@@ -1,4 +1,4 @@
import { useState, useEffect } from 'react';
import { useState, useEffect, useCallback } from 'react';
import { useParams, useNavigate } from 'react-router-dom';
import { Header } from '@/components/layout/Header';
import { Button } from '@/components/ui/button';
@@ -28,13 +28,7 @@ export default function DesignerRides() {
const [filterStatus, setFilterStatus] = useState('all');
const [isCreateModalOpen, setIsCreateModalOpen] = useState(false);
useEffect(() => {
if (designerSlug) {
fetchData();
}
}, [designerSlug, sortBy, filterCategory, filterStatus]);
const fetchData = async () => {
const fetchData = useCallback(async () => {
try {
// Fetch designer
const { data: designerData, error: designerError } = await supabase
@@ -91,7 +85,13 @@ export default function DesignerRides() {
} finally {
setLoading(false);
}
};
}, [designerSlug, sortBy, filterCategory, filterStatus]);
useEffect(() => {
if (designerSlug) {
fetchData();
}
}, [designerSlug, fetchData]);
const filteredRides = rides.filter(ride =>
ride.name.toLowerCase().includes(searchQuery.toLowerCase()) ||
@@ -105,7 +105,16 @@ export default function DesignerRides() {
return;
}
const submissionData = {
if (!designer) {
toast({
title: "Error",
description: "Designer information is missing.",
variant: "destructive"
});
return;
}
const submissionData: RideSubmissionData = {
...data,
designer_id: designer.id,
};
@@ -200,10 +209,12 @@ export default function DesignerRides() {
<FerrisWheel className="w-8 h-8 text-primary" />
<h1 className="text-4xl font-bold">Rides by {designer.name}</h1>
</div>
<Button onClick={() => setIsCreateModalOpen(true)}>
<Plus className="w-4 h-4 mr-2" />
Add Ride
</Button>
{user && (
<Button onClick={() => setIsCreateModalOpen(true)}>
<Plus className="w-4 h-4 mr-2" />
Add Ride
</Button>
)}
</div>
<p className="text-lg text-muted-foreground mb-4">
Explore all rides designed by {designer.name}