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}