From b4f8a59a70ac48d0749ee94fb73168ad89e99d0f Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Sun, 26 Jan 2025 15:07:37 +0100 Subject: [PATCH] Add the newly created session to the routine --- lib/models/workouts/session_api.dart | 2 +- lib/models/workouts/session_api.g.dart | 9 +++++---- lib/providers/routines.dart | 6 ++++-- lib/widgets/routines/gym_mode.dart | 2 +- test/workout/day_form_test.mocks.dart | 10 +++++++--- .../repetition_unit_form_widget_test.mocks.dart | 10 +++++++--- test/workout/routine_edit_screen_test.mocks.dart | 10 +++++++--- test/workout/routine_edit_test.mocks.dart | 10 +++++++--- test/workout/routine_form_test.mocks.dart | 10 +++++++--- test/workout/routine_logs_screen_test.mocks.dart | 10 +++++++--- test/workout/slot_entry_form_test.mocks.dart | 10 +++++++--- test/workout/weight_unit_form_widget_test.mocks.dart | 10 +++++++--- 12 files changed, 67 insertions(+), 32 deletions(-) diff --git a/lib/models/workouts/session_api.dart b/lib/models/workouts/session_api.dart index 12052bec..619823db 100644 --- a/lib/models/workouts/session_api.dart +++ b/lib/models/workouts/session_api.dart @@ -30,7 +30,7 @@ class WorkoutSessionApi { @JsonKey(required: false, includeToJson: false, defaultValue: []) List logs = []; - WorkoutSessionApi(); + WorkoutSessionApi({required this.session, this.logs = const []}); // Boilerplate factory WorkoutSessionApi.fromJson(Map json) => diff --git a/lib/models/workouts/session_api.g.dart b/lib/models/workouts/session_api.g.dart index fcd59cab..57ec196e 100644 --- a/lib/models/workouts/session_api.g.dart +++ b/lib/models/workouts/session_api.g.dart @@ -11,12 +11,13 @@ WorkoutSessionApi _$WorkoutSessionApiFromJson(Map json) { json, requiredKeys: const ['session'], ); - return WorkoutSessionApi() - ..session = WorkoutSession.fromJson(json['session'] as Map) - ..logs = (json['logs'] as List?) + return WorkoutSessionApi( + session: WorkoutSession.fromJson(json['session'] as Map), + logs: (json['logs'] as List?) ?.map((e) => Log.fromJson(e as Map)) .toList() ?? - []; + [], + ); } Map _$WorkoutSessionApiToJson(WorkoutSessionApi instance) => { diff --git a/lib/providers/routines.dart b/lib/providers/routines.dart index d4ba1cd5..4ce85813 100644 --- a/lib/providers/routines.dart +++ b/lib/providers/routines.dart @@ -454,7 +454,6 @@ class RoutinesProvider with ChangeNotifier { baseProvider.makeUrl(_daysUrlPath), ); day = Day.fromJson(data); - day.slots = []; final routine = findById(day.routineId); routine.days.add(day); if (refresh) { @@ -676,12 +675,15 @@ class RoutinesProvider with ChangeNotifier { return sessions; } - Future addSession(WorkoutSession session) async { + Future addSession(WorkoutSession session, int routineId) async { final data = await baseProvider.post( session.toJson(), baseProvider.makeUrl(_sessionUrlPath), ); final newSession = WorkoutSession.fromJson(data); + final routine = findById(routineId); + routine.sessions.add(WorkoutSessionApi(session: newSession)); + notifyListeners(); return newSession; } diff --git a/lib/widgets/routines/gym_mode.dart b/lib/widgets/routines/gym_mode.dart index 3bd90fd7..6ff2b648 100644 --- a/lib/widgets/routines/gym_mode.dart +++ b/lib/widgets/routines/gym_mode.dart @@ -921,7 +921,7 @@ class _SessionPageState extends State { // Save the entry on the server try { if (widget._session.id == null) { - await routinesProvider.addSession(widget._session); + await routinesProvider.addSession(widget._session, widget._routine.id!); } else { await routinesProvider.editSession(widget._session); } diff --git a/test/workout/day_form_test.mocks.dart b/test/workout/day_form_test.mocks.dart index 73a91d00..1e941e3d 100644 --- a/test/workout/day_form_test.mocks.dart +++ b/test/workout/day_form_test.mocks.dart @@ -427,12 +427,16 @@ class MockRoutinesProvider extends _i1.Mock implements _i12.RoutinesProvider { ) as _i13.Future>); @override - _i13.Future<_i10.WorkoutSession> addSession(_i10.WorkoutSession? session) => (super.noSuchMethod( - Invocation.method(#addSession, [session]), + _i13.Future<_i10.WorkoutSession> addSession( + _i10.WorkoutSession? session, + int? routineId, + ) => + (super.noSuchMethod( + Invocation.method(#addSession, [session, routineId]), returnValue: _i13.Future<_i10.WorkoutSession>.value( _FakeWorkoutSession_8( this, - Invocation.method(#addSession, [session]), + Invocation.method(#addSession, [session, routineId]), ), ), ) as _i13.Future<_i10.WorkoutSession>); diff --git a/test/workout/repetition_unit_form_widget_test.mocks.dart b/test/workout/repetition_unit_form_widget_test.mocks.dart index 65ddfa7f..b7568d06 100644 --- a/test/workout/repetition_unit_form_widget_test.mocks.dart +++ b/test/workout/repetition_unit_form_widget_test.mocks.dart @@ -427,12 +427,16 @@ class MockRoutinesProvider extends _i1.Mock implements _i12.RoutinesProvider { ) as _i13.Future>); @override - _i13.Future<_i10.WorkoutSession> addSession(_i10.WorkoutSession? session) => (super.noSuchMethod( - Invocation.method(#addSession, [session]), + _i13.Future<_i10.WorkoutSession> addSession( + _i10.WorkoutSession? session, + int? routineId, + ) => + (super.noSuchMethod( + Invocation.method(#addSession, [session, routineId]), returnValue: _i13.Future<_i10.WorkoutSession>.value( _FakeWorkoutSession_8( this, - Invocation.method(#addSession, [session]), + Invocation.method(#addSession, [session, routineId]), ), ), ) as _i13.Future<_i10.WorkoutSession>); diff --git a/test/workout/routine_edit_screen_test.mocks.dart b/test/workout/routine_edit_screen_test.mocks.dart index 0fbe2241..dd67580c 100644 --- a/test/workout/routine_edit_screen_test.mocks.dart +++ b/test/workout/routine_edit_screen_test.mocks.dart @@ -427,12 +427,16 @@ class MockRoutinesProvider extends _i1.Mock implements _i12.RoutinesProvider { ) as _i13.Future>); @override - _i13.Future<_i10.WorkoutSession> addSession(_i10.WorkoutSession? session) => (super.noSuchMethod( - Invocation.method(#addSession, [session]), + _i13.Future<_i10.WorkoutSession> addSession( + _i10.WorkoutSession? session, + int? routineId, + ) => + (super.noSuchMethod( + Invocation.method(#addSession, [session, routineId]), returnValue: _i13.Future<_i10.WorkoutSession>.value( _FakeWorkoutSession_8( this, - Invocation.method(#addSession, [session]), + Invocation.method(#addSession, [session, routineId]), ), ), ) as _i13.Future<_i10.WorkoutSession>); diff --git a/test/workout/routine_edit_test.mocks.dart b/test/workout/routine_edit_test.mocks.dart index 6a14e034..dff0ee64 100644 --- a/test/workout/routine_edit_test.mocks.dart +++ b/test/workout/routine_edit_test.mocks.dart @@ -427,12 +427,16 @@ class MockRoutinesProvider extends _i1.Mock implements _i12.RoutinesProvider { ) as _i13.Future>); @override - _i13.Future<_i10.WorkoutSession> addSession(_i10.WorkoutSession? session) => (super.noSuchMethod( - Invocation.method(#addSession, [session]), + _i13.Future<_i10.WorkoutSession> addSession( + _i10.WorkoutSession? session, + int? routineId, + ) => + (super.noSuchMethod( + Invocation.method(#addSession, [session, routineId]), returnValue: _i13.Future<_i10.WorkoutSession>.value( _FakeWorkoutSession_8( this, - Invocation.method(#addSession, [session]), + Invocation.method(#addSession, [session, routineId]), ), ), ) as _i13.Future<_i10.WorkoutSession>); diff --git a/test/workout/routine_form_test.mocks.dart b/test/workout/routine_form_test.mocks.dart index 055cf621..96af3739 100644 --- a/test/workout/routine_form_test.mocks.dart +++ b/test/workout/routine_form_test.mocks.dart @@ -427,12 +427,16 @@ class MockRoutinesProvider extends _i1.Mock implements _i12.RoutinesProvider { ) as _i13.Future>); @override - _i13.Future<_i10.WorkoutSession> addSession(_i10.WorkoutSession? session) => (super.noSuchMethod( - Invocation.method(#addSession, [session]), + _i13.Future<_i10.WorkoutSession> addSession( + _i10.WorkoutSession? session, + int? routineId, + ) => + (super.noSuchMethod( + Invocation.method(#addSession, [session, routineId]), returnValue: _i13.Future<_i10.WorkoutSession>.value( _FakeWorkoutSession_8( this, - Invocation.method(#addSession, [session]), + Invocation.method(#addSession, [session, routineId]), ), ), ) as _i13.Future<_i10.WorkoutSession>); diff --git a/test/workout/routine_logs_screen_test.mocks.dart b/test/workout/routine_logs_screen_test.mocks.dart index 91251813..51e60920 100644 --- a/test/workout/routine_logs_screen_test.mocks.dart +++ b/test/workout/routine_logs_screen_test.mocks.dart @@ -427,12 +427,16 @@ class MockRoutinesProvider extends _i1.Mock implements _i12.RoutinesProvider { ) as _i13.Future>); @override - _i13.Future<_i10.WorkoutSession> addSession(_i10.WorkoutSession? session) => (super.noSuchMethod( - Invocation.method(#addSession, [session]), + _i13.Future<_i10.WorkoutSession> addSession( + _i10.WorkoutSession? session, + int? routineId, + ) => + (super.noSuchMethod( + Invocation.method(#addSession, [session, routineId]), returnValue: _i13.Future<_i10.WorkoutSession>.value( _FakeWorkoutSession_8( this, - Invocation.method(#addSession, [session]), + Invocation.method(#addSession, [session, routineId]), ), ), ) as _i13.Future<_i10.WorkoutSession>); diff --git a/test/workout/slot_entry_form_test.mocks.dart b/test/workout/slot_entry_form_test.mocks.dart index 9542257a..c104eed1 100644 --- a/test/workout/slot_entry_form_test.mocks.dart +++ b/test/workout/slot_entry_form_test.mocks.dart @@ -427,12 +427,16 @@ class MockRoutinesProvider extends _i1.Mock implements _i12.RoutinesProvider { ) as _i13.Future>); @override - _i13.Future<_i10.WorkoutSession> addSession(_i10.WorkoutSession? session) => (super.noSuchMethod( - Invocation.method(#addSession, [session]), + _i13.Future<_i10.WorkoutSession> addSession( + _i10.WorkoutSession? session, + int? routineId, + ) => + (super.noSuchMethod( + Invocation.method(#addSession, [session, routineId]), returnValue: _i13.Future<_i10.WorkoutSession>.value( _FakeWorkoutSession_8( this, - Invocation.method(#addSession, [session]), + Invocation.method(#addSession, [session, routineId]), ), ), ) as _i13.Future<_i10.WorkoutSession>); diff --git a/test/workout/weight_unit_form_widget_test.mocks.dart b/test/workout/weight_unit_form_widget_test.mocks.dart index 3d419cf0..386cdd96 100644 --- a/test/workout/weight_unit_form_widget_test.mocks.dart +++ b/test/workout/weight_unit_form_widget_test.mocks.dart @@ -427,12 +427,16 @@ class MockRoutinesProvider extends _i1.Mock implements _i12.RoutinesProvider { ) as _i13.Future>); @override - _i13.Future<_i10.WorkoutSession> addSession(_i10.WorkoutSession? session) => (super.noSuchMethod( - Invocation.method(#addSession, [session]), + _i13.Future<_i10.WorkoutSession> addSession( + _i10.WorkoutSession? session, + int? routineId, + ) => + (super.noSuchMethod( + Invocation.method(#addSession, [session, routineId]), returnValue: _i13.Future<_i10.WorkoutSession>.value( _FakeWorkoutSession_8( this, - Invocation.method(#addSession, [session]), + Invocation.method(#addSession, [session, routineId]), ), ), ) as _i13.Future<_i10.WorkoutSession>);