Je suis membre d’un forum Discourse (BlenderArtists.org) et je dispose d’un écran 4K qui me permet d’afficher deux pages du forum côte à côte.
Parfois, lorsque je prévois d’écrire un long commentaire, je prépare ma réponse (avec plusieurs citations issues d’un long fil de discussion actuel) en ouvrant l’éditeur de message sur la page de gauche et en parcourant le même fil sur la page de droite.
Cependant, lorsque je fais cela, ce message apparaît très souvent :
Un brouillon est en cours d’édition dans une autre fenêtre. Veuillez recharger cette page.
Je ne suis pas opposé à cet avertissement (je suis sûr qu’il est utile dans certaines situations).
Mais serait-il possible d’ajouter une option dans les préférences utilisateur pour le désactiver ? Ou de régler la fréquence d’affichage (le minuteur) ?
Ce message d’avertissement empêche d’écrire le message tranquillement.
Merci de bien vouloir envisager d’ajouter cette option.
Désolé, nous avons reçu trop de demandes de support à ce sujet, aussi cette insistance est intentionnelle. Il s’agit d’un processus très risqué et vous pourriez perdre l’intégralité de votre publication.
Nous essayons automatiquement d’ouvrir le brouillon pour l’édition lorsque vous accédez à un sujet. Même si vous réduisez immédiatement le compositeur, il reste actif et peut entrer en conflit.
Oui, je l’ai déjà rencontré. C’est vraiment agaçant quand ça arrive, mais je suis d’accord avec Jeff : il faut être prudent ici en raison des problèmes historiques.
Ma solution consiste généralement à ouvrir le sujet dans deux onglets, et je ne commence à rédiger qu’une fois que les deux sont chargés.
J’ai moi aussi été piégé par l’ouverture automatique des brouillons, mais le problème va au-delà du simple message d’avertissement. J’ai repris la rédaction de mon message, puis une fenêtre contextuelle est apparue plus tard, tentant de me rediriger vers un autre onglet contenant un brouillon plus ancien. À ce stade, si je rafraîchis la page, je ne récupère que la version ancienne de mon brouillon. Dans ce sens, cette fonctionnalité n’empêche pas vraiment ce qu’elle est censée empêcher.
Je ne suis pas certain que cela se produise avant que vous ne commenciez à écrire. Je viens d’essayer de reproduire le problème sur meta, et cela ne s’est produit que lorsque j’ai commencé à taper dans le deuxième onglet. J’ai tendance à déclencher cela peu après avoir dupliqué mon onglet pour vérifier ce que j’écris. Je perds la trace de l’onglet dans lequel j’ai commencé, et lorsque je commence à taper par erreur dans le deuxième onglet, l’avertissement apparaît.
Serait-il possible ou raisonnable de détecter si un autre onglet a déjà l’éditeur ouvert pour le sujet donné et, le cas échéant, de ne pas ouvrir l’éditeur pour le nouvel onglet ?
C’est vraiment trop compliqué… Il y a peut-être quelque chose que nous pourrions faire avec des web workers, mais c’est un changement énorme que je ne souhaiterais pas entreprendre.
J’ai besoin d’une reproduction exacte étape par étape. Notre avertissement se déclenche très tôt ; dans le pire des cas, vous perdriez quelques mots. Je suppose que si vous êtes hors ligne, des choses étranges peuvent se produire, mais c’est un cas limite majeur… La solution de contournement est le copier-coller.
Je viens de jeter un coup d’œil au premier message.
Je ne parviens pas à reproduire cela. Pouvez-vous fournir les étapes exactes qui mènent à ce message incorrect ? Si vous n’éditez pas, il n’y a qu’un seul cas limite où vous obtenez ce message, ce qui peut être considéré comme incorrect. Mais c’est un cas limite très mineur.
Ouvrez l’onglet 1… commencez à rédiger une réponse
Ouvrez l’onglet 2… naviguez un peu
Sur l’onglet 1… continuez à rédiger
Sur l’onglet 2… minimisez l’éditeur (vous obtiendrez un message d’avertissement… mais seulement une fois)
Voici ce qui peut se produire et qui pourrait vous poser problème :
Ouvrez l’onglet 1… commencez à rédiger une réponse
Ouvrez l’onglet 2… par erreur, citez quelque chose pour la réponse
Sur l’onglet 1… continuez à rédiger… l’avertissement est là… de manière persistante (car nous jetterions la citation de l’étape 2)
Je ne suis tout simplement pas sûr de quoi corriger ici… J’ai besoin de reproductions.
J’ai certainement connu des moments où j’ai perdu une quantité importante de contenu. Cependant, depuis, j’ai pris soin de ne pas déclencher cet avertissement, donc je ne me souviens plus des étapes exactes ayant causé cette perte importante.
Je pense que le problème pourrait survenir si cela enregistre un brouillon, écrasant ainsi ce que vous aviez fait dans l’onglet 1. Si cela se produit, cela pourrait entraîner une perte importante de contenu. Ce n’est pour l’instant qu’une hypothèse, mais je vais essayer de reproduire le problème de cette manière et vous tiendrai informé.
Ce n’est pas possible, s’il vous plaît… J’ai besoin d’une procédure de reproduction… À chaque enregistrement d’un brouillon, un test de conflit de modification est effectué.
J’ai besoin d’une procédure de reproduction étape par étape pour toute perte importante de contenu.
Je comprends que vous ayez besoin d’étapes reproductibles. J’ai mis un rappel () pour regarder demain soir. Cela m’aiderait de savoir (de manière générale) comment fonctionne le test de conflit. Y a-t-il un identifiant unique généré au chargement de la page ou quelque chose de similaire ?
Je veux essentiellement dire que s’il y a une course… et que deux compositeurs répondent au même sujet pour le même utilisateur… un seul gagne toujours. Chaque fois que nous enregistrons, un propriétaire est choisi.
D’accord @sam, j’ai les étapes pour reproduire le problème. Je ne sais pas si cela est lié au problème initial de l’OP (puisque cette discussion a un peu dévié), mais dans tous les cas, voici ce que j’ai. En gros, si vous ouvrez l’onglet 2 mais continuez à taper dans l’onglet 1 avant que l’onglet 2 n’ait complètement chargé, la nouvelle page entre dans un état instable. Si vous continuez à taper dans l’onglet 1 pendant que l’onglet 2 charge encore, l’onglet 2 chargera le brouillon de l’onglet 1 tel qu’il était au moment de l’ouverture de la page, mais vous pourrez toujours éditer dans l’onglet 2 même après que l’onglet 1 ait enregistré des modifications supplémentaires (écrasant ainsi ces modifications). Voici les étapes pour reproduire le problème :
Ouvrez le sujet A et commencez à rédiger une réponse.
Arrêtez de taper pour que le brouillon soit enregistré.
Ouvrez le sujet A dans un nouvel onglet (Dupliquer l’onglet ou cliquer avec le bouton droit/central sur le titre du sujet est le moyen le plus simple de reproduire le problème, car ils doivent effectuer un chargement complet de la page et sont donc plus lents).
Immédiatement continuez à rédiger la réponse dans l’onglet 1, avant que l’onglet 2 n’ait fini de charger.
Arrêtez de taper pour que le brouillon soit enregistré à nouveau (cela réussira, comme prévu).
Allez dans l’onglet 2 et tapez dans le compositeur.
Arrêtez de taper. Le brouillon sera enregistré même si l’avertissement devrait apparaître. Cela écrasera toutes les modifications supplémentaires que vous avez apportées dans l’onglet 1 à l’étape #4. (Si vous obtenez l’avertissement comme prévu, vous avez probablement attendu trop longtemps pour commencer à taper à l’étape #4.) Notez qu’à ce stade, vous ne pouvez plus taper dans l’onglet 1 sans rafraîchir cet onglet.
Notez qu’à l’étape #4, vous n’avez pas vraiment besoin d’arrêter de taper et d’enregistrer un brouillon avant que l’onglet 2 ne finisse de charger. C’est simplement le fait de commencer à taper qui met tout dans un état instable. En réalité, ce n’est pas déraisonnable d’ouvrir un onglet dupliqué en arrière-plan pour vérifier des choses plus tard et continuer à taper dans l’onglet 1 en attendant. Mais le faire trop rapidement mettra les onglets dans un état instable et vous permettra d’écraser accidentellement ce que vous avez ajouté dans l’onglet 1. Bien sûr, minimiser le compositeur enregistre également un brouillon, donc une fois dans cet état instable, minimiser le compositeur dans l’onglet 2 pour le mettre hors de votre chemin écrasera votre dernier brouillon de l’onglet 1.
À ce stade, si vous revenez à l’onglet 1 où vous rédigez votre message, vous ne pouvez plus taper et obtiendrez l’avertissement qui aurait dû apparaître dans l’onglet 2. Si vous réalisez que votre brouillon a été perdu, vous pouvez bien sûr copier le contenu du compositeur depuis l’onglet 1. Mais si vous ne vous en rendez pas compte et rechargez la page (en suivant les instructions de l’avertissement), vous perdrez les modifications que vous avez apportées et n’aurez aucun moyen de les récupérer.
Faites-moi savoir si vous avez encore du mal à reproduire le problème avec ces étapes. Je peux reproduire le problème de manière assez cohérente en suivant ces étapes (en changeant occasionnellement de nouveaux sujets pour obtenir des brouillons frais), donc j’espère que cela suffit comme information.
Un grand merci pour la reproduction fournie ; elle était spectaculaire et m’a permis d’isoler rapidement le problème.
Je pense que ma réponse précédente était un peu trop vague concernant la manière dont nous suivons les versions de brouillon. Je crois que cela revient au fait que mon algorithme était à la fois un peu trop naïf et trop sophistiqué. C’est une combinaison redoutable. Le nouvel algorithme est beaucoup plus simple à expliquer.
Chaque fois que le client enregistre un brouillon, il indique au serveur le « numéro de séquence » qu’il possède.
Si le numéro de séquence correspond, le serveur incrémente le numéro de séquence de 1 et le renvoie au client (notre nouveau numéro de séquence).
Si le numéro de séquence ne correspond pas, le serveur informe le client qu’il y a un conflit et n’enregistre pas le brouillon.
Lors du rechargement de la page, le serveur indique au client le numéro de séquence actuel.
Ma précédente implémentation était trop sophistiquée ; elle tentait d’éviter d’incrémenter le numéro de séquence dans de nombreuses conditions en suivant le propriétaire d’une séquence. Votre cas de test a montré à quel point cette approche était problématique et comment elle pouvait entraîner une perte de contenu.
Cela devrait être déployé sur Meta ; faites-moi savoir si vous trouvez d’autres cas limites dans ce système.
Cela demande pas mal de travail, avec des allers-retours entre les onglets du navigateur, mais oui… l’abandon échoue manifestement à abandonner dans ce cas, nous devrions corriger cela.