Fix ride selection in Add Credit modal

This commit is contained in:
gpt-engineer-app[bot]
2025-10-16 14:50:55 +00:00
parent 198742e165
commit 9a911b0655

View File

@@ -22,6 +22,7 @@ interface AddRideCreditDialogProps {
export function AddRideCreditDialog({ userId, open, onOpenChange, onSuccess }: AddRideCreditDialogProps) { export function AddRideCreditDialog({ userId, open, onOpenChange, onSuccess }: AddRideCreditDialogProps) {
const [selectedRideId, setSelectedRideId] = useState<string>(''); const [selectedRideId, setSelectedRideId] = useState<string>('');
const [selectedRideName, setSelectedRideName] = useState<string>('');
const [firstRideDate, setFirstRideDate] = useState<Date | undefined>(undefined); const [firstRideDate, setFirstRideDate] = useState<Date | undefined>(undefined);
const [rideCount, setRideCount] = useState(1); const [rideCount, setRideCount] = useState(1);
const [submitting, setSubmitting] = useState(false); const [submitting, setSubmitting] = useState(false);
@@ -62,8 +63,9 @@ export function AddRideCreditDialog({ userId, open, onOpenChange, onSuccess }: A
if (error) throw error; if (error) throw error;
toast.success('Ride credit added!'); toast.success('Ride credit added!');
onSuccess();
handleReset(); handleReset();
onSuccess();
onOpenChange(false);
} catch (error) { } catch (error) {
console.error('Error adding credit:', error); console.error('Error adding credit:', error);
toast.error(getErrorMessage(error)); toast.error(getErrorMessage(error));
@@ -74,12 +76,21 @@ export function AddRideCreditDialog({ userId, open, onOpenChange, onSuccess }: A
const handleReset = () => { const handleReset = () => {
setSelectedRideId(''); setSelectedRideId('');
setSelectedRideName('');
setFirstRideDate(undefined); setFirstRideDate(undefined);
setRideCount(1); setRideCount(1);
}; };
return ( return (
<Dialog open={open} onOpenChange={onOpenChange}> <Dialog
open={open}
onOpenChange={(newOpen) => {
if (!newOpen) {
handleReset();
}
onOpenChange(newOpen);
}}
>
<DialogContent className="max-w-md"> <DialogContent className="max-w-md">
<DialogHeader> <DialogHeader>
<DialogTitle>Add Ride Credit</DialogTitle> <DialogTitle>Add Ride Credit</DialogTitle>
@@ -91,16 +102,37 @@ export function AddRideCreditDialog({ userId, open, onOpenChange, onSuccess }: A
<form onSubmit={handleSubmit} className="space-y-4"> <form onSubmit={handleSubmit} className="space-y-4">
<div className="space-y-2"> <div className="space-y-2">
<Label>Search for a Ride</Label> <Label>Search for a Ride</Label>
<AutocompleteSearch {!selectedRideId ? (
onResultSelect={(result) => { <AutocompleteSearch
if (result.type === 'ride') { onResultSelect={(result) => {
setSelectedRideId(result.id); if (result.type === 'ride') {
} setSelectedRideId(result.id);
}} setSelectedRideName(result.title);
types={['ride']} }
placeholder="Search rides..." }}
className="w-full" types={['ride']}
/> placeholder="Search rides..."
className="w-full"
/>
) : (
<div className="flex items-center justify-between p-3 border rounded-lg bg-muted/50">
<div>
<p className="font-medium">{selectedRideName}</p>
<p className="text-sm text-muted-foreground">Selected ride</p>
</div>
<Button
type="button"
variant="ghost"
size="sm"
onClick={() => {
setSelectedRideId('');
setSelectedRideName('');
}}
>
Change
</Button>
</div>
)}
</div> </div>
<div className="space-y-2"> <div className="space-y-2">