Skip to content

Commit 68e8721

Browse files
committed
Refresh routine data on load when starting the gym mode
This prevents errors when the user created or deleted a workout session for the current routine over the web interface See #876
1 parent 48d314f commit 68e8721

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

lib/widgets/routines/forms/session.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import 'package:clock/clock.dart';
2020
import 'package:flutter/material.dart';
21+
import 'package:logging/logging.dart';
2122
import 'package:provider/provider.dart';
2223
import 'package:wger/exceptions/http_exception.dart';
2324
import 'package:wger/helpers/consts.dart';
@@ -28,6 +29,7 @@ import 'package:wger/models/workouts/session.dart';
2829
import 'package:wger/providers/routines.dart';
2930

3031
class SessionForm extends StatefulWidget {
32+
final _logger = Logger('SessionForm');
3133
final WorkoutSession _session;
3234
final int _routineId;
3335
final Function()? _onSaved;
@@ -215,11 +217,18 @@ class _SessionFormState extends State<SessionForm> {
215217
}
216218
_form.currentState!.save();
217219

220+
// Reset any previous error message
221+
setState(() {
222+
errorMessage = const SizedBox.shrink();
223+
});
224+
218225
// Save the entry on the server
219226
try {
220227
if (widget._session.id == null) {
228+
widget._logger.fine('Adding new session');
221229
await routinesProvider.addSession(widget._session, widget._routineId);
222230
} else {
231+
widget._logger.fine('Editing existing session with id ${widget._session.id}');
223232
await routinesProvider.editSession(widget._session);
224233
}
225234

@@ -231,6 +240,7 @@ class _SessionFormState extends State<SessionForm> {
231240
widget._onSaved!();
232241
}
233242
} on WgerHttpException catch (error) {
243+
widget._logger.warning('Could not save session: $error');
234244
if (context.mounted) {
235245
setState(() {
236246
errorMessage = FormHttpErrorsWidget(error);

lib/widgets/routines/gym_mode/gym_mode.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,14 @@ class _GymModeState extends ConsumerState<GymMode> {
7272
}
7373

7474
Future<int> _loadGymState() async {
75+
// Re-fetch the current routine data to ensure we have the latest session
76+
// data since it is possible that the user created or deleted it from the
77+
// web interface.
78+
await context
79+
.read<RoutinesProvider>()
80+
.fetchAndSetRoutineFull(widget._dayDataGym.day!.routineId);
81+
widget._logger.fine('Refreshed routine data');
82+
7583
final validUntil = ref.read(gymStateProvider).validUntil;
7684
final currentPage = ref.read(gymStateProvider).currentPage;
7785
final savedDayId = ref.read(gymStateProvider).dayId;

0 commit comments

Comments
 (0)