Fix scroll position resetting when opening media modals in web UI

build-json
Eugen Rochko 2021-08-28 15:17:28 +02:00 zatwierdzone przez marcin mikołajczak
rodzic 14c094e9db
commit a8501fb44d
1 zmienionych plików z 7 dodań i 1 usunięć

Wyświetl plik

@ -15,6 +15,8 @@ import UI from '../features/ui';
// import Introduction from '../features/introduction'; // import Introduction from '../features/introduction';
import { preload } from '../actions/preload'; import { preload } from '../actions/preload';
import { IntlProvider } from 'react-intl'; import { IntlProvider } from 'react-intl';
import { previewState as previewMediaState } from 'soapbox/features/ui/components/media_modal';
import { previewState as previewVideoState } from 'soapbox/features/ui/components/video_modal';
import ErrorBoundary from '../components/error_boundary'; import ErrorBoundary from '../components/error_boundary';
import { fetchInstance } from 'soapbox/actions/instance'; import { fetchInstance } from 'soapbox/actions/instance';
import { fetchSoapboxConfig } from 'soapbox/actions/soapbox'; import { fetchSoapboxConfig } from 'soapbox/actions/soapbox';
@ -104,6 +106,10 @@ class SoapboxMount extends React.PureComponent {
this.maybeUpdateMessages(prevProps); this.maybeUpdateMessages(prevProps);
} }
shouldUpdateScroll(_, { location }) {
return location.state !== previewMediaState && location.state !== previewVideoState;
}
render() { render() {
const { me, themeCss, locale, customCss } = this.props; const { me, themeCss, locale, customCss } = this.props;
if (me === null) return null; if (me === null) return null;
@ -137,7 +143,7 @@ class SoapboxMount extends React.PureComponent {
<meta name='theme-color' content={this.props.brandColor} /> <meta name='theme-color' content={this.props.brandColor} />
</Helmet> </Helmet>
<BrowserRouter> <BrowserRouter>
<ScrollContext> <ScrollContext shouldUpdateScroll={this.shouldUpdateScroll}>
<Switch> <Switch>
{!me && <Route exact path='/' component={PublicLayout} />} {!me && <Route exact path='/' component={PublicLayout} />}
<Route exact path='/about/:slug?' component={PublicLayout} /> <Route exact path='/about/:slug?' component={PublicLayout} />