import React from 'react'; let localStorageAvailable; try { localStorageAvailable = Boolean(window.localStorage); } catch (e) { localStorageAvailable = false; } export const lazyImport = (componentImport) => React.lazy(async () => { const pageHasAlreadyBeenForceRefreshed = localStorageAvailable ? JSON.parse(window.localStorage.getItem('page-has-been-force-refreshed') || 'false') : false; try { const component = await componentImport(); if (localStorageAvailable) { window.localStorage.setItem('page-has-been-force-refreshed', 'false'); } return component; } catch (error) { if (!pageHasAlreadyBeenForceRefreshed) { // It's highly likely that the user's session is old. Try reloading once. if (localStorageAvailable) { window.localStorage.setItem('page-has-been-force-refreshed', 'true'); } return window.location.reload(); } // If it still didn't work, then relay the error. throw error; } });