| import '../../../utils/web_webrtc_manager.dart'; |
| import '../../agent/data/agent_chat_repository.dart'; |
| import '../../agent/view_models/agent_chat_view_model.dart'; |
| import '../../bottompanel/view_models/debug_console_view_model.dart'; |
| import '../../bottompanel/view_models/diagnostics_view_model.dart'; |
| import '../../editor/view_models/tabs_view_model.dart'; |
| import '../../fileexplorer/view_models/file_tree_view_model.dart'; |
| import '../../preview/view_models/inspector_view_model.dart'; |
| import '../../preview/view_models/preview_view_model.dart'; |
| import '../logic/exit_guard.dart'; |
| import '../view_models/panels_view_model.dart'; |
| import 'persisted_project.dart'; |
| |
| /// Bundles all ViewModels and repositories scoped to a single project session. |
| class ProjectSession { |
| ProjectSession({ |
| required this.project, |
| required this.panelsViewModel, |
| required this.tabsViewModel, |
| required this.fileTreeViewModel, |
| required this.debugConsoleViewModel, |
| required this.diagnosticsViewModel, |
| required this.previewViewModel, |
| required this.inspectorViewModel, |
| required this.agentChatRepository, |
| required this.agentChatViewModel, |
| required this.webRTCManager, |
| required this.exitGuard, |
| }); |
| |
| PersistedProject project; |
| |
| final PanelsViewModel panelsViewModel; |
| final TabsViewModel tabsViewModel; |
| final FileTreeViewModel fileTreeViewModel; |
| final DebugConsoleViewModel debugConsoleViewModel; |
| final DiagnosticsViewModel diagnosticsViewModel; |
| final PreviewViewModel previewViewModel; |
| final InspectorViewModel inspectorViewModel; |
| final AgentChatRepository agentChatRepository; |
| final AgentChatViewModel agentChatViewModel; |
| final WebWebRTCManager webRTCManager; |
| final ProjectExitGuard exitGuard; |
| |
| /// Disposes all owned ViewModels and the exit guard. |
| /// Note: fileTreeViewModel must be disposed before tabsViewModel because |
| /// fileTreeViewModel.dispose() calls tabsViewModel.removeListener(). |
| void dispose() { |
| panelsViewModel.dispose(); |
| fileTreeViewModel.dispose(); |
| tabsViewModel.dispose(); |
| debugConsoleViewModel.dispose(); |
| diagnosticsViewModel.dispose(); |
| inspectorViewModel.dispose(); |
| previewViewModel.dispose(); |
| agentChatViewModel.dispose(); |
| webRTCManager.dispose(); |
| exitGuard.dispose(); |
| } |
| } |