35 lines
1003 B
TypeScript
35 lines
1003 B
TypeScript
import React from 'react'
|
|
import ReactDOM from 'react-dom/client'
|
|
import { registerSW } from 'virtual:pwa-register'
|
|
import { App } from './App'
|
|
import './styles.css'
|
|
import './refine.css'
|
|
|
|
async function bootstrap() {
|
|
registerSW({ immediate: true })
|
|
|
|
const session = await fetch('/api/session', { headers: { Accept: 'application/json' } })
|
|
if (session.status === 401) {
|
|
window.location.assign('/auth/login')
|
|
return
|
|
}
|
|
if (!session.ok) throw new Error(`Session check failed: ${session.status}`)
|
|
|
|
const payload = await session.json()
|
|
ReactDOM.createRoot(document.getElementById('root')!).render(
|
|
<React.StrictMode>
|
|
<App user={payload.user} />
|
|
</React.StrictMode>
|
|
)
|
|
}
|
|
|
|
bootstrap().catch(error => {
|
|
document.body.innerHTML = `
|
|
<main style="font-family:system-ui;padding:24px;max-width:720px;margin:auto">
|
|
<h1>Template Studio</h1>
|
|
<p>Unable to start the application.</p>
|
|
<pre style="white-space:pre-wrap">${String(error)}</pre>
|
|
</main>
|
|
`
|
|
})
|