From 6aae56527fa0ae7503c540a14d6f5975d65b7c4b Mon Sep 17 00:00:00 2001 From: hristoterezov Date: Mon, 7 May 2018 12:36:02 +0300 Subject: [PATCH] fix(web_ios): Not rendering when the browser back button is pressed. --- react/index.web.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/react/index.web.js b/react/index.web.js index a8726e03e4..b03875520b 100644 --- a/react/index.web.js +++ b/react/index.web.js @@ -6,8 +6,10 @@ import ReactDOM from 'react-dom'; import { getJitsiMeetTransport } from '../modules/transport'; import { App } from './features/app'; +import { Platform } from './features/base/react'; const logger = require('jitsi-meet-logger').getLogger(__filename); +const OS = Platform.OS; /** * Renders the app when the DOM tree has been loaded. @@ -22,6 +24,23 @@ document.addEventListener('DOMContentLoaded', () => { ReactDOM.render(, document.getElementById('react')); }); +// Workaround for the issue when returning to a page with the back button and +// the page is loaded from the 'back-forward' cache on iOS which causes nothing +// to be rendered. +if (OS === 'ios') { + window.addEventListener('pageshow', event => { + // Detect pages loaded from the 'back-forward' cache + // (https://webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/) + if (event.persisted) { + // Maybe there is a more graceful approach but in the moment of + // writing nothing else resolves the issue. I tried to execute our + // DOMContentLoaded handler but it seems that the 'onpageshow' event + // is triggered only when 'window.location.reload()' code exists. + window.location.reload(); + } + }); +} + /** * Stops collecting the logs and disposing the API when the user closes the * page.