3036Fermer3038
ZephLe 28/08/2018 à 23:34
Bon ça y est j'ai réussi à le reproduire, et du coup je pense avoir compris et corrigé smile

La sauvegarde des brouillons a lieu avec un délai ("debounce") de 500ms pour éviter de faire un appel au cache local à chaque touche enfoncée. Du coup, en enchainant rapidement une saisie de message puis un "tab + espace" pour poster, il était tout à fait possible de déclencher l'envoi du formulaire avant que ces 500ms soient atteintes. Cela rend possible l'apparition d'une race condition dans laquelle l'envoi du formulaire (qui déclenche une requête HTTP plus rapide que 500ms) se termine et efface l'éventuel brouillon en attente, puis que la sauvegarde arrive avec ses 500ms de retard (mais avant que la page ne se recharge, sinon tout le JS est interrompu) et restaure le contenu qui était supposé avoir été effacé.

Pour les gens qui utilisent la souris ça n'arrivait probablement jamais, mais au clavier c'était probable de déclencher ce cas de figure. Si c'était bien ça, normalement c'est résolu smile