iOS : le bouton « retour » mène à la mauvaise position dans la liste des sujets

La fonction « retour » dans Safari/iOS (iPhone 8, dernière version d’iOS) est peu fiable ; lors du passage de la liste des sujets à un sujet, elle ne ramène souvent pas à la position correcte dans la liste des sujets. Sur mon propre forum, cela se produit presque systématiquement. Sur Meta, cela fonctionne parfois pour moi, mais plus souvent non. Cela se produit à la fois lors du clic sur le bouton « retour » et lors du balayage vers la droite.

4 « J'aime »

Par curiosité, est-ce que cela fonctionne en mode sans échec ?

3 « J'aime »

Désolé, j’ai oublié de le préciser : j’ai testé le mode sans échec à la fois sur mon propre forum et ici sur Meta, avec le même résultat.

1 « J'aime »

Dans l’application hub iOS ou dans Safari mobile natif ? Je ne parviens pas à reproduire le problème en utilisant le bouton retour ou le glissement vers l’arrière depuis la liste des sujets ici sur Meta.

Avez-vous des étapes de reproduction spécifiques ?

Ah, attendez, je peux reproduire le problème avec le glissement vers l’arrière, mais pas avec le bouton retour. Le glissement vers l’arrière ne semble pas mémoriser la position de défilement réelle dans la liste des sujets, mais le bouton retour le fait toujours.

4 « J'aime »

Sur Safari mobile natif. Au départ, j’avais l’intuition que cela était lié à l’actualisation de la liste des sujets, mais ce ne semble pas être le cas. Cela se produit à 100 % des cas pour moi sur Meta actuellement.

Étapes de reproduction :

  • Se connecter à Meta
  • Actualiser la page d’accueil de Meta (cette étape ne semble pas nécessaire, mais je voulais écarter le problème d’actualisation de la liste des sujets)
  • Défiler d’une page vers le bas
  • Sélectionner un sujet
  • Balayer vers la droite ou cliquer sur Retour

J’ai également essayé ce qui suit, avec le même résultat :

  • Désactivé le bloqueur de publicités Crystal dans le blocage de contenu.
  • Ouvert Meta dans un onglet privé sans être connecté.
  • Testé sur un iPhone SE.
  • Testé dans Chrome sur un Galaxy S6
5 « J'aime »

Cela semble effectivement reproductible pour moi, @eviltrout… peut-être avons-nous régressé ici ? @j.jaffeux ?

6 « J'aime »

Cela devrait régler le problème :

Détails dans le message du commit. J’attends l’approbation de Robin avant de fusionner cette semaine prochaine. Merci pour le rapport détaillé :+1:

11 « J'aime »

C’est fusionné, faites-moi savoir comment cela se passe, s’il vous plaît.

6 « J'aime »

Ce sujet a été automatiquement fermé 3 jours après la dernière réponse. De nouvelles réponses ne sont plus autorisées.

Après une discussion avec @bartv, j’ai approfondi l’investigation et découvert qu’il y a effectivement une régression.

Je pense qu’elle provient de :

En gros, dans ce cas, scrollOnLoad est indéfini :
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/components/topic-list.js.es6#L71

Je suggère la correction suivante :

Peux-tu la relire la semaine prochaine, @markvanlan, s’il te plaît ?

10 « J'aime »

@bartv J’ai tout juste fusionné la deuxième correction. N’hésite pas à me dire ce que tu en penses quand tu auras un moment.

Par ailleurs, je me demande si nous ne pourrions pas encore améliorer cette logique ? Actuellement, elle stocke la position d’un seul sujet à chaque défilement de page, mais cela peut signifier, surtout sur mobile, que lorsque tu reviens, le sujet sur lequel tu as cliqué n’est pas dans la zone visible, même s’il n’est pas très loin.

5 « J'aime »

Je viens de tester cela sur Meta, mais cela ne fonctionne pas pour moi : lorsque j’appuie sur « retour » depuis un sujet, je reviens au début de la liste des sujets.

Et je suis tout à fait d’accord pour revenir à la position exacte dans la liste des sujets.

Ça fonctionne pour moi. S’il vous plaît, faites une vidéo quand vous avez le temps.

2 « J'aime »

Je l’ai ajouté à mon message. J’espère que cela vous aidera. N’hésitez pas à me dire si vous avez besoin que j’inclue d’autres éléments.

1 « J'aime »

Ce que la vidéo montre est attendu : vous n’avez pas effectué un « défilement de page », c’est-à-dire que plus de sujets n’ont pas été chargés, donc la position du dernier sujet consulté n’a pas été mise à jour.

C’est ce que ma note en marge proposait d’améliorer.

3 « J'aime »

Ah, je peux confirmer que cela FONCTIONNE bel et bien lorsque je descends suffisamment pour forcer le chargement de nouveaux sujets. Je ne m’attendais pas à cette limitation — en tant qu’utilisateur, c’est un peu confus et incohérent.

1 « J'aime »

Oui, je ne l’aime pas non plus vraiment, c’est pourquoi j’ai proposé de l’améliorer. Mais d’après ce que je sache, ce n’est pas une régression comme les autres problèmes que j’ai corrigés.

4 « J'aime »

Putain, il y avait bien une autre régression à partir de ce commit, et je pense que cela devrait la résoudre :

et rétablir le comportement dont nous parlions !

6 « J'aime »