[Glitch] Fix crash when switching back/from mobile layout

Port 91582937f3 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
This commit is contained in:
ThibG 2019-08-25 15:49:02 +02:00
parent ef925f31a6
commit c2112c7781
2 changed files with 26 additions and 2 deletions

View File

@ -41,7 +41,19 @@ export default class ColumnBackButton extends React.PureComponent {
if (multiColumn) { if (multiColumn) {
return component; return component;
} else { } 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);
}
} }
} }

View File

@ -235,7 +235,19 @@ class ColumnHeader extends React.PureComponent {
if (multiColumn || placeholder) { if (multiColumn || placeholder) {
return component; return component;
} else { } 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);
}
} }
} }