flusio / Flus

Aggregate, save and share links from all over the Web.
https://flus.fr
GNU Affero General Public License v3.0
151 stars 3 forks source link

[amélioration] Remettre le défilement là où il était après avoir effectué une action #457

Closed raphraph closed 1 year ago

raphraph commented 2 years ago

Lorsque je retire des éléments du Journal (quelque soit l'action), la page est rechargée (il me semble) et le défilement est remis tout en haut. Lorsque ce sont les éléments du bas du Journal que je traite (et qu'il en reste plus haut par exemple), c'est désagréable de devoir redescendre plusieurs fois d'affilé pour traiter les suivants. En plus les éléments peuvent avoir bougé (être remonté d'une ligne par exemple), donc c'est un peu moins facile de les retrouver que si le défilement n'avait pas bougé.

L'idéal serait de pouvoir remettre le défilement à son niveau précédent, mais je n'ai aucune idée de si c'est simple à faire :)

Cela est peut être dû à ma manière de lire le Journal : j'ouvre les liens que je veux lire, puis je marque les liens lu comme lu, puis je retire tout le reste du journal en une seule action. Je retire plus souvent des liens que je n'en lis, ce qui a tendance à provoquer cette situation j'imagine.

marienfressinaud commented 2 years ago

Oui c’est un problème, et j'aimerais le corriger. Théoriquement ça aurait dû être simple, en pratique… je n'ai pas encore réussi à m’en sortir.

flusio utilise Turbo qui permet de charger les pages en JS (quand on clique sur un lien ou qu'on valide un formulaire). Ça permet d'accélérer légèrement le chargement des pages et d'éviter des glitchs visuels. C’est donc Turbo qui s’occupe manuellement de remettre le défilement de la page tout en haut.

Pendant un temps, il y avait une solution technique plutôt élégante qui permettait de maintenir le défilement suite à une action (cf. https://github.com/hotwired/turbo/issues/37#issuecomment-751523976), mais suite à des changements techniques, celle-ci ne fonctionne plus. Une solution simple serait d'effectuer la restauration du défilement dans un setTimeout, mais ça implique un effet de "saut" (i.e. Turbo va remettre le défilement tout en haut, puis le setTimeout le remettra au bon endroit après X millisecondes). Pas agréable du tout.

Pour l'instant j'attends que quelqu'un trouve une solution, le temps que je bosse sur d'autres trucs. Le jour où ça m'agacera trop je verrai pour trouver une solution quitte à devoir mettre les mains dans Turbo.

marienfressinaud commented 2 years ago

Ticket similaire à #378 d'ailleurs

marienfressinaud commented 1 year ago

Normalement le problème est résolu par https://github.com/flusio/flusio/pull/548 :) (j'ai finalement opté pour un hack un peu sale mais très simple… j’aurai dû le faire plus tôt !) C’est pas encore en prod', je te tiendrai au courant quand ça sera le cas. Je fermerai le ticket à ce moment là.

raphraph commented 1 year ago

Super, merci pour l'info ! Ça se verra de toute façon quand ça passera en prod ;)

marienfressinaud commented 1 year ago

Et c’est en prod ! Ça vient avec beaucoup d’améliorations autour des liens, notamment la possibilité de marquer comme lu et déplacer dans les signets en un clic, et une optimisation de la place prise sur mobile :)

raphraph commented 1 year ago

Je viens de tester et c'est vraiment top comme ça. En 2 clics on peut ouvrir le lien dans un nouvel onglet et le marquer comme lu, et le réagencement se faisant sans que la page bouge ou se recharge améliore nettement la lisibilité de l'ensemble. C'est vraiment super, bravo ! :+1:

marienfressinaud commented 1 year ago

Merci pour le retour ! Je trouve que ça change tout, c’est effectivement beaucoup plus agréable comme ça :)