Skip to content

Commit 4effd5a

Browse files
committed
Show server side validation errors
1 parent 2d6a892 commit 4effd5a

File tree

3 files changed

+77
-60
lines changed

3 files changed

+77
-60
lines changed

.gitignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,6 @@
3333
**/failures/*.png
3434

3535

36-
# Web related
37-
lib/generated_plugin_registrant.dart
38-
3936
# Symbolication related
4037
app.*.symbols
4138

lib/widgets/routines/forms/routine.dart

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -211,17 +211,27 @@ class _RoutineFormState extends State<RoutineForm> {
211211
});
212212

213213
// Save to DB
214-
final routinesProvider = context.read<RoutinesProvider>();
215-
216-
if (widget._routine.id != null) {
217-
await routinesProvider.editRoutine(widget._routine);
218-
} else {
219-
final routine = await routinesProvider.addRoutine(widget._routine);
220-
if (context.mounted) {
221-
Navigator.of(context).pushReplacementNamed(
222-
RoutineEditScreen.routeName,
223-
arguments: routine.id,
224-
);
214+
try {
215+
final routinesProvider = context.read<RoutinesProvider>();
216+
217+
if (widget._routine.id != null) {
218+
await routinesProvider.editRoutine(widget._routine);
219+
} else {
220+
final routine = await routinesProvider.addRoutine(widget._routine);
221+
if (context.mounted) {
222+
Navigator.of(context).pushReplacementNamed(
223+
RoutineEditScreen.routeName,
224+
arguments: routine.id,
225+
);
226+
}
227+
}
228+
} catch (e) {
229+
ScaffoldMessenger.of(context).showSnackBar(
230+
SnackBar(content: Text('${i18n.anErrorOccurred} $e')),
231+
);
232+
} finally {
233+
if (mounted) {
234+
setState(() => isSaving = false);
225235
}
226236
}
227237

lib/widgets/routines/forms/slot.dart

Lines changed: 56 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -338,52 +338,62 @@ class _SlotEntryFormState extends State<SlotEntryForm> {
338338
setState(() => isSaving = true);
339339

340340
// Process new, edited or entries to be deleted
341-
await Future.wait([
342-
provider.handleConfig(
343-
widget.entry,
344-
setsSliderValue == 0 ? '' : setsSliderValue.round().toString(),
345-
ConfigType.sets,
346-
),
347-
provider.handleConfig(
348-
widget.entry,
349-
weightController.text,
350-
ConfigType.weight,
351-
),
352-
provider.handleConfig(
353-
widget.entry,
354-
maxWeightController.text,
355-
ConfigType.maxWeight,
356-
),
357-
provider.handleConfig(
358-
widget.entry,
359-
repetitionsController.text,
360-
ConfigType.repetitions,
361-
),
362-
provider.handleConfig(
363-
widget.entry,
364-
maxRepetitionsController.text,
365-
ConfigType.maxRepetitions,
366-
),
367-
provider.handleConfig(
368-
widget.entry,
369-
restController.text,
370-
ConfigType.rest,
371-
),
372-
provider.handleConfig(
373-
widget.entry,
374-
maxRestController.text,
375-
ConfigType.maxRest,
376-
),
377-
provider.handleConfig(
378-
widget.entry,
379-
rirController.text,
380-
ConfigType.rir,
381-
),
382-
]);
383-
384-
await provider.editSlotEntry(widget.entry, widget.routineId);
385-
if (mounted) {
386-
setState(() => isSaving = false);
341+
try {
342+
await Future.wait([
343+
provider.handleConfig(
344+
widget.entry,
345+
setsSliderValue == 0 ? '' : setsSliderValue.round().toString(),
346+
ConfigType.sets,
347+
),
348+
provider.handleConfig(
349+
widget.entry,
350+
weightController.text,
351+
ConfigType.weight,
352+
),
353+
provider.handleConfig(
354+
widget.entry,
355+
maxWeightController.text,
356+
ConfigType.maxWeight,
357+
),
358+
provider.handleConfig(
359+
widget.entry,
360+
repetitionsController.text,
361+
ConfigType.repetitions,
362+
),
363+
provider.handleConfig(
364+
widget.entry,
365+
maxRepetitionsController.text,
366+
ConfigType.maxRepetitions,
367+
),
368+
provider.handleConfig(
369+
widget.entry,
370+
restController.text,
371+
ConfigType.rest,
372+
),
373+
provider.handleConfig(
374+
widget.entry,
375+
maxRestController.text,
376+
ConfigType.maxRest,
377+
),
378+
provider.handleConfig(
379+
widget.entry,
380+
rirController.text,
381+
ConfigType.rir,
382+
),
383+
]);
384+
385+
await provider.editSlotEntry(widget.entry, widget.routineId);
386+
if (mounted) {
387+
setState(() => isSaving = false);
388+
}
389+
} catch (e) {
390+
ScaffoldMessenger.of(context).showSnackBar(
391+
SnackBar(content: Text('${i18n.anErrorOccurred} $e')),
392+
);
393+
} finally {
394+
if (mounted) {
395+
setState(() => isSaving = false);
396+
}
387397
}
388398
},
389399
child:

0 commit comments

Comments
 (0)