Browse Source

Fix crash when switching back/from mobile layout (#11655)

Fixes #11630
master^2
ThibG 4 years ago
committed by Eugen Rochko
parent
commit
91582937f3
2 changed files with 26 additions and 2 deletions
  1. +13
    -1
      app/javascript/mastodon/components/column_back_button.js
  2. +13
    -1
      app/javascript/mastodon/components/column_header.js

+ 13
- 1
app/javascript/mastodon/components/column_back_button.js View File

@@ -35,7 +35,19 @@ export default class ColumnBackButton extends React.PureComponent {
if (multiColumn) {
return component;
} else {
return createPortal(component, document.getElementById('tabs-bar__portal'));
// The portal container and the component may be rendered to the DOM in
// the same React render pass, so the container might not be available at
// the time `render()` is called.
const container = document.getElementById('tabs-bar__portal');
if (container === null) {
// The container wasn't available, force a re-render so that the
// component can eventually be inserted in the container and not scroll
// with the rest of the area.
this.forceUpdate();
return component;
} else {
return createPortal(component, container);
}
}
}



+ 13
- 1
app/javascript/mastodon/components/column_header.js View File

@@ -178,7 +178,19 @@ class ColumnHeader extends React.PureComponent {
if (multiColumn || placeholder) {
return component;
} else {
return createPortal(component, document.getElementById('tabs-bar__portal'));
// The portal container and the component may be rendered to the DOM in
// the same React render pass, so the container might not be available at
// the time `render()` is called.
const container = document.getElementById('tabs-bar__portal');
if (container === null) {
// The container wasn't available, force a re-render so that the
// component can eventually be inserted in the container and not scroll
// with the rest of the area.
this.forceUpdate();
return component;
} else {
return createPortal(component, container);
}
}
}



Loading…
Cancel
Save