diff --git a/lib/pages/spaces_management/space_model/bloc/create_space_model_bloc.dart b/lib/pages/spaces_management/space_model/bloc/create_space_model_bloc.dart index e39d3b3d..25d7c731 100644 --- a/lib/pages/spaces_management/space_model/bloc/create_space_model_bloc.dart +++ b/lib/pages/spaces_management/space_model/bloc/create_space_model_bloc.dart @@ -3,7 +3,8 @@ import 'package:syncrow_web/pages/spaces_management/space_model/bloc/create_spac import 'package:syncrow_web/pages/spaces_management/space_model/bloc/create_space_model_state.dart'; import 'package:syncrow_web/pages/spaces_management/space_model/models/space_template_model.dart'; -class CreateSpaceModelBloc extends Bloc { +class CreateSpaceModelBloc + extends Bloc { SpaceTemplateModel? _space; CreateSpaceModelBloc() : super(CreateSpaceModelInitial()) { @@ -22,5 +23,20 @@ class CreateSpaceModelBloc extends Bloc((event, emit) { + if (_space != null) { + final updatedSpace = _space!.copyWith( + subspaceModels: [ + ...(_space!.subspaceModels ?? []), + ...event.subspaces, + ], + ); + _space = updatedSpace; + emit(CreateSpaceModelLoaded(updatedSpace)); + } else { + emit(CreateSpaceModelError("Space template not initialized")); + } + }); } -} \ No newline at end of file +} diff --git a/lib/pages/spaces_management/space_model/bloc/create_space_model_event.dart b/lib/pages/spaces_management/space_model/bloc/create_space_model_event.dart index f3cee617..d3fe8f93 100644 --- a/lib/pages/spaces_management/space_model/bloc/create_space_model_event.dart +++ b/lib/pages/spaces_management/space_model/bloc/create_space_model_event.dart @@ -9,3 +9,9 @@ class UpdateSpaceTemplate extends CreateSpaceModelEvent { UpdateSpaceTemplate(this.spaceTemplate); } + +class AddSubspacesToSpaceTemplate extends CreateSpaceModelEvent { + final List subspaces; + + AddSubspacesToSpaceTemplate(this.subspaces); +} diff --git a/lib/pages/spaces_management/space_model/models/space_template_model.dart b/lib/pages/spaces_management/space_model/models/space_template_model.dart index a885ea6c..d6f8090e 100644 --- a/lib/pages/spaces_management/space_model/models/space_template_model.dart +++ b/lib/pages/spaces_management/space_model/models/space_template_model.dart @@ -25,11 +25,11 @@ class SpaceTemplateModel { internalId: internalId, modelName: json['modelName'] ?? '', subspaceModels: (json['subspaceModels'] as List) - .map((item) => SubspaceTemplateModel.fromJson(item)) - .toList(), + .map((item) => SubspaceTemplateModel.fromJson(item)) + .toList(), tags: (json['tags'] as List) - .map((item) => TagModel.fromJson(item)) - .toList(), + .map((item) => TagModel.fromJson(item)) + .toList(), ); } @@ -41,6 +41,22 @@ class SpaceTemplateModel { 'tags': tags?.map((e) => e.toJson()).toList(), }; } + + SpaceTemplateModel copyWith({ + String? uuid, + String? modelName, + List? subspaceModels, + List? tags, + String? internalId, + }) { + return SpaceTemplateModel( + uuid: uuid ?? this.uuid, + modelName: modelName ?? this.modelName, + subspaceModels: subspaceModels ?? this.subspaceModels, + tags: tags ?? this.tags, + internalId: internalId ?? this.internalId, + ); + } } class SubspaceTemplateModel { diff --git a/lib/pages/spaces_management/space_model/widgets/dialog/create_space_model_dialog.dart b/lib/pages/spaces_management/space_model/widgets/dialog/create_space_model_dialog.dart index cdb4ab60..c152fcc8 100644 --- a/lib/pages/spaces_management/space_model/widgets/dialog/create_space_model_dialog.dart +++ b/lib/pages/spaces_management/space_model/widgets/dialog/create_space_model_dialog.dart @@ -3,6 +3,8 @@ import 'package:syncrow_web/pages/common/buttons/cancel_button.dart'; import 'package:syncrow_web/pages/common/buttons/default_button.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/model/product_model.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/add_device_type_widget.dart'; +import 'package:syncrow_web/pages/spaces_management/space_model/bloc/create_space_model_bloc.dart'; +import 'package:syncrow_web/pages/spaces_management/space_model/bloc/create_space_model_event.dart'; import 'package:syncrow_web/pages/spaces_management/space_model/models/space_template_model.dart'; import 'package:syncrow_web/pages/spaces_management/space_model/widgets/button_content_widget.dart'; import 'package:syncrow_web/pages/spaces_management/space_model/widgets/dialog/create_subspace_model_dialog.dart'; @@ -73,7 +75,11 @@ class CreateSpaceModelDialog extends StatelessWidget { if (result != null) { // Update the subspaces subspaces = result; - print('Updated Subspaces: $subspaces'); + if (result.isNotEmpty) { + context + .read() + .add(AddSubspacesToSpaceTemplate(subspaces)); + } } }, style: TextButton.styleFrom(