main.ts RawHistoryFolder
1import { AppService } from './services/app.js';
2import { BrowserControlsService } from './services/browser-controls.js';
3import { DOMRenderer } from './utils/dom.js';
4
5class DumberBrowserApp {
6 private appService: AppService;
7 private browserControls: BrowserControlsService;
8 private domRenderer: DOMRenderer;
9
10 constructor() {
11 this.appService = new AppService();
12 this.browserControls = new BrowserControlsService();
13 this.domRenderer = new DOMRenderer();
14 }
15
16 async initialize(): Promise<void> {
17 try {
18 // Show loading states
19 this.domRenderer.showLoading('history');
20 this.domRenderer.showLoading('shortcuts');
21
22 // Initialize services
23 await this.appService.initialize();
24
25 // Initialize browser controls
26 await this.browserControls.initialize();
27
28 // Render the UI
29 this.render();
30
31 console.log('✓ Dumber Browser initialized successfully');
32 } catch (error) {
33 console.error('Failed to initialize Dumber Browser:', error);
34 this.handleInitializationError();
35 }
36 }
37
38 private render(): void {
39 try {
40 // Render history
41 const history = this.appService.getHistory();
42 this.domRenderer.displayHistory(history);
43
44 // Render shortcuts
45 const shortcuts = this.appService.getShortcuts();
46 this.domRenderer.displayShortcuts(shortcuts);
47 } catch (error) {
48 console.error('Failed to render UI:', error);
49 this.domRenderer.showError('history', 'Failed to load history');
50 this.domRenderer.showError('shortcuts', 'Failed to load shortcuts');
51 }
52 }
53
54 private handleInitializationError(): void {
55 this.domRenderer.showError('history', 'Failed to initialize application');
56 this.domRenderer.showError('shortcuts', 'Failed to initialize application');
57 }
58}
59
60// Initialize the application when the DOM is ready
61function initializeApp(): void {
62 const app = new DumberBrowserApp();
63 app.initialize().catch(error => {
64 console.error('Critical error during app initialization:', error);
65 });
66}
67
68// Wait for DOM to be ready
69if (document.readyState === 'loading') {
70 document.addEventListener('DOMContentLoaded', initializeApp);
71} else {
72 initializeApp();
73}