From 5058498c4fa88884ca6719c1c7ebe862d50e290c Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Fri, 31 Jan 2025 16:24:56 +0100 Subject: [PATCH] Allow passing all parameters to the WorkoutSession constructor --- lib/models/workouts/session.dart | 25 ++++++++++--------------- lib/models/workouts/session.g.dart | 21 +++++++++++---------- lib/widgets/routines/gym_mode.dart | 13 +++++++------ test_data/routines.dart | 4 ++-- 4 files changed, 30 insertions(+), 33 deletions(-) diff --git a/lib/models/workouts/session.dart b/lib/models/workouts/session.dart index 46c4a346..e6446033 100644 --- a/lib/models/workouts/session.dart +++ b/lib/models/workouts/session.dart @@ -51,22 +51,17 @@ class WorkoutSession { @JsonKey(required: false, includeToJson: false, defaultValue: []) List logs = []; - WorkoutSession(); - - WorkoutSession.withData({ - required this.id, + WorkoutSession({ + this.id, required this.routineId, - required this.date, - required this.impression, - required this.notes, - required this.timeStart, - required this.timeEnd, - this.logs = const [], - }); - - WorkoutSession.now() { - timeStart = TimeOfDay.now(); - timeEnd = TimeOfDay.now(); + this.impression = 2, + this.notes = '', + this.timeStart, + this.timeEnd, + this.logs = const [], + DateTime? date, + }) { + this.date = date ?? DateTime.now(); } // Boilerplate diff --git a/lib/models/workouts/session.g.dart b/lib/models/workouts/session.g.dart index caae874c..d22d9443 100644 --- a/lib/models/workouts/session.g.dart +++ b/lib/models/workouts/session.g.dart @@ -11,18 +11,19 @@ WorkoutSession _$WorkoutSessionFromJson(Map json) { json, requiredKeys: const ['id', 'routine', 'date', 'impression', 'time_start', 'time_end'], ); - return WorkoutSession() - ..id = (json['id'] as num?)?.toInt() - ..routineId = (json['routine'] as num).toInt() - ..date = DateTime.parse(json['date'] as String) - ..impression = stringToNum(json['impression'] as String?) - ..notes = json['notes'] as String? ?? '' - ..timeStart = stringToTime(json['time_start'] as String?) - ..timeEnd = stringToTime(json['time_end'] as String?) - ..logs = (json['logs'] as List?) + return WorkoutSession( + id: (json['id'] as num?)?.toInt(), + routineId: (json['routine'] as num).toInt(), + impression: json['impression'] == null ? 2 : stringToNum(json['impression'] as String?), + notes: json['notes'] as String? ?? '', + timeStart: stringToTime(json['time_start'] as String?), + timeEnd: stringToTime(json['time_end'] as String?), + logs: (json['logs'] as List?) ?.map((e) => Log.fromJson(e as Map)) .toList() ?? - []; + [], + date: json['date'] == null ? null : DateTime.parse(json['date'] as String), + ); } Map _$WorkoutSessionToJson(WorkoutSession instance) => { diff --git a/lib/widgets/routines/gym_mode.dart b/lib/widgets/routines/gym_mode.dart index 2e17686f..c468c119 100644 --- a/lib/widgets/routines/gym_mode.dart +++ b/lib/widgets/routines/gym_mode.dart @@ -742,12 +742,13 @@ class SessionPage extends StatefulWidget { ) { _session = _routine.sessions.map((sessionApi) => sessionApi.session).firstWhere( (session) => session.date.isSameDayAs(DateTime.now()), - orElse: () => WorkoutSession() - ..routineId = _routine.id! - ..impression = DEFAULT_IMPRESSION - ..date = DateTime.now() - ..timeStart = _start - ..timeEnd = TimeOfDay.now(), + orElse: () => WorkoutSession( + routineId: _routine.id!, + impression: DEFAULT_IMPRESSION, + date: DateTime.now(), + timeEnd: TimeOfDay.now(), + timeStart: _start, + ), ); } diff --git a/test_data/routines.dart b/test_data/routines.dart index 2e4831c2..4f3cf48d 100644 --- a/test_data/routines.dart +++ b/test_data/routines.dart @@ -85,7 +85,7 @@ Routine getTestRoutine({List? exercises}) { log3.repetitionUnit = testRepetitionUnit1; final session1 = WorkoutSessionApi( - session: WorkoutSession.withData( + session: WorkoutSession( id: 1, routineId: 1, date: DateTime(2021, 5, 1), @@ -98,7 +98,7 @@ Routine getTestRoutine({List? exercises}) { ); final session2 = WorkoutSessionApi( - session: WorkoutSession.withData( + session: WorkoutSession( id: 2, routineId: 1, date: DateTime(2021, 5, 2),