blob: 2db03df4ed9dc7f6bcd85b5e1a48a952188ebe0f [file]
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();
}
}