Skip to content

Commit dd77c0f

Browse files
committed
catch blocks and add toast
1 parent e4b83f9 commit dd77c0f

2 files changed

Lines changed: 19 additions & 11 deletions

File tree

frontend/src/components/RequestRideModal/CreateOrEditRideModal.tsx

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import RequestSummaryStep from './steps/RequestSummaryStep';
1414
import { RideModalType } from './types';
1515
import { format_date } from '../../util/index';
1616
import axios from '../../util/axios';
17+
import { useToast, ToastStatus } from '../../context/toastContext';
1718

1819
type WizardStep = 'date' | 'pickup' | 'dropoff' | 'summary';
1920

@@ -61,6 +62,7 @@ const CreateOrEditRideModal = ({
6162
const methods = useForm({ defaultValues });
6263
const { id } = useContext(AuthContext);
6364
const formRef = useRef<HTMLFormElement>(null);
65+
const { showToast } = useToast();
6466

6567
const closeModal = () => {
6668
setCurrentStep('date');
@@ -152,9 +154,9 @@ const CreateOrEditRideModal = ({
152154
const isRecurringRide =
153155
recurring || (whenRepeat && whenRepeat !== 'no-repeat');
154156
if (isRecurringRide) {
155-
// For now, block recurring rides as they're not fully implemented
156-
alert(
157-
'Recurring rides are not yet supported. Please create a single ride instead.'
157+
showToast(
158+
'Recurring rides are not yet supported. Please create a single ride instead.',
159+
ToastStatus.ERROR
158160
);
159161
return;
160162
} else {
@@ -177,11 +179,18 @@ const CreateOrEditRideModal = ({
177179
closeModal();
178180
};
179181

182+
const handleError = (err: any) => {
183+
showToast(
184+
err?.response?.data?.message ?? 'Something went wrong. Please try again.',
185+
ToastStatus.ERROR
186+
);
187+
};
188+
180189
if (!ride) {
181190
// create ride
182191
rideData.type = 'upcoming';
183192
rideData.schedulingState = 'unscheduled';
184-
axios.post('/api/rides', rideData).then(afterSubmit);
193+
axios.post('/api/rides', rideData).then(afterSubmit).catch(handleError);
185194
} else if (modalType === 'EDIT_SINGLE_RECURRING') {
186195
// edit single instance of recurring ride
187196
rideData.type = 'upcoming';
@@ -192,12 +201,16 @@ const CreateOrEditRideModal = ({
192201
origDate: format_date(ride.startTime),
193202
...rideData,
194203
})
195-
.then(afterSubmit);
204+
.then(afterSubmit)
205+
.catch(handleError);
196206
} else {
197207
// edit single ride - for now all rides are treated as single rides
198208
rideData.type = 'upcoming';
199209
rideData.schedulingState = 'unscheduled';
200-
axios.put(`/api/rides/${ride.id}`, rideData).then(afterSubmit);
210+
axios
211+
.put(`/api/rides/${ride.id}`, rideData)
212+
.then(afterSubmit)
213+
.catch(handleError);
201214
}
202215
};
203216

frontend/src/components/RequestRideModal/steps/RequestSummaryStep.tsx

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ type RequestSummaryStepProps = {
1313
onClose?: () => void;
1414
onNext?: () => void;
1515
onBack?: () => void;
16-
submitError?: string | null;
1716
};
1817

1918
const REPEAT_LABELS: Record<string, string> = {
@@ -48,7 +47,6 @@ const RequestSummaryStep: React.FC<RequestSummaryStepProps> = ({
4847
onClose,
4948
onNext,
5049
onBack,
51-
submitError,
5250
}) => {
5351
const [dragStartY, setDragStartY] = useState<number | null>(null);
5452
const [editingSection, setEditingSection] = useState<EditingSection>(null);
@@ -483,9 +481,6 @@ const RequestSummaryStep: React.FC<RequestSummaryStepProps> = ({
483481
</div>
484482

485483
<div className={styles.bottomSection}>
486-
{submitError && (
487-
<p className={styles.error}>{submitError}</p>
488-
)}
489484
<div className={styles.bottomButtonFrame}>
490485
<button
491486
type="button"

0 commit comments

Comments
 (0)