Warn user when project/component name exists

This commit is contained in:
Kenneth Bruen 2022-06-20 01:20:23 +03:00
parent be6e8c9002
commit e4041020f1
Signed by: kbruen
GPG key ID: C1980A470C3EE5B1
2 changed files with 10 additions and 4 deletions

View file

@ -20,7 +20,7 @@ class NewProjectDialog extends HookWidget {
final newProjectAction = useMemoized(() { final newProjectAction = useMemoized(() {
if (newDialogNameController.text.isEmpty) return null; if (newDialogNameController.text.isEmpty) return null;
return () { return () {
projectsState.newProject(newDialogNameController.text); projectsState.newProject(newDialogNameController.text.trim());
Navigator.pop(context); Navigator.pop(context);
}; };
}, [newDialogNameController.text]); }, [newDialogNameController.text]);
@ -217,6 +217,9 @@ class NewProjectDialog extends HookWidget {
icon: const Icon(Icons.done), icon: const Icon(Icons.done),
onPressed: newProjectAction, onPressed: newProjectAction,
), ),
errorText: projectsState.projects.map((p) => p.projectName).contains(newDialogNameController.text.trim())
? 'A project with the same name already exists'
: null,
), ),
onSubmitted: newProjectAction == null ? null : (_) => newProjectAction(), onSubmitted: newProjectAction == null ? null : (_) => newProjectAction(),
), ),

View file

@ -168,9 +168,12 @@ class EditComponentPage extends HookWidget {
sliver: SliverToBoxAdapter( sliver: SliverToBoxAdapter(
child: TextField( child: TextField(
controller: componentNameEditingController, controller: componentNameEditingController,
decoration: const InputDecoration( decoration: InputDecoration(
border: OutlineInputBorder(), border: const OutlineInputBorder(),
labelText: 'Component name', labelText: 'Component name',
errorText: projectState.index.components.where((c) => c.componentId != ce().componentId).map((c) => c.componentName).contains(componentNameEditingController.text.trim())
? 'A component with the same name already exists'
: null,
), ),
), ),
), ),
@ -577,7 +580,7 @@ class EditComponentPage extends HookWidget {
floatingActionButton: !dirty ? null : FloatingActionButton( floatingActionButton: !dirty ? null : FloatingActionButton(
onPressed: () async { onPressed: () async {
if (componentNameEditingController.text.isNotEmpty) { if (componentNameEditingController.text.isNotEmpty) {
await projectState.editComponent(ce().copyWith(componentName: componentNameEditingController.text)); await projectState.editComponent(ce().copyWith(componentName: componentNameEditingController.text.trim()));
} }
await projectState.editComponent(ce().copyWith( await projectState.editComponent(ce().copyWith(
inputs: inputs.value, inputs: inputs.value,