@@ -14,6 +14,7 @@ import RequestSummaryStep from './steps/RequestSummaryStep';
1414import { RideModalType } from './types' ;
1515import { format_date } from '../../util/index' ;
1616import axios from '../../util/axios' ;
17+ import { useToast , ToastStatus } from '../../context/toastContext' ;
1718
1819type 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
0 commit comments