Browse Source

Warn user when project/component name exists

master
Kenneth Bruen 2 years ago
parent
commit
e4041020f1
Signed by: kbruen
GPG Key ID: C1980A470C3EE5B1
  1. 5
      lib/dialogs/new_project.dart
  2. 9
      lib/pages/edit_component.dart

5
lib/dialogs/new_project.dart

@ -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(),
), ),

9
lib/pages/edit_component.dart

@ -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,

Loading…
Cancel
Save