mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 07:07:19 +00:00
duplicate name validation
This commit is contained in:
@ -68,8 +68,12 @@ class CreateSpaceModelBloc
|
||||
|
||||
on<UpdateSpaceTemplate>((event, emit) {
|
||||
_space = event.spaceTemplate;
|
||||
emit(CreateSpaceModelLoaded(_space!));
|
||||
final String? errorMessage = _checkDuplicateModelName(
|
||||
event.allModels ?? [], event.spaceTemplate.modelName);
|
||||
|
||||
emit(CreateSpaceModelLoaded(_space!,errorMessage: errorMessage ?? ''));
|
||||
});
|
||||
|
||||
on<AddSubspacesToSpaceTemplate>((event, emit) {
|
||||
final currentState = state;
|
||||
|
||||
@ -352,4 +356,11 @@ class CreateSpaceModelBloc
|
||||
|
||||
return tagUpdates;
|
||||
}
|
||||
|
||||
String? _checkDuplicateModelName(List<String> allModels, String name) {
|
||||
if (allModels.contains(name)) {
|
||||
return "Duplicate Model name";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -14,8 +14,9 @@ class LoadSpaceTemplate extends CreateSpaceModelEvent {}
|
||||
|
||||
class UpdateSpaceTemplate extends CreateSpaceModelEvent {
|
||||
final SpaceTemplateModel spaceTemplate;
|
||||
List<String>? allModels;
|
||||
|
||||
UpdateSpaceTemplate(this.spaceTemplate);
|
||||
UpdateSpaceTemplate(this.spaceTemplate,this.allModels);
|
||||
}
|
||||
|
||||
class CreateSpaceTemplate extends CreateSpaceModelEvent {
|
||||
|
@ -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<CreateSpaceModelBloc>()
|
||||
.add(AddSubspacesToSpaceTemplate(updatedSubspaces));
|
||||
|
||||
context.read<CreateSpaceModelBloc>().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'),
|
||||
),
|
||||
),
|
||||
|
Reference in New Issue
Block a user