|
import { verifyStartup, showCompatibilityError } from './startup-check.js';
|
|
|
|
const startupResults = verifyStartup();
|
|
|
|
if (startupResults.failed.length > 0) {
|
|
console.error('Startup checks failed:', startupResults.failed);
|
|
showCompatibilityError(startupResults);
|
|
} else {
|
|
console.log('All startup checks passed');
|
|
|
|
import('./app.js').then(({ default: app }) => {
|
|
return Promise.all([
|
|
import('./components/error-boundary.js'),
|
|
import('./components/rbox-app.js')
|
|
]).then(([errorBoundary, rboxApp]) => {
|
|
if (!app.isReady()) {
|
|
console.error('CRITICAL: Application failed to initialize properly');
|
|
document.body.innerHTML = `
|
|
<div style="padding: 2rem; text-align: center; font-family: sans-serif;">
|
|
<h1 style="color: #d32f2f;">Application Failed to Initialize</h1>
|
|
<p>Please refresh the page. If the problem persists, check the console for errors.</p>
|
|
<button onclick="location.reload()" style="padding: 0.75rem 1.5rem; background: #2196F3; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 1rem;">
|
|
Reload Page
|
|
</button>
|
|
</div>
|
|
`;
|
|
return;
|
|
}
|
|
|
|
customElements.define('rbox-app', rboxApp.RBoxApp);
|
|
|
|
if ('serviceWorker' in navigator) {
|
|
window.addEventListener('load', () => {
|
|
navigator.serviceWorker.register('/static/service-worker.js').then(() => {
|
|
app.getLogger().info('Service worker registered successfully');
|
|
}).catch((error) => {
|
|
app.getLogger().error('Service worker registration failed', error);
|
|
});
|
|
});
|
|
}
|
|
|
|
app.getLogger().info('Main application loaded successfully');
|
|
|
|
window.addEventListener('load', () => {
|
|
app.getLazyLoader().observeAll('[data-src]');
|
|
app.getLogger().info('Application fully ready');
|
|
});
|
|
});
|
|
}).catch((error) => {
|
|
console.error('Failed to load application modules:', error);
|
|
document.body.innerHTML = `
|
|
<div style="padding: 2rem; text-align: center; font-family: sans-serif;">
|
|
<h1 style="color: #d32f2f;">Failed to Load Application</h1>
|
|
<p>${error.message}</p>
|
|
<button onclick="location.reload()" style="padding: 0.75rem 1.5rem; background: #2196F3; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 1rem;">
|
|
Reload Page
|
|
</button>
|
|
</div>
|
|
`;
|
|
});
|
|
}
|