mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-21 10:31:13 -05:00
Refactor: Restore type safety in forms
This commit is contained in:
@@ -21,6 +21,26 @@ import { useAuth } from '@/hooks/useAuth';
|
||||
import { toast } from 'sonner';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
|
||||
// Raw form input state (before Zod transformation)
|
||||
interface OperatorFormInput {
|
||||
name: string;
|
||||
slug: string;
|
||||
company_type: 'designer' | 'manufacturer' | 'operator' | 'property_owner';
|
||||
description?: string;
|
||||
person_type: 'company' | 'individual' | 'firm' | 'organization';
|
||||
founded_year?: string;
|
||||
founded_date?: string;
|
||||
founded_date_precision?: 'day' | 'month' | 'year';
|
||||
headquarters_location?: string;
|
||||
website_url?: string;
|
||||
images?: {
|
||||
uploaded: any[];
|
||||
banner_assignment?: number | null;
|
||||
card_assignment?: number | null;
|
||||
};
|
||||
}
|
||||
|
||||
// Zod output type (after transformation)
|
||||
type OperatorFormData = z.infer<typeof entitySchemas.operator>;
|
||||
|
||||
interface OperatorFormProps {
|
||||
@@ -51,8 +71,9 @@ export function OperatorForm({ onSubmit, onCancel, initialData }: OperatorFormPr
|
||||
defaultValues: {
|
||||
name: initialData?.name || '',
|
||||
slug: initialData?.slug || '',
|
||||
company_type: 'operator' as const,
|
||||
description: initialData?.description || '',
|
||||
person_type: initialData?.person_type || 'company',
|
||||
person_type: initialData?.person_type || ('company' as const),
|
||||
website_url: initialData?.website_url || '',
|
||||
founded_year: initialData?.founded_year ? String(initialData.founded_year) : '',
|
||||
headquarters_location: initialData?.headquarters_location || '',
|
||||
@@ -78,13 +99,13 @@ export function OperatorForm({ onSubmit, onCancel, initialData }: OperatorFormPr
|
||||
|
||||
setIsSubmitting(true);
|
||||
try {
|
||||
if (initialData?.id) {
|
||||
await submitOperatorUpdate(initialData.id, data as unknown as OperatorFormData, user.id);
|
||||
toast.success('Operator update submitted for review');
|
||||
} else {
|
||||
await submitOperatorCreation(data as unknown as OperatorFormData, user.id);
|
||||
toast.success('Operator submitted for review');
|
||||
}
|
||||
if (initialData?.id) {
|
||||
await submitOperatorUpdate(initialData.id, data, user.id);
|
||||
toast.success('Operator update submitted for review');
|
||||
} else {
|
||||
await submitOperatorCreation(data, user.id);
|
||||
toast.success('Operator submitted for review');
|
||||
}
|
||||
onCancel();
|
||||
} catch (error) {
|
||||
console.error('Submission error:', error);
|
||||
|
||||
Reference in New Issue
Block a user