Allow deleting days from a routine

This commit is contained in:
Roland Geider
2024-11-12 20:55:37 +01:00
parent 4d4120c904
commit bf73afd9fe
6 changed files with 57 additions and 18 deletions

View File

@@ -441,10 +441,10 @@ class RoutinesProvider with ChangeNotifier {
notifyListeners();
}
Future<void> deleteDay(Day day) async {
await baseProvider.deleteRequest(_daysUrlPath, day.id!);
Future<void> deleteDay(int dayId) async {
await baseProvider.deleteRequest(_daysUrlPath, dayId);
for (final workout in _routines) {
workout.days.removeWhere((element) => element.id == day.id);
workout.days.removeWhere((element) => element.id == dayId);
}
notifyListeners();
}

View File

@@ -19,6 +19,34 @@ class ReorderableDaysList extends StatefulWidget {
required this.onDaySelected,
});
void _showDeleteConfirmationDialog(BuildContext context, Day day) {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: const Text('Confirm Delete'),
content: const Text('Are you sure you want to delete this day?'),
actions: [
TextButton(
onPressed: () {
Navigator.of(context).pop();
},
child: const Text('Cancel'),
),
TextButton(
onPressed: () async {
days.remove(day);
await Provider.of<RoutinesProvider>(context, listen: false).deleteDay(day.id!);
Navigator.of(context).pop();
},
child: const Text('Delete'),
),
],
);
},
);
}
@override
State<ReorderableDaysList> createState() => _ReorderableDaysListState();
}
@@ -61,13 +89,24 @@ class _ReorderableDaysListState extends State<ReorderableDaysList> {
index: index,
child: const Icon(Icons.drag_handle),
),
trailing: IconButton(
onPressed: () {
widget.onDaySelected(day.id!);
},
icon: day.id == widget.selectedDayId
? const Icon(Icons.edit_off)
: const Icon(Icons.edit),
trailing: Row(
mainAxisSize: MainAxisSize.min,
children: [
IconButton(
onPressed: () {
widget.onDaySelected(day.id!);
},
icon: day.id == widget.selectedDayId
? const Icon(Icons.edit_off)
: const Icon(Icons.edit),
),
IconButton(
icon: Icon(Icons.delete),
onPressed: () {
widget._showDeleteConfirmationDialog(context, day); // Call the dialog function
},
),
],
),
);
},

View File

@@ -424,10 +424,10 @@ class MockRoutinesProvider extends _i1.Mock implements _i11.RoutinesProvider {
) as _i12.Future<void>);
@override
_i12.Future<void> deleteDay(_i6.Day? day) => (super.noSuchMethod(
_i12.Future<void> deleteDay(int? dayId) => (super.noSuchMethod(
Invocation.method(
#deleteDay,
[day],
[dayId],
),
returnValue: _i12.Future<void>.value(),
returnValueForMissingStub: _i12.Future<void>.value(),

View File

@@ -424,10 +424,10 @@ class MockRoutinesProvider extends _i1.Mock implements _i11.RoutinesProvider {
) as _i12.Future<void>);
@override
_i12.Future<void> deleteDay(_i6.Day? day) => (super.noSuchMethod(
_i12.Future<void> deleteDay(int? dayId) => (super.noSuchMethod(
Invocation.method(
#deleteDay,
[day],
[dayId],
),
returnValue: _i12.Future<void>.value(),
returnValueForMissingStub: _i12.Future<void>.value(),

View File

@@ -424,10 +424,10 @@ class MockRoutinesProvider extends _i1.Mock implements _i11.RoutinesProvider {
) as _i12.Future<void>);
@override
_i12.Future<void> deleteDay(_i6.Day? day) => (super.noSuchMethod(
_i12.Future<void> deleteDay(int? dayId) => (super.noSuchMethod(
Invocation.method(
#deleteDay,
[day],
[dayId],
),
returnValue: _i12.Future<void>.value(),
returnValueForMissingStub: _i12.Future<void>.value(),

View File

@@ -1155,10 +1155,10 @@ class MockRoutinesProvider extends _i1.Mock implements _i22.RoutinesProvider {
) as _i20.Future<void>);
@override
_i20.Future<void> deleteDay(_i14.Day? day) => (super.noSuchMethod(
_i20.Future<void> deleteDay(int? dayId) => (super.noSuchMethod(
Invocation.method(
#deleteDay,
[day],
[dayId],
),
returnValue: _i20.Future<void>.value(),
returnValueForMissingStub: _i20.Future<void>.value(),