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 3790991e..1d5ac2a1 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 @@ -68,8 +68,12 @@ class CreateSpaceModelBloc on((event, emit) { _space = event.spaceTemplate; - emit(CreateSpaceModelLoaded(_space!)); + final String? errorMessage = _checkDuplicateModelName( + event.allModels ?? [], event.spaceTemplate.modelName); + + emit(CreateSpaceModelLoaded(_space!,errorMessage: errorMessage ?? '')); }); + on((event, emit) { final currentState = state; @@ -352,4 +356,11 @@ class CreateSpaceModelBloc return tagUpdates; } + + String? _checkDuplicateModelName(List allModels, String name) { + if (allModels.contains(name)) { + return "Duplicate Model name"; + } + return null; + } } 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 22828941..d0cd245c 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 @@ -14,8 +14,9 @@ class LoadSpaceTemplate extends CreateSpaceModelEvent {} class UpdateSpaceTemplate extends CreateSpaceModelEvent { final SpaceTemplateModel spaceTemplate; + List? allModels; - UpdateSpaceTemplate(this.spaceTemplate); + UpdateSpaceTemplate(this.spaceTemplate,this.allModels); } class CreateSpaceTemplate extends CreateSpaceModelEvent { 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 86a3938f..5eedbfbb 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 @@ -52,12 +52,12 @@ class CreateSpaceModelDialog extends StatelessWidget { create: (_) { final bloc = CreateSpaceModelBloc(_spaceModelApi); if (spaceModel != null) { - bloc.add(UpdateSpaceTemplate(spaceModel!)); + bloc.add(UpdateSpaceTemplate(spaceModel!,otherSpaceModels)); } else { bloc.add(UpdateSpaceTemplate(SpaceTemplateModel( modelName: '', subspaceModels: const [], - ))); + ),otherSpaceModels)); } spaceNameController.addListener(() { @@ -127,6 +127,11 @@ class CreateSpaceModelDialog extends StatelessWidget { context .read() .add(AddSubspacesToSpaceTemplate(updatedSubspaces)); + + context.read().add( + UpdateSpaceTemplateName( + name: spaceNameController.text, + allModels: otherSpaceModels ?? [])); }, ), const SizedBox(height: 10), @@ -150,16 +155,18 @@ class CreateSpaceModelDialog extends StatelessWidget { Expanded( child: CancelButton( label: 'Cancel', - onPressed: (){ - Navigator.of(context).pop();}, + onPressed: () { + Navigator.of(context).pop(); + }, ), ), const SizedBox(width: 10), Expanded( child: DefaultButton( - onPressed: state.errorMessage == null && + onPressed: ( state.errorMessage == null) && isNameValid ? () { + final updatedSpaceTemplate = updatedSpaceModel.copyWith( modelName: @@ -236,10 +243,10 @@ class CreateSpaceModelDialog extends StatelessWidget { : null, backgroundColor: ColorsManager.secondaryColor, borderRadius: 10, - foregroundColor: state.errorMessage == null && - isNameValid - ? ColorsManager.whiteColors - : ColorsManager.whiteColorsWithOpacity, + foregroundColor: + state.errorMessage == null && isNameValid + ? ColorsManager.whiteColors + : ColorsManager.whiteColorsWithOpacity, child: const Text('OK'), ), ),