@@ -6,7 +6,7 @@ import { useLocation, useRoute } from 'wouter'
66import { FirestoreQueryLoaderAndErrorDisplay } from '../../../components/FirestoreQueryLoaderAndErrorDisplay'
77import { ArrowBack } from '@mui/icons-material'
88import { EventSessionForm } from './EventSessionForm'
9- import { deleteDoc , doc , getDocs , query , where } from 'firebase/firestore'
9+ import { deleteDoc , doc , getDocs , query , where , writeBatch } from 'firebase/firestore'
1010import { collections } from '../../../services/firebase'
1111import {
1212 useFirestoreDocumentDeletion ,
@@ -57,16 +57,21 @@ export const EventSession = ({ event }: EventSessionProps) => {
5757 async ( speakerIds : string [ ] ) => {
5858 setOrphanDeleting ( true )
5959 try {
60+ const batch = writeBatch ( collections . speakers ( event . id ) . firestore )
6061 for ( const speakerId of speakerIds ) {
61- await deleteDoc ( doc ( collections . speakers ( event . id ) , speakerId ) )
62+ const speakerRef = doc ( collections . speakers ( event . id ) , speakerId )
63+ batch . delete ( speakerRef )
6264 }
63- } finally {
64- setOrphanDeleting ( false )
65+ await batch . commit ( )
6566 setOrphanDeleteOpen ( false )
6667 setLocation ( '/sessions' )
68+ } catch ( error ) {
69+ console . error ( 'Failed to delete orphaned speakers' , error )
70+ } finally {
71+ setOrphanDeleting ( false )
6772 }
6873 } ,
69- [ event . id ]
74+ [ event . id , setLocation ]
7075 )
7176
7277 if ( sessionResult . isLoading || ! sessionResult . data ) {
0 commit comments