demarches-simplifiees / demarches-simplifiees.fr

Dématérialiser et simplifier les démarches administratives
https://www.demarches-simplifiees.fr
GNU Affero General Public License v3.0
190 stars 89 forks source link

Erreur lors de la suppression d'un bloc répétable en cours d'upload #5310

Open kemenaran opened 4 years ago

kemenaran commented 4 years ago

Quand un Usager supprime un bloc répétable contenant un upload de PJ actif, on n'annule pas le téléchargement.

L'upload se poursuit en arrière-plan, et génère des erreurs JS (parce que la Progress Bar n'existe plus).

Sentry : https://sentry.io/organizations/demarches-simplifiees/issues/1604484625/?environment=production&project=1429547&query=is%3Aunresolved#tags

Résolution

On peut soit :

  1. Ignorer les erreurs de ProgressBar
  2. Annuler l'upload en cas de suppression du Bloc.

Je viens d'essayer la solution 2., parce que j'ai l'impression que supprimer l'upload est quand même plus propre. Mais c'est chaud : on détecte la suppression de l'élément DOM à un endroit bizarre, y'a plein de callbacks, et après faut manuellement générer une erreur, qui n'est pas attrapée correctement… Tendu.

Je penche un peu vers 1. Mais je vais continuer à creuser.

kemenaran commented 4 years ago

Alors, la raison pour laquelle on ne peut pas annuler la requête XHR, c'est que la classe Rails JS DirectUpload qui lance l'upload et gère les erreurs n'est pas câblée pour gérer les annulations. Donc on est cuit.

On va donc ignorer les erreurs de ProgressBar si l'élément DOM disparait, et puis basta.