Spaces:
Sleeping
Sleeping
| // Main application entry point | |
| import ClozeGameEngine from './clozeGameEngine.js'; | |
| import bookDataService from './bookDataService.js'; | |
| import { AIService } from './aiService.js'; | |
| import ChatInterface from './chatInterface.js'; | |
| import ConversationManager from './conversationManager.js'; | |
| class ClozeReaderApp { | |
| constructor() { | |
| this.bookDataService = bookDataService; // Already instantiated | |
| this.aiService = new AIService(); | |
| this.gameEngine = new ClozeGameEngine(); | |
| this.chatInterface = new ChatInterface(this.aiService); | |
| this.conversationManager = new ConversationManager(this.aiService); | |
| this.init(); | |
| } | |
| async init() { | |
| try { | |
| // Initialize services | |
| await this.bookDataService.initialize(); | |
| // Start the game | |
| await this.gameEngine.initialize(); | |
| // Initialize chat interface | |
| this.chatInterface.initialize(); | |
| console.log('Cloze Reader application initialized successfully'); | |
| } catch (error) { | |
| console.error('Failed to initialize application:', error); | |
| this.showError('Failed to load the application. Please refresh the page.'); | |
| } | |
| } | |
| showError(message) { | |
| const loadingElement = document.getElementById('loading'); | |
| if (loadingElement) { | |
| loadingElement.innerHTML = `<p class="text-red-600">${message}</p>`; | |
| } | |
| } | |
| } | |
| // Initialize the application when DOM is loaded | |
| document.addEventListener('DOMContentLoaded', () => { | |
| new ClozeReaderApp(); | |
| }); |