@@ -215,6 +215,21 @@ export default function PickupDeliveryUI() {
215215 setAlertConfig ( null ) ;
216216 } ;
217217
218+ // Au chargement de l'app, on part d'un état propre côté backend (demandes vidées)
219+ React . useEffect ( ( ) => {
220+ const resetBackendDemands = async ( ) => {
221+ try {
222+ await apiService . clearDeliveryRequests ( ) ;
223+ setDeliveryRequestSet ( null ) ;
224+ setTourData ( null ) ;
225+ } catch ( err ) {
226+ console . warn ( '[PickupDeliveryUI] Impossible de vider les demandes au démarrage:' , err ?. message || err ) ;
227+ }
228+ } ;
229+ resetBackendDemands ( ) ;
230+ // eslint-disable-next-line react-hooks/exhaustive-deps
231+ } , [ ] ) ;
232+
218233 /**
219234 * Synchronise le frontend avec l'état réel des demandes côté backend.
220235 * Évite les divergences (ex: anciennes demandes encore présentes côté serveur).
@@ -258,12 +273,24 @@ export default function PickupDeliveryUI() {
258273
259274 // Gestion du chargement de la carte depuis le backend
260275 const handleMapLoaded = ( map ) => {
261- setMapData ( map ) ;
262- setShowMapUpload ( false ) ;
263- setShowMessage ( false ) ;
264- setActiveTab ( 'map' ) ;
265- // Lorsqu'on charge une carte, on synchronise aussi les demandes côté backend
266- syncDeliveryRequests ( ) ;
276+ const afterMapLoad = async ( ) => {
277+ try {
278+ // Nettoyer toutes les demandes backend pour repartir de zéro avec cette carte
279+ await apiService . clearDeliveryRequests ( ) ;
280+ setDeliveryRequestSet ( null ) ;
281+ setTourData ( null ) ;
282+ } catch ( err ) {
283+ console . warn ( '[PickupDeliveryUI] Impossible de vider les demandes après chargement carte:' , err ?. message || err ) ;
284+ } finally {
285+ setMapData ( map ) ;
286+ setShowMapUpload ( false ) ;
287+ setShowMessage ( false ) ;
288+ setActiveTab ( 'map' ) ;
289+ // Synchroniser l'état (sera vide après clear)
290+ syncDeliveryRequests ( ) ;
291+ }
292+ } ;
293+ afterMapLoad ( ) ;
267294 } ;
268295
269296 // Gestion de l'annulation du chargement
0 commit comments