diff options
Diffstat (limited to 'vnext/src/index.js')
-rw-r--r-- | vnext/src/index.js | 49 |
1 files changed, 30 insertions, 19 deletions
diff --git a/vnext/src/index.js b/vnext/src/index.js index 77f152af..7959186f 100644 --- a/vnext/src/index.js +++ b/vnext/src/index.js @@ -15,27 +15,38 @@ import { CookiesProvider } from 'react-cookie' import { HelmetProvider } from 'react-helmet-async' import { VisitorProvider } from './ui/VisitorContext' +import { me } from './api' const Juick = lazy(() => import('./App')) const props = window.__PROPS__ ? JSON.parse(decodeURIComponent(escape(atob(window.__PROPS__)))) : {} -const JuickApp = () => ( - <StrictMode> - <HelmetProvider> - <VisitorProvider> - <CookiesProvider> - <BrowserRouter> - <Juick {...props} /> - </BrowserRouter> - </CookiesProvider> - </VisitorProvider> - </HelmetProvider> - </StrictMode> -) - -let root = document.getElementById('app') -if (window.__PROPS__) { - hydrateRoot(root, <JuickApp />) -} else { - createRoot(root).render(<JuickApp />) +function ready(fn) { + if (document.readyState != 'loading') { + fn() + } else { + document.addEventListener('DOMContentLoaded', fn) + } } + +ready(async () => { + let visitor = await me() + const JuickApp = () => ( + <StrictMode> + <HelmetProvider> + <VisitorProvider auth={visitor}> + <CookiesProvider> + <BrowserRouter> + <Juick {...props} /> + </BrowserRouter> + </CookiesProvider> + </VisitorProvider> + </HelmetProvider> + </StrictMode> + ) + let root = document.getElementById('app') + if (window.__PROPS__) { + hydrateRoot(root, <JuickApp />) + } else { + createRoot(root).render(<JuickApp />) + } +}) |