]> cat aescling's git repositories - mastodon.git/commitdiff
Scroll to linked status in public status view (fixes #7884) (#8130)
authorThibG <thib@sitedethib.com>
Mon, 6 Aug 2018 13:16:02 +0000 (15:16 +0200)
committerEugen Rochko <eugen@zeonfederated.com>
Mon, 6 Aug 2018 13:16:02 +0000 (15:16 +0200)
When there is a single detailed status on a public page, scroll to it and
replace the history state to not scroll back on refresh (simulates # anchors).

app/javascript/packs/public.js

index 855e56ee61acba6ffa19db8797f0852915c99b9e..6b47eecf9b4c8971d3bb370c108d1b586e4ec857 100644 (file)
@@ -31,6 +31,7 @@ function main() {
   const React = require('react');
   const ReactDOM = require('react-dom');
   const Rellax = require('rellax');
+  const createHistory = require('history').createBrowserHistory;
 
   ready(() => {
     const locale = document.documentElement.lang;
@@ -86,6 +87,14 @@ function main() {
     }
 
     new Rellax('.parallax', { speed: -1 });
+
+    const history = createHistory();
+    const detailedStatuses = document.querySelectorAll('.public-layout .detailed-status');
+    const location = history.location;
+    if (detailedStatuses.length === 1 && (!location.state || !location.state.scrolledToDetailedStatus)) {
+      detailedStatuses[0].scrollIntoView();
+      history.replace(location.pathname, { ...location.state, scrolledToDetailedStatus: true });
+    }
   });
 
   delegate(document, '.webapp-btn', 'click', ({ target, button }) => {