diff --git a/src/components/moderation/ItemEditDialog.tsx b/src/components/moderation/ItemEditDialog.tsx index 2dcc23f6..d06ccac9 100644 --- a/src/components/moderation/ItemEditDialog.tsx +++ b/src/components/moderation/ItemEditDialog.tsx @@ -22,6 +22,7 @@ import { jsonToFormData } from '@/lib/typeConversions'; import { PropertyOwnerForm } from '@/components/admin/PropertyOwnerForm'; import { RideModelForm } from '@/components/admin/RideModelForm'; import { Save, X, Edit } from 'lucide-react'; +import { SubmissionErrorBoundary } from '@/components/error/SubmissionErrorBoundary'; interface ItemEditDialogProps { item?: SubmissionItemWithDeps | null; @@ -131,66 +132,70 @@ export function ItemEditDialog({ item, items, open, onOpenChange, onComplete }: switch (editItem.item_type) { case 'park': return ( - onOpenChange(false)} - // Convert Json to form-compatible object (null → undefined) - // eslint-disable-next-line @typescript-eslint/no-explicit-any - initialData={jsonToFormData(editItem.item_data) as any} - isEditing - /> + + onOpenChange(false)} + initialData={jsonToFormData(editItem.item_data) as any} + isEditing + /> + ); case 'ride': return ( - onOpenChange(false)} - // Convert Json to form-compatible object (null → undefined) - // eslint-disable-next-line @typescript-eslint/no-explicit-any - initialData={jsonToFormData(editItem.item_data) as any} - isEditing - /> + + onOpenChange(false)} + initialData={jsonToFormData(editItem.item_data) as any} + isEditing + /> + ); case 'manufacturer': return ( - onOpenChange(false)} - // eslint-disable-next-line @typescript-eslint/no-explicit-any - initialData={jsonToFormData(editItem.item_data) as any} - /> + + onOpenChange(false)} + initialData={jsonToFormData(editItem.item_data) as any} + /> + ); case 'designer': return ( - onOpenChange(false)} - // eslint-disable-next-line @typescript-eslint/no-explicit-any - initialData={jsonToFormData(editItem.item_data) as any} - /> + + onOpenChange(false)} + initialData={jsonToFormData(editItem.item_data) as any} + /> + ); case 'operator': return ( - onOpenChange(false)} - // eslint-disable-next-line @typescript-eslint/no-explicit-any - initialData={jsonToFormData(editItem.item_data) as any} - /> + + onOpenChange(false)} + initialData={jsonToFormData(editItem.item_data) as any} + /> + ); case 'property_owner': return ( - onOpenChange(false)} - // eslint-disable-next-line @typescript-eslint/no-explicit-any - initialData={jsonToFormData(editItem.item_data) as any} - /> + + onOpenChange(false)} + initialData={jsonToFormData(editItem.item_data) as any} + /> + ); case 'ride_model': @@ -201,14 +206,15 @@ export function ItemEditDialog({ item, items, open, onOpenChange, onComplete }: ? itemData.manufacturer_id : ''; return ( - onOpenChange(false)} - // eslint-disable-next-line @typescript-eslint/no-explicit-any - initialData={itemData as any} - /> + + onOpenChange(false)} + initialData={itemData as any} + /> + ); case 'photo': diff --git a/src/pages/DesignerRides.tsx b/src/pages/DesignerRides.tsx index b7d3f4a3..3036ac02 100644 --- a/src/pages/DesignerRides.tsx +++ b/src/pages/DesignerRides.tsx @@ -18,6 +18,7 @@ import { useAuthModal } from '@/hooks/useAuthModal'; import { useDocumentTitle } from '@/hooks/useDocumentTitle'; import { useOpenGraph } from '@/hooks/useOpenGraph'; import { handleNonCriticalError } from '@/lib/errorHandler'; +import { SubmissionErrorBoundary } from '@/components/error/SubmissionErrorBoundary'; export default function DesignerRides() { const { designerSlug } = useParams<{ designerSlug: string }>(); @@ -329,10 +330,12 @@ export default function DesignerRides() { - setIsCreateModalOpen(false)} - /> + + setIsCreateModalOpen(false)} + /> + diff --git a/src/pages/Designers.tsx b/src/pages/Designers.tsx index 6c9dcf60..90981be8 100644 --- a/src/pages/Designers.tsx +++ b/src/pages/Designers.tsx @@ -26,6 +26,7 @@ import { useAuthModal } from '@/hooks/useAuthModal'; import { getErrorMessage } from '@/lib/errorHandler'; import { useDocumentTitle } from '@/hooks/useDocumentTitle'; import { useOpenGraph } from '@/hooks/useOpenGraph'; +import { SubmissionErrorBoundary } from '@/components/error/SubmissionErrorBoundary'; export default function Designers() { useDocumentTitle('Designers'); @@ -359,7 +360,9 @@ export default function Designers() { - setIsCreateModalOpen(false)} /> + + setIsCreateModalOpen(false)} /> + diff --git a/src/pages/ManufacturerModels.tsx b/src/pages/ManufacturerModels.tsx index 0fd9da3e..8e0148e8 100644 --- a/src/pages/ManufacturerModels.tsx +++ b/src/pages/ManufacturerModels.tsx @@ -18,6 +18,7 @@ import { useAuthModal } from '@/hooks/useAuthModal'; import { useDocumentTitle } from '@/hooks/useDocumentTitle'; import { useOpenGraph } from '@/hooks/useOpenGraph'; import { handleNonCriticalError } from '@/lib/errorHandler'; +import { SubmissionErrorBoundary } from '@/components/error/SubmissionErrorBoundary'; interface RideModelWithCount extends RideModel { ride_count: number; @@ -295,11 +296,13 @@ export default function ManufacturerModels() { - setIsCreateModalOpen(false)} - /> + + setIsCreateModalOpen(false)} + /> + diff --git a/src/pages/ManufacturerRides.tsx b/src/pages/ManufacturerRides.tsx index d5a48997..d1b48a22 100644 --- a/src/pages/ManufacturerRides.tsx +++ b/src/pages/ManufacturerRides.tsx @@ -18,6 +18,7 @@ import { useAuthModal } from '@/hooks/useAuthModal'; import { useDocumentTitle } from '@/hooks/useDocumentTitle'; import { useOpenGraph } from '@/hooks/useOpenGraph'; import { handleNonCriticalError } from '@/lib/errorHandler'; +import { SubmissionErrorBoundary } from '@/components/error/SubmissionErrorBoundary'; export default function ManufacturerRides() { const { manufacturerSlug } = useParams<{ manufacturerSlug: string }>(); @@ -329,10 +330,12 @@ export default function ManufacturerRides() { - setIsCreateModalOpen(false)} - /> + + setIsCreateModalOpen(false)} + /> + diff --git a/src/pages/Manufacturers.tsx b/src/pages/Manufacturers.tsx index c38d4713..14cd26c3 100644 --- a/src/pages/Manufacturers.tsx +++ b/src/pages/Manufacturers.tsx @@ -26,6 +26,7 @@ import { useAuthModal } from '@/hooks/useAuthModal'; import { getErrorMessage } from '@/lib/errorHandler'; import { useDocumentTitle } from '@/hooks/useDocumentTitle'; import { useOpenGraph } from '@/hooks/useOpenGraph'; +import { SubmissionErrorBoundary } from '@/components/error/SubmissionErrorBoundary'; export default function Manufacturers() { useDocumentTitle('Manufacturers'); @@ -374,10 +375,12 @@ export default function Manufacturers() { {/* Create Modal */} - setIsCreateModalOpen(false)} - /> + + setIsCreateModalOpen(false)} + /> + diff --git a/src/pages/Operators.tsx b/src/pages/Operators.tsx index b6a8a376..721adb15 100644 --- a/src/pages/Operators.tsx +++ b/src/pages/Operators.tsx @@ -26,6 +26,7 @@ import { useAuthModal } from '@/hooks/useAuthModal'; import { getErrorMessage } from '@/lib/errorHandler'; import { useDocumentTitle } from '@/hooks/useDocumentTitle'; import { useOpenGraph } from '@/hooks/useOpenGraph'; +import { SubmissionErrorBoundary } from '@/components/error/SubmissionErrorBoundary'; const Operators = () => { useDocumentTitle('Operators'); @@ -377,10 +378,12 @@ const Operators = () => { {/* Create Modal */} - setIsCreateModalOpen(false)} - /> + + setIsCreateModalOpen(false)} + /> + diff --git a/src/pages/ParkDetail.tsx b/src/pages/ParkDetail.tsx index 649e5a5e..278238ae 100644 --- a/src/pages/ParkDetail.tsx +++ b/src/pages/ParkDetail.tsx @@ -26,6 +26,7 @@ import { usePhotoCount } from '@/hooks/photos/usePhotoCount'; const RideForm = lazy(() => import('@/components/admin/RideForm').then(m => ({ default: m.RideForm }))); const ParkForm = lazy(() => import('@/components/admin/ParkForm').then(m => ({ default: m.ParkForm }))); import { getErrorMessage } from '@/lib/errorHandler'; +import { SubmissionErrorBoundary } from '@/components/error/SubmissionErrorBoundary'; import { useUserRole } from '@/hooks/useUserRole'; import { Edit } from 'lucide-react'; import { VersionIndicator } from '@/components/versioning/VersionIndicator'; @@ -610,10 +611,13 @@ export default function ParkDetail() { }> - setIsAddRideModalOpen(false)} - /> + + setIsAddRideModalOpen(false)} + initialData={{ park_id: park.id }} + /> + @@ -628,28 +632,30 @@ export default function ParkDetail() { }> - setIsEditParkModalOpen(false)} - initialData={{ - id: park?.id, - name: park?.name, - slug: park?.slug, - description: park?.description ?? undefined, - park_type: park?.park_type, - status: park?.status, - opening_date: park?.opening_date ?? undefined, - closing_date: park?.closing_date ?? undefined, - website_url: park?.website_url ?? undefined, - phone: park?.phone ?? undefined, - email: park?.email ?? undefined, - operator_id: park?.operator?.id, - property_owner_id: park?.property_owner?.id, - banner_image_url: park?.banner_image_url ?? undefined, - card_image_url: park?.card_image_url ?? undefined - }} - isEditing={true} - /> + + setIsEditParkModalOpen(false)} + initialData={{ + id: park?.id, + name: park?.name, + slug: park?.slug, + description: park?.description ?? undefined, + park_type: park?.park_type, + status: park?.status, + opening_date: park?.opening_date ?? undefined, + closing_date: park?.closing_date ?? undefined, + website_url: park?.website_url ?? undefined, + phone: park?.phone ?? undefined, + email: park?.email ?? undefined, + operator_id: park?.operator?.id, + property_owner_id: park?.property_owner?.id, + banner_image_url: park?.banner_image_url ?? undefined, + card_image_url: park?.card_image_url ?? undefined + }} + isEditing={true} + /> + diff --git a/src/pages/ParkOwners.tsx b/src/pages/ParkOwners.tsx index 466b5609..6c9b2a80 100644 --- a/src/pages/ParkOwners.tsx +++ b/src/pages/ParkOwners.tsx @@ -20,6 +20,7 @@ import { useAuthModal } from '@/hooks/useAuthModal'; import { getErrorMessage } from '@/lib/errorHandler'; import { useDocumentTitle } from '@/hooks/useDocumentTitle'; import { useOpenGraph } from '@/hooks/useOpenGraph'; +import { SubmissionErrorBoundary } from '@/components/error/SubmissionErrorBoundary'; const ParkOwners = () => { useDocumentTitle('Property Owners'); @@ -242,10 +243,12 @@ const ParkOwners = () => { {/* Create Modal */} - setIsCreateModalOpen(false)} - /> + + setIsCreateModalOpen(false)} + /> + diff --git a/src/pages/ParkRides.tsx b/src/pages/ParkRides.tsx index 0cd86efb..88f244cf 100644 --- a/src/pages/ParkRides.tsx +++ b/src/pages/ParkRides.tsx @@ -18,6 +18,7 @@ import { getErrorMessage, handleNonCriticalError } from '@/lib/errorHandler'; import { useAuthModal } from '@/hooks/useAuthModal'; import { useDocumentTitle } from '@/hooks/useDocumentTitle'; import { useOpenGraph } from '@/hooks/useOpenGraph'; +import { SubmissionErrorBoundary } from '@/components/error/SubmissionErrorBoundary'; export default function ParkRides() { const { parkSlug } = useParams<{ parkSlug: string }>(); @@ -353,12 +354,14 @@ export default function ParkRides() { {/* Create Modal */} - setIsCreateModalOpen(false)} - isEditing={false} - initialData={{ park_id: park.id }} - /> + + setIsCreateModalOpen(false)} + isEditing={false} + initialData={{ park_id: park.id }} + /> + diff --git a/src/pages/Parks.tsx b/src/pages/Parks.tsx index 4deb601c..1e5964c1 100644 --- a/src/pages/Parks.tsx +++ b/src/pages/Parks.tsx @@ -39,6 +39,7 @@ import { useAuthModal } from "@/hooks/useAuthModal"; import { useOpenGraph } from "@/hooks/useOpenGraph"; import { useParks } from "@/hooks/parks/useParks"; import { Pagination } from "@/components/common/Pagination"; +import { SubmissionErrorBoundary } from "@/components/error/SubmissionErrorBoundary"; export interface FilterState { search: string; @@ -583,7 +584,9 @@ export default function Parks() { Add a new park to the database. Your submission will be reviewed before being published. - setIsAddParkModalOpen(false)} isEditing={false} /> + + setIsAddParkModalOpen(false)} isEditing={false} /> + diff --git a/src/pages/RideModelRides.tsx b/src/pages/RideModelRides.tsx index f7ed7081..7bd9a19f 100644 --- a/src/pages/RideModelRides.tsx +++ b/src/pages/RideModelRides.tsx @@ -17,6 +17,7 @@ import { toast } from '@/hooks/use-toast'; import { getErrorMessage, handleNonCriticalError } from '@/lib/errorHandler'; import type { Ride, Company, RideModel } from "@/types/database"; import { useDocumentTitle } from '@/hooks/useDocumentTitle'; +import { SubmissionErrorBoundary } from '@/components/error/SubmissionErrorBoundary'; export default function RideModelRides() { const { manufacturerSlug, modelSlug } = useParams<{ manufacturerSlug: string; modelSlug: string }>(); @@ -293,10 +294,12 @@ export default function RideModelRides() { {/* Create Modal */} - setIsCreateModalOpen(false)} - /> + + setIsCreateModalOpen(false)} + /> + diff --git a/src/pages/Rides.tsx b/src/pages/Rides.tsx index 0266f410..4bf0593d 100644 --- a/src/pages/Rides.tsx +++ b/src/pages/Rides.tsx @@ -26,6 +26,7 @@ import { useDocumentTitle } from '@/hooks/useDocumentTitle'; import { useOpenGraph } from '@/hooks/useOpenGraph'; import { useRides } from '@/hooks/rides/useRides'; import { Pagination } from '@/components/common/Pagination'; +import { SubmissionErrorBoundary } from '@/components/error/SubmissionErrorBoundary'; export default function Rides() { useDocumentTitle('Rides & Attractions'); @@ -529,11 +530,13 @@ export default function Rides() { {/* Create Modal */} - setIsCreateModalOpen(false)} - isEditing={false} - /> + + setIsCreateModalOpen(false)} + isEditing={false} + /> +