Allow passing all parameters to the WorkoutSession constructor

This commit is contained in:
Roland Geider
2025-01-31 16:24:56 +01:00
parent ef4db2c772
commit 5058498c4f
4 changed files with 30 additions and 33 deletions

View File

@@ -51,22 +51,17 @@ class WorkoutSession {
@JsonKey(required: false, includeToJson: false, defaultValue: [])
List<Log> 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 <Log>[],
DateTime? date,
}) {
this.date = date ?? DateTime.now();
}
// Boilerplate

View File

@@ -11,18 +11,19 @@ WorkoutSession _$WorkoutSessionFromJson(Map<String, dynamic> 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<dynamic>?)
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<dynamic>?)
?.map((e) => Log.fromJson(e as Map<String, dynamic>))
.toList() ??
[];
[],
date: json['date'] == null ? null : DateTime.parse(json['date'] as String),
);
}
Map<String, dynamic> _$WorkoutSessionToJson(WorkoutSession instance) => <String, dynamic>{

View File

@@ -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,
),
);
}

View File

@@ -85,7 +85,7 @@ Routine getTestRoutine({List<Exercise>? 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<Exercise>? exercises}) {
);
final session2 = WorkoutSessionApi(
session: WorkoutSession.withData(
session: WorkoutSession(
id: 2,
routineId: 1,
date: DateTime(2021, 5, 2),