Rename further occurrences of "exercise base" to just "exercise"

This commit is contained in:
Roland Geider
2023-12-26 21:38:07 +01:00
parent c5cbb4f851
commit b64458603f
41 changed files with 331 additions and 337 deletions

View File

@@ -18,7 +18,7 @@ class Exercises extends Table {
TextColumn get data => text()();
// TextColumn get exercisedata => text().map(const ExerciseBaseConverter())();
// TextColumn get data => text().map(const ExerciseBaseConverter())();
DateTimeColumn get lastUpdate => dateTime()();
}

View File

@@ -2,10 +2,10 @@ import 'dart:convert';
import 'package:drift/drift.dart';
import 'package:wger/models/exercises/alias.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/category.dart';
import 'package:wger/models/exercises/comment.dart';
import 'package:wger/models/exercises/equipment.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/exercises/image.dart';
import 'package:wger/models/exercises/language.dart';
import 'package:wger/models/exercises/muscle.dart';
@@ -13,11 +13,11 @@ import 'package:wger/models/exercises/translation.dart';
import 'package:wger/models/exercises/variation.dart';
import 'package:wger/models/exercises/video.dart';
class ExerciseBaseConverter extends TypeConverter<ExerciseBase, String> {
class ExerciseBaseConverter extends TypeConverter<Exercise, String> {
const ExerciseBaseConverter();
@override
ExerciseBase fromSql(String fromDb) {
Exercise fromSql(String fromDb) {
final Map<String, dynamic> baseData = json.decode(fromDb);
final category = ExerciseCategory.fromJson(baseData['categories']);
@@ -33,7 +33,7 @@ class ExerciseBaseConverter extends TypeConverter<ExerciseBase, String> {
id: exerciseData['id'],
name: exerciseData['name'],
description: exerciseData['description'],
baseId: baseData['id'],
exerciseId: baseData['id'],
);
translation.aliases = exerciseData['aliases'].map((e) => Alias.fromJson(e)).toList();
translation.notes = exerciseData['notes'].map((e) => Comment.fromJson(e)).toList();
@@ -41,7 +41,7 @@ class ExerciseBaseConverter extends TypeConverter<ExerciseBase, String> {
translations.add(translation);
}
final exerciseBase = ExerciseBase(
final exerciseBase = Exercise(
id: baseData['id'],
uuid: baseData['uuid'],
created: null,
@@ -51,14 +51,14 @@ class ExerciseBaseConverter extends TypeConverter<ExerciseBase, String> {
equipment: equipment.cast<Equipment>(),
category: category,
images: images.cast<ExerciseImage>(),
exercises: translations,
translations: translations,
videos: videos.cast<Video>(),
);
return exerciseBase;
}
@override
String toSql(ExerciseBase value) {
String toSql(Exercise value) {
return json.encode(value.toJson());
}
}

View File

@@ -22,7 +22,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:provider/provider.dart';
import 'package:wger/exceptions/http_exception.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/exercises/translation.dart';
import 'package:wger/models/workouts/log.dart';
import 'package:wger/providers/workout_plans.dart';
@@ -108,7 +108,7 @@ dynamic showDeleteDialog(
String confirmDeleteName,
Log log,
Translation exercise,
Map<ExerciseBase, List<Log>> exerciseData,
Map<Exercise, List<Log>> exerciseData,
) async {
final res = await showDialog(
context: context,

View File

@@ -26,10 +26,10 @@ import 'package:wger/models/exercises/muscle.dart';
import 'package:wger/models/exercises/translation.dart';
import 'package:wger/models/exercises/video.dart';
part 'base.g.dart';
part 'exercise.g.dart';
@JsonSerializable(explicitToJson: true)
class ExerciseBase extends Equatable {
class Exercise extends Equatable {
@JsonKey(required: true)
final int? id;
@@ -81,7 +81,7 @@ class ExerciseBase extends Equatable {
@JsonKey(includeFromJson: false, includeToJson: false)
List<Video> videos = [];
ExerciseBase({
Exercise({
this.id,
this.uuid,
this.created,
@@ -92,7 +92,7 @@ class ExerciseBase extends Equatable {
List<Muscle>? musclesSecondary,
List<Equipment>? equipment,
List<ExerciseImage>? images,
List<Translation>? exercises,
List<Translation>? translations,
ExerciseCategory? category,
List<Video>? videos,
}) {
@@ -118,12 +118,8 @@ class ExerciseBase extends Equatable {
equipmentIds = equipment.map((e) => e.id).toList();
}
// if (exercises == null) {
// print("Exercises are NULL");
// }
if (exercises != null) {
translations = exercises;
if (translations != null) {
translations = translations;
}
if (videos != null) {
@@ -166,9 +162,9 @@ class ExerciseBase extends Equatable {
}
// Boilerplate
factory ExerciseBase.fromJson(Map<String, dynamic> json) => _$ExerciseBaseFromJson(json);
factory Exercise.fromJson(Map<String, dynamic> json) => _$ExerciseFromJson(json);
Map<String, dynamic> toJson() => _$ExerciseBaseToJson(this);
Map<String, dynamic> toJson() => _$ExerciseToJson(this);
@override
List<Object?> get props => [

View File

@@ -1,12 +1,12 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'base.dart';
part of 'exercise.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
ExerciseBase _$ExerciseBaseFromJson(Map<String, dynamic> json) {
Exercise _$ExerciseFromJson(Map<String, dynamic> json) {
$checkKeys(
json,
requiredKeys: const [
@@ -22,7 +22,7 @@ ExerciseBase _$ExerciseBaseFromJson(Map<String, dynamic> json) {
'equipment'
],
);
return ExerciseBase(
return Exercise(
id: json['id'] as int?,
uuid: json['uuid'] as String?,
created: json['created'] == null ? null : DateTime.parse(json['created'] as String),
@@ -31,6 +31,9 @@ ExerciseBase _$ExerciseBaseFromJson(Map<String, dynamic> json) {
? null
: DateTime.parse(json['last_update_global'] as String),
variationId: json['variations'] as int?,
translations: (json['translations'] as List<dynamic>?)
?.map((e) => Translation.fromJson(e as Map<String, dynamic>))
.toList(),
category: json['categories'] == null
? null
: ExerciseCategory.fromJson(json['categories'] as Map<String, dynamic>),
@@ -39,13 +42,10 @@ ExerciseBase _$ExerciseBaseFromJson(Map<String, dynamic> json) {
..musclesIds = (json['muscles'] as List<dynamic>).map((e) => e as int).toList()
..musclesSecondaryIds =
(json['muscles_secondary'] as List<dynamic>).map((e) => e as int).toList()
..equipmentIds = (json['equipment'] as List<dynamic>).map((e) => e as int).toList()
..translations = (json['translations'] as List<dynamic>)
.map((e) => Translation.fromJson(e as Map<String, dynamic>))
.toList();
..equipmentIds = (json['equipment'] as List<dynamic>).map((e) => e as int).toList();
}
Map<String, dynamic> _$ExerciseBaseToJson(ExerciseBase instance) => <String, dynamic>{
Map<String, dynamic> _$ExerciseToJson(Exercise instance) => <String, dynamic>{
'id': instance.id,
'uuid': instance.uuid,
'variations': instance.variationId,

View File

@@ -10,8 +10,10 @@ class ExerciseData with _$ExerciseData {
factory ExerciseData({
required int id,
required String uuid,
// ignore: invalid_annotation_target
@JsonKey(name: 'language') required int languageId,
@JsonKey(required: true, name: 'exercise_base') required int baseId,
// ignore: invalid_annotation_target
@JsonKey(required: true, name: 'exercise_base') required int exerciseId,
required String description,
required String name,
required List<Alias> aliases,

View File

@@ -21,11 +21,11 @@ ExerciseData _$ExerciseDataFromJson(Map<String, dynamic> json) {
/// @nodoc
mixin _$ExerciseData {
int get id => throw _privateConstructorUsedError;
String get uuid => throw _privateConstructorUsedError;
String get uuid => throw _privateConstructorUsedError; // ignore: invalid_annotation_target
@JsonKey(name: 'language')
int get languageId => throw _privateConstructorUsedError;
int get languageId => throw _privateConstructorUsedError; // ignore: invalid_annotation_target
@JsonKey(required: true, name: 'exercise_base')
int get baseId => throw _privateConstructorUsedError;
int get exerciseId => throw _privateConstructorUsedError;
String get description => throw _privateConstructorUsedError;
String get name => throw _privateConstructorUsedError;
List<Alias> get aliases => throw _privateConstructorUsedError;
@@ -45,7 +45,7 @@ abstract class $ExerciseDataCopyWith<$Res> {
{int id,
String uuid,
@JsonKey(name: 'language') int languageId,
@JsonKey(required: true, name: 'exercise_base') int baseId,
@JsonKey(required: true, name: 'exercise_base') int exerciseId,
String description,
String name,
List<Alias> aliases,
@@ -68,7 +68,7 @@ class _$ExerciseDataCopyWithImpl<$Res, $Val extends ExerciseData>
Object? id = null,
Object? uuid = null,
Object? languageId = null,
Object? baseId = null,
Object? exerciseId = null,
Object? description = null,
Object? name = null,
Object? aliases = null,
@@ -87,9 +87,9 @@ class _$ExerciseDataCopyWithImpl<$Res, $Val extends ExerciseData>
? _value.languageId
: languageId // ignore: cast_nullable_to_non_nullable
as int,
baseId: null == baseId
? _value.baseId
: baseId // ignore: cast_nullable_to_non_nullable
exerciseId: null == exerciseId
? _value.exerciseId
: exerciseId // ignore: cast_nullable_to_non_nullable
as int,
description: null == description
? _value.description
@@ -122,7 +122,7 @@ abstract class _$$ExerciseDataImplCopyWith<$Res> implements $ExerciseDataCopyWit
{int id,
String uuid,
@JsonKey(name: 'language') int languageId,
@JsonKey(required: true, name: 'exercise_base') int baseId,
@JsonKey(required: true, name: 'exercise_base') int exerciseId,
String description,
String name,
List<Alias> aliases,
@@ -143,7 +143,7 @@ class __$$ExerciseDataImplCopyWithImpl<$Res>
Object? id = null,
Object? uuid = null,
Object? languageId = null,
Object? baseId = null,
Object? exerciseId = null,
Object? description = null,
Object? name = null,
Object? aliases = null,
@@ -162,9 +162,9 @@ class __$$ExerciseDataImplCopyWithImpl<$Res>
? _value.languageId
: languageId // ignore: cast_nullable_to_non_nullable
as int,
baseId: null == baseId
? _value.baseId
: baseId // ignore: cast_nullable_to_non_nullable
exerciseId: null == exerciseId
? _value.exerciseId
: exerciseId // ignore: cast_nullable_to_non_nullable
as int,
description: null == description
? _value.description
@@ -193,7 +193,7 @@ class _$ExerciseDataImpl implements _ExerciseData {
{required this.id,
required this.uuid,
@JsonKey(name: 'language') required this.languageId,
@JsonKey(required: true, name: 'exercise_base') required this.baseId,
@JsonKey(required: true, name: 'exercise_base') required this.exerciseId,
required this.description,
required this.name,
required final List<Alias> aliases,
@@ -208,12 +208,14 @@ class _$ExerciseDataImpl implements _ExerciseData {
final int id;
@override
final String uuid;
// ignore: invalid_annotation_target
@override
@JsonKey(name: 'language')
final int languageId;
// ignore: invalid_annotation_target
@override
@JsonKey(required: true, name: 'exercise_base')
final int baseId;
final int exerciseId;
@override
final String description;
@override
@@ -236,7 +238,7 @@ class _$ExerciseDataImpl implements _ExerciseData {
@override
String toString() {
return 'ExerciseData(id: $id, uuid: $uuid, languageId: $languageId, baseId: $baseId, description: $description, name: $name, aliases: $aliases, notes: $notes)';
return 'ExerciseData(id: $id, uuid: $uuid, languageId: $languageId, exerciseId: $exerciseId, description: $description, name: $name, aliases: $aliases, notes: $notes)';
}
@override
@@ -247,7 +249,7 @@ class _$ExerciseDataImpl implements _ExerciseData {
(identical(other.id, id) || other.id == id) &&
(identical(other.uuid, uuid) || other.uuid == uuid) &&
(identical(other.languageId, languageId) || other.languageId == languageId) &&
(identical(other.baseId, baseId) || other.baseId == baseId) &&
(identical(other.exerciseId, exerciseId) || other.exerciseId == exerciseId) &&
(identical(other.description, description) || other.description == description) &&
(identical(other.name, name) || other.name == name) &&
const DeepCollectionEquality().equals(other._aliases, _aliases) &&
@@ -256,7 +258,7 @@ class _$ExerciseDataImpl implements _ExerciseData {
@JsonKey(ignore: true)
@override
int get hashCode => Object.hash(runtimeType, id, uuid, languageId, baseId, description, name,
int get hashCode => Object.hash(runtimeType, id, uuid, languageId, exerciseId, description, name,
const DeepCollectionEquality().hash(_aliases), const DeepCollectionEquality().hash(_notes));
@JsonKey(ignore: true)
@@ -278,7 +280,7 @@ abstract class _ExerciseData implements ExerciseData {
{required final int id,
required final String uuid,
@JsonKey(name: 'language') required final int languageId,
@JsonKey(required: true, name: 'exercise_base') required final int baseId,
@JsonKey(required: true, name: 'exercise_base') required final int exerciseId,
required final String description,
required final String name,
required final List<Alias> aliases,
@@ -290,12 +292,12 @@ abstract class _ExerciseData implements ExerciseData {
int get id;
@override
String get uuid;
@override
@override // ignore: invalid_annotation_target
@JsonKey(name: 'language')
int get languageId;
@override
@override // ignore: invalid_annotation_target
@JsonKey(required: true, name: 'exercise_base')
int get baseId;
int get exerciseId;
@override
String get description;
@override

View File

@@ -15,7 +15,7 @@ _$ExerciseDataImpl _$$ExerciseDataImplFromJson(Map<String, dynamic> json) {
id: json['id'] as int,
uuid: json['uuid'] as String,
languageId: json['language'] as int,
baseId: json['exercise_base'] as int,
exerciseId: json['exercise_base'] as int,
description: json['description'] as String,
name: json['name'] as String,
aliases: (json['aliases'] as List<dynamic>)
@@ -31,7 +31,7 @@ Map<String, dynamic> _$$ExerciseDataImplToJson(_$ExerciseDataImpl instance) => <
'id': instance.id,
'uuid': instance.uuid,
'language': instance.languageId,
'exercise_base': instance.baseId,
'exercise_base': instance.exerciseId,
'description': instance.description,
'name': instance.name,
'aliases': instance.aliases,

View File

@@ -19,8 +19,8 @@
import 'package:equatable/equatable.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:wger/models/exercises/alias.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/comment.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/exercises/language.dart';
part 'translation.g.dart';
@@ -43,7 +43,7 @@ class Translation extends Equatable {
final DateTime? created;
@JsonKey(required: true, name: 'exercise_base')
late int? baseId;
late int? exerciseId;
@JsonKey(required: true)
final String name;
@@ -63,11 +63,11 @@ class Translation extends Equatable {
this.created,
required this.name,
required this.description,
int? baseId,
int? exerciseId,
language,
}) {
if (baseId != null) {
this.baseId = baseId;
if (exerciseId != null) {
this.exerciseId = exerciseId;
}
if (language != null) {
@@ -76,8 +76,8 @@ class Translation extends Equatable {
}
}
set base(ExerciseBase base) {
baseId = base.id;
set exercise(Exercise exercise) {
exerciseId = exercise.id;
}
set language(Language language) {
@@ -93,7 +93,7 @@ class Translation extends Equatable {
@override
List<Object?> get props => [
id,
baseId,
exerciseId,
uuid,
languageId,
created,

View File

@@ -25,7 +25,7 @@ Translation _$TranslationFromJson(Map<String, dynamic> json) {
created: json['created'] == null ? null : DateTime.parse(json['created'] as String),
name: json['name'] as String,
description: json['description'] as String,
baseId: json['exercise_base'] as int?,
exerciseId: json['exercise_base'] as int?,
)
..languageId = json['language'] as int
..languageObj = Language.fromJson(json['languageObj'] as Map<String, dynamic>)
@@ -43,7 +43,7 @@ Map<String, dynamic> _$TranslationToJson(Translation instance) => <String, dynam
'language': instance.languageId,
'languageObj': instance.languageObj,
'created': instance.created?.toIso8601String(),
'exercise_base': instance.baseId,
'exercise_base': instance.exerciseId,
'name': instance.name,
'description': instance.description,
'notes': instance.notes,

View File

@@ -19,7 +19,7 @@
import 'package:json_annotation/json_annotation.dart';
import 'package:wger/helpers/json.dart';
import 'package:wger/helpers/misc.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/workouts/repetition_unit.dart';
import 'package:wger/models/workouts/weight_unit.dart';
@@ -34,7 +34,7 @@ class Log {
late int exerciseBaseId;
@JsonKey(includeFromJson: false, includeToJson: false)
late ExerciseBase exerciseBaseObj;
late Exercise exerciseBaseObj;
@JsonKey(required: true, name: 'workout')
late int workoutPlan;
@@ -85,7 +85,7 @@ class Log {
Map<String, dynamic> toJson() => _$LogToJson(this);
set exerciseBase(ExerciseBase base) {
set exerciseBase(Exercise base) {
exerciseBaseObj = base;
exerciseBaseId = base.id!;
}

View File

@@ -17,7 +17,7 @@
*/
import 'package:json_annotation/json_annotation.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/workouts/setting.dart';
part 'set.g.dart';
@@ -42,7 +42,7 @@ class Set {
late String comment;
@JsonKey(includeFromJson: false, includeToJson: false)
List<ExerciseBase> exerciseBasesObj = [];
List<Exercise> exerciseBasesObj = [];
@JsonKey(includeFromJson: false, includeToJson: false)
List<int> exerciseBasesIds = [];
@@ -92,7 +92,7 @@ class Set {
for (final setting in settings) {
final foundSettings = out.where(
(element) => element.exerciseBaseId == setting.exerciseBaseId,
(element) => element.exerciseId == setting.exerciseId,
);
if (foundSettings.isEmpty) {
@@ -102,23 +102,23 @@ class Set {
return out;
}
void addExerciseBase(ExerciseBase base) {
void addExerciseBase(Exercise base) {
exerciseBasesObj.add(base);
exerciseBasesIds.add(base.id!);
}
void removeExercise(ExerciseBase base) {
void removeExercise(Exercise base) {
exerciseBasesObj.removeWhere((e) => e.id == base.id);
exerciseBasesIds.removeWhere((e) => e == base.id);
}
/// Returns all settings for the given exercise
List<Setting> filterSettingsByExercise(ExerciseBase exerciseBase) {
return settings.where((element) => element.exerciseBaseId == exerciseBase.id).toList();
List<Setting> filterSettingsByExercise(Exercise exerciseBase) {
return settings.where((element) => element.exerciseId == exerciseBase.id).toList();
}
/// Returns a list with all repetitions for the given exercise
List<String> getSmartRepr(ExerciseBase exerciseBase) {
List<String> getSmartRepr(Exercise exerciseBase) {
final List<String> out = [];
final settingList = filterSettingsByExercise(exerciseBase);
@@ -141,7 +141,7 @@ class Set {
}
/// Returns a string with all repetitions for the given exercise
String getSmartTextRepr(ExerciseBase execiseBase) {
String getSmartTextRepr(Exercise execiseBase) {
return getSmartRepr(execiseBase).join(' ');
}

View File

@@ -19,7 +19,7 @@
import 'package:json_annotation/json_annotation.dart';
import 'package:wger/helpers/json.dart';
import 'package:wger/helpers/misc.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/workouts/repetition_unit.dart';
import 'package:wger/models/workouts/weight_unit.dart';
@@ -42,10 +42,10 @@ class Setting {
late int order;
@JsonKey(includeFromJson: false, includeToJson: false)
late ExerciseBase exerciseBaseObj;
late Exercise exerciseObj;
@JsonKey(required: true, name: 'exercise_base')
late int exerciseBaseId;
late int exerciseId;
@JsonKey(required: true, name: 'repetition_unit')
late int repetitionUnitId;
@@ -77,7 +77,7 @@ class Setting {
this.id,
required this.setId,
required this.order,
required this.exerciseBaseId,
required this.exerciseId,
required this.repetitionUnitId,
required this.reps,
required this.weightUnitId,
@@ -92,9 +92,9 @@ class Setting {
Map<String, dynamic> toJson() => _$SettingToJson(this);
set exerciseBase(ExerciseBase exerciseBase) {
exerciseBaseObj = exerciseBase;
exerciseBaseId = exerciseBase.id!;
set exercise(Exercise exercise) {
exerciseObj = exercise;
exerciseId = exercise.id!;
}
set weightUnit(WeightUnit weightUnit) {

View File

@@ -26,7 +26,7 @@ Setting _$SettingFromJson(Map<String, dynamic> json) {
id: json['id'] as int?,
setId: json['set'] as int,
order: json['order'] as int,
exerciseBaseId: json['exercise_base'] as int,
exerciseId: json['exercise_base'] as int,
repetitionUnitId: json['repetition_unit'] as int,
reps: json['reps'] as int?,
weightUnitId: json['weight_unit'] as int,
@@ -39,7 +39,7 @@ Map<String, dynamic> _$SettingToJson(Setting instance) => <String, dynamic>{
'id': instance.id,
'set': instance.setId,
'order': instance.order,
'exercise_base': instance.exerciseBaseId,
'exercise_base': instance.exerciseId,
'repetition_unit': instance.repetitionUnitId,
'reps': instance.reps,
'weight': numToString(instance.weight),

View File

@@ -17,7 +17,7 @@
*/
import 'package:json_annotation/json_annotation.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/workouts/day.dart';
import 'package:wger/models/workouts/log.dart';
@@ -73,7 +73,7 @@ class WorkoutPlan {
/// means here that the values are the same, i.e. logs with the same weight,
/// reps, etc. are considered equal. Workout ID, Log ID and date are not
/// considered.
List<Log> filterLogsByExerciseBase(ExerciseBase exerciseBase, {bool unique = false}) {
List<Log> filterLogsByExerciseBase(Exercise exerciseBase, {bool unique = false}) {
var out = logs.where((element) => element.exerciseBaseId == exerciseBase.id).toList();
if (unique) {
@@ -95,7 +95,7 @@ class WorkoutPlan {
if (!out.containsKey(date)) {
out[date] = {
'session': null,
'exercises': <ExerciseBase, List<Log>>{},
'exercises': <Exercise, List<Log>>{},
};
}

View File

@@ -5,9 +5,9 @@ import 'package:flutter/foundation.dart';
import 'package:http/http.dart' as http;
import 'package:wger/helpers/consts.dart';
import 'package:wger/models/exercises/alias.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/category.dart';
import 'package:wger/models/exercises/equipment.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/exercises/language.dart';
import 'package:wger/models/exercises/muscle.dart';
import 'package:wger/models/exercises/translation.dart';
@@ -32,7 +32,7 @@ class AddExerciseProvider with ChangeNotifier {
List<String> _alternativeNamesEn = [];
List<String> _alternativeNamesTranslation = [];
ExerciseCategory? category;
List<ExerciseBase> _variations = [];
List<Exercise> _variations = [];
List<Equipment> _equipment = [];
List<Muscle> _primaryMuscles = [];
List<Muscle> _secondaryMuscles = [];
@@ -93,8 +93,8 @@ class AddExerciseProvider with ChangeNotifier {
notifyListeners();
}
ExerciseBase get base {
return ExerciseBase(
Exercise get exercise {
return Exercise(
category: category,
equipment: _equipment,
muscles: _primaryMuscles,
@@ -103,7 +103,7 @@ class AddExerciseProvider with ChangeNotifier {
);
}
Translation get exerciseEn {
Translation get translationEn {
return Translation(
name: _nameEn!,
description: _descriptionEn!,
@@ -111,7 +111,7 @@ class AddExerciseProvider with ChangeNotifier {
);
}
Translation get exerciseTranslation {
Translation get translation {
return Translation(
name: _nameTranslation!,
description: _descriptionTranslation!,
@@ -176,12 +176,12 @@ class AddExerciseProvider with ChangeNotifier {
await addVariation();
}
// Create the base
final base = await addExerciseBase();
// Create the exercise
final exercise = await addExerciseBase();
// Create the base description in English
Translation exerciseTranslationEn = exerciseEn;
exerciseTranslationEn.base = base;
Translation exerciseTranslationEn = translationEn;
exerciseTranslationEn.exercise = exercise;
exerciseTranslationEn = await addExerciseTranslation(exerciseTranslationEn);
for (final alias in _alternativeNamesEn) {
if (alias.isNotEmpty) {
@@ -191,8 +191,8 @@ class AddExerciseProvider with ChangeNotifier {
// Create the translations
if (language != null) {
Translation exerciseTranslationLang = exerciseTranslation;
exerciseTranslationLang.base = base;
Translation exerciseTranslationLang = translation;
exerciseTranslationLang.exercise = exercise;
exerciseTranslationLang = await addExerciseTranslation(exerciseTranslationLang);
for (final alias in _alternativeNamesTranslation) {
if (alias.isNotEmpty) {
@@ -205,20 +205,20 @@ class AddExerciseProvider with ChangeNotifier {
}
// Create the images
await addImages(base);
await addImages(exercise);
// Clear everything
clear();
// Return exercise ID
return base.id!;
return exercise.id!;
}
Future<ExerciseBase> addExerciseBase() async {
Future<Exercise> addExerciseBase() async {
final Uri postUri = baseProvider.makeUrl(_exerciseBaseUrlPath);
final Map<String, dynamic> newBaseMap = await baseProvider.post(base.toJson(), postUri);
final ExerciseBase newExerciseBase = ExerciseBase.fromJson(newBaseMap);
final Map<String, dynamic> newBaseMap = await baseProvider.post(exercise.toJson(), postUri);
final Exercise newExerciseBase = Exercise.fromJson(newBaseMap);
notifyListeners();
return newExerciseBase;
@@ -235,7 +235,7 @@ class AddExerciseProvider with ChangeNotifier {
return newVariation;
}
Future<void> addImages(ExerciseBase base) async {
Future<void> addImages(Exercise base) async {
for (final image in _exerciseImages) {
final request = http.MultipartRequest('POST', baseProvider.makeUrl(_imagesUrlPath));
request.headers.addAll(baseProvider.getDefaultHeaders(includeAuth: true));

View File

@@ -28,9 +28,9 @@ import 'package:wger/database/exercises/exercise_database.dart';
import 'package:wger/exceptions/no_such_entry_exception.dart';
import 'package:wger/helpers/consts.dart';
import 'package:wger/models/exercises/alias.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/category.dart';
import 'package:wger/models/exercises/equipment.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/exercises/exercise_base_data.dart';
import 'package:wger/models/exercises/language.dart';
import 'package:wger/models/exercises/muscle.dart';
@@ -46,7 +46,7 @@ class ExercisesProvider with ChangeNotifier {
static const EXERCISE_CACHE_DAYS = 7;
static const CACHE_VERSION = 4;
static const exerciseBaseInfoUrlPath = 'exercisebaseinfo';
static const exerciseInfoUrlPath = 'exercisebaseinfo';
static const exerciseSearchPath = 'exercise/search';
static const exerciseVariationsUrlPath = 'variation';
@@ -55,10 +55,10 @@ class ExercisesProvider with ChangeNotifier {
static const equipmentUrlPath = 'equipment';
static const languageUrlPath = 'language';
List<ExerciseBase> _exerciseBases = [];
List<Exercise> _exercises = [];
set exerciseBases(List<ExerciseBase> exercisesBases) {
_exerciseBases = exercisesBases;
set exerciseBases(List<Exercise> exercisesBases) {
_exercises = exercisesBases;
}
List<ExerciseCategory> _categories = [];
@@ -76,30 +76,30 @@ class ExercisesProvider with ChangeNotifier {
await findByFilters();
}
List<ExerciseBase> _filteredExerciseBases = [];
List<Exercise> _filteredExercises = [];
List<ExerciseBase> get filteredExerciseBases => _filteredExerciseBases;
List<Exercise> get filteredExercises => _filteredExercises;
set filteredExerciseBases(List<ExerciseBase> newFilteredExercises) {
_filteredExerciseBases = newFilteredExercises;
set filteredExercises(List<Exercise> newFilteredExercises) {
_filteredExercises = newFilteredExercises;
notifyListeners();
}
Map<int, List<ExerciseBase>> get exerciseBasesByVariation {
final Map<int, List<ExerciseBase>> variations = {};
Map<int, List<Exercise>> get exerciseBasesByVariation {
final Map<int, List<Exercise>> variations = {};
for (final base in _exerciseBases.where((e) => e.variationId != null)) {
if (!variations.containsKey(base.variationId)) {
variations[base.variationId!] = [];
for (final exercise in _exercises.where((e) => e.variationId != null)) {
if (!variations.containsKey(exercise.variationId)) {
variations[exercise.variationId!] = [];
}
variations[base.variationId]!.add(base);
variations[exercise.variationId]!.add(exercise);
}
return variations;
}
List<ExerciseBase> get bases => [..._exerciseBases];
List<Exercise> get bases => [..._exercises];
List<ExerciseCategory> get categories => [..._categories];
@@ -144,25 +144,25 @@ class ExercisesProvider with ChangeNotifier {
Future<void> findByFilters() async {
// Filters not initialized
if (filters == null) {
filteredExerciseBases = [];
filteredExercises = [];
return;
}
// Filters are initialized and nothing is marked
if (filters!.isNothingMarked && filters!.searchTerm.length <= 1) {
filteredExerciseBases = _exerciseBases;
filteredExercises = _exercises;
return;
}
filteredExerciseBases = [];
filteredExercises = [];
List<ExerciseBase> filteredItems = _exerciseBases;
List<Exercise> filteredItems = _exercises;
if (filters!.searchTerm.length > 1) {
filteredItems = await searchExercise(filters!.searchTerm);
}
// Filter by exercise category and equipment (REPLACE WITH HTTP REQUEST)
filteredExerciseBases = filteredItems.where((exercise) {
filteredExercises = filteredItems.where((exercise) {
final bool isInAnyCategory = filters!.exerciseCategories.selected.contains(exercise.category);
final bool doesContainAnyEquipment = filters!.equipment.selected.any(
@@ -180,12 +180,12 @@ class ExercisesProvider with ChangeNotifier {
_muscles = [];
_categories = [];
_languages = [];
_exerciseBases = [];
_exercises = [];
}
/// Find exercise base by ID
ExerciseBase findExerciseById(int id) {
return _exerciseBases.firstWhere(
Exercise findExerciseById(int id) {
return _exercises.firstWhere(
(base) => base.id == id,
orElse: () => throw NoSuchEntryException(),
);
@@ -197,8 +197,8 @@ class ExercisesProvider with ChangeNotifier {
/// returned exercises. Since this is typically called by one exercise, we are
/// not interested in seeing that same exercise returned in the list of variations.
/// If this parameter is not passed, all exercises are returned.
List<ExerciseBase> findExerciseBasesByVariationId(int id, {int? exerciseBaseIdToExclude}) {
var out = _exerciseBases.where((base) => base.variationId == id).toList();
List<Exercise> findExerciseBasesByVariationId(int id, {int? exerciseBaseIdToExclude}) {
var out = _exercises.where((base) => base.variationId == id).toList();
if (exerciseBaseIdToExclude != null) {
out = out.where((e) => e.id != exerciseBaseIdToExclude).toList();
@@ -287,15 +287,15 @@ class ExercisesProvider with ChangeNotifier {
/// If the exercise is not known locally, it is fetched from the server.
/// This method is called when a workout is first loaded, after that the
/// regular not-async getById method can be used
Future<ExerciseBase> fetchAndSetExerciseBase(int exerciseBaseId) async {
Future<Exercise> fetchAndSetExercise(int exerciseId) async {
try {
return findExerciseById(exerciseBaseId);
return findExerciseById(exerciseId);
} on NoSuchEntryException {
final baseData = await baseProvider.fetch(
baseProvider.makeUrl(exerciseBaseInfoUrlPath, id: exerciseBaseId),
baseProvider.makeUrl(exerciseInfoUrlPath, id: exerciseId),
);
final exercise = readExerciseBaseFromBaseInfo(ExerciseBaseData.fromJson(baseData));
final exercise = readExerciseFromBaseInfo(ExerciseBaseData.fromJson(baseData));
final database = locator<ExerciseDatabase>();
final exerciseDb = await (database.select(database.exercises)
@@ -318,21 +318,21 @@ class ExercisesProvider with ChangeNotifier {
if (exerciseDb != null && lastUpdateApi.isAfter(exerciseDb.lastUpdate)) {
(database.update(database.exercises)..where((e) => e.id.equals(baseData['id']))).write(
ExercisesCompanion(
id: baseData['id'],
id: Value(baseData['id']),
data: Value(jsonEncode(baseData)),
lastUpdate: Value(DateTime.parse(baseData['last_update_global'])),
),
);
}
_exerciseBases.add(exercise);
_exercises.add(exercise);
return exercise;
}
}
/// Parses the response from the "exercisebaseinfo" endpoint and returns
/// a full exercise base
ExerciseBase readExerciseBaseFromBaseInfo(ExerciseBaseData baseData) {
Exercise readExerciseFromBaseInfo(ExerciseBaseData baseData) {
final List<Translation> translations = [];
for (final translationData in baseData.exercises) {
final translation = Translation(
@@ -340,7 +340,7 @@ class ExercisesProvider with ChangeNotifier {
uuid: translationData.uuid,
name: translationData.name,
description: translationData.description,
baseId: baseData.id,
exerciseId: baseData.id,
);
translation.aliases = translationData.aliases
.map((e) => Alias(exerciseId: translation.id ?? 0, alias: e.alias))
@@ -350,7 +350,7 @@ class ExercisesProvider with ChangeNotifier {
translations.add(translation);
}
final exerciseBase = ExerciseBase(
return Exercise(
id: baseData.id,
uuid: baseData.uuid,
created: baseData.created,
@@ -361,11 +361,9 @@ class ExercisesProvider with ChangeNotifier {
equipment: baseData.equipment,
category: baseData.category,
images: baseData.images,
exercises: translations,
translations: translations,
videos: baseData.videos,
);
return exerciseBase;
}
/// Checks the required cache version
@@ -467,8 +465,9 @@ class ExercisesProvider with ChangeNotifier {
final exercises = await database.select(database.exercises).get();
log('Loaded ${exercises.length} exercises from cache');
_exerciseBases = exercises
.map((e) => readExerciseBaseFromBaseInfo(ExerciseBaseData.fromJson(json.decode(e.data))))
_exercises = exercises
.map((e) => readExerciseFromBaseInfo(ExerciseBaseData.fromJson(json.decode(e.data))))
//.map((e) => e.data)
.toList();
// updateExerciseCache(database);
@@ -476,14 +475,14 @@ class ExercisesProvider with ChangeNotifier {
Future<void> updateExerciseCache(ExerciseDatabase database) async {
final data = await Future.wait<dynamic>([
baseProvider.fetch(baseProvider.makeUrl(exerciseBaseInfoUrlPath, query: {'limit': '1000'})),
baseProvider.fetch(baseProvider.makeUrl(exerciseInfoUrlPath, query: {'limit': '1000'})),
// TODO: variations!
//fetchAndSetVariationsFromApi(),
]);
final List<dynamic> exercisesData = data[0]['results'];
final exerciseBaseData = exercisesData.map((e) => ExerciseBaseData.fromJson(e)).toList();
_exerciseBases = exerciseBaseData.map((e) => readExerciseBaseFromBaseInfo(e)).toList();
_exercises = exerciseBaseData.map((e) => readExerciseFromBaseInfo(e)).toList();
// Insert new entries and update ones that have been edited
Future.forEach(exercisesData, (exerciseData) async {
@@ -550,7 +549,7 @@ class ExercisesProvider with ChangeNotifier {
});
validTill = DateTime.now().add(const Duration(days: EXERCISE_CACHE_DAYS));
await prefs.setString(PREFS_LAST_UPDATED_MUSCLES, validTill.toIso8601String());
log('Wrote ${_muscles.length} muscles from cache. Valid till ${validTill}');
log('Wrote ${_muscles.length} muscles from cache. Valid till $validTill');
}
/// Fetches and sets the available categories
@@ -655,7 +654,7 @@ class ExercisesProvider with ChangeNotifier {
///
/// We could do this locally, but the server has better text searching capabilities
/// with postgresql.
Future<List<ExerciseBase>> searchExercise(String name,
Future<List<Exercise>> searchExercise(String name,
{String languageCode = LANGUAGE_SHORT_ENGLISH, bool searchEnglish = false}) async {
if (name.length <= 1) {
return [];
@@ -676,8 +675,8 @@ class ExercisesProvider with ChangeNotifier {
// Process the response
return Future.wait(
(result['suggestions'] as List).map<Future<ExerciseBase>>(
(entry) => fetchAndSetExerciseBase(entry['data']['base_id']),
(result['suggestions'] as List).map<Future<Exercise>>(
(entry) => fetchAndSetExercise(entry['data']['base_id']),
),
);
}

View File

@@ -23,7 +23,7 @@ import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:wger/exceptions/http_exception.dart';
import 'package:wger/helpers/consts.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/exercises/translation.dart';
import 'package:wger/models/workouts/day.dart';
import 'package:wger/models/workouts/log.dart';
@@ -213,16 +213,15 @@ class WorkoutPlansProvider with ChangeNotifier {
for (final settingEntry in settingData) {
final workoutSetting = Setting.fromJson(settingEntry);
workoutSetting.exerciseBase =
await _exercises.fetchAndSetExerciseBase(workoutSetting.exerciseBaseId);
workoutSetting.exercise = await _exercises.fetchAndSetExercise(workoutSetting.exerciseId);
workoutSetting.weightUnit = _weightUnits.firstWhere(
(e) => e.id == workoutSetting.weightUnitId,
);
workoutSetting.repetitionUnit = _repetitionUnit.firstWhere(
(e) => e.id == workoutSetting.repetitionUnitId,
);
if (!workoutSet.exerciseBasesIds.contains(workoutSetting.exerciseBaseId)) {
workoutSet.addExerciseBase(workoutSetting.exerciseBaseObj);
if (!workoutSet.exerciseBasesIds.contains(workoutSetting.exerciseId)) {
workoutSet.addExerciseBase(workoutSetting.exerciseObj);
}
settings.add(workoutSetting);
@@ -247,7 +246,7 @@ class WorkoutPlansProvider with ChangeNotifier {
final log = Log.fromJson(logEntry);
log.weightUnit = _weightUnits.firstWhere((e) => e.id == log.weightUnitId);
log.repetitionUnit = _repetitionUnit.firstWhere((e) => e.id == log.weightUnitId);
log.exerciseBase = await _exercises.fetchAndSetExerciseBase(log.exerciseBaseId);
log.exerciseBase = await _exercises.fetchAndSetExercise(log.exerciseBaseId);
plan.logs.add(log);
} catch (e) {
dev.log('fire! fire!');
@@ -290,7 +289,7 @@ class WorkoutPlansProvider with ChangeNotifier {
}
}
Future<Map<String, dynamic>> fetchLogData(WorkoutPlan workout, ExerciseBase base) async {
Future<Map<String, dynamic>> fetchLogData(WorkoutPlan workout, Exercise base) async {
final data = await baseProvider.fetch(
baseProvider.makeUrl(
_workoutPlansUrlPath,
@@ -503,7 +502,7 @@ class WorkoutPlansProvider with ChangeNotifier {
log.id = newLog.id;
log.weightUnit = _weightUnits.firstWhere((e) => e.id == log.weightUnitId);
log.repetitionUnit = _repetitionUnit.firstWhere((e) => e.id == log.weightUnitId);
log.exerciseBase = await _exercises.fetchAndSetExerciseBase(log.exerciseBaseId);
log.exerciseBase = await _exercises.fetchAndSetExercise(log.exerciseBaseId);
final plan = findById(log.workoutPlan);
plan.logs.add(log);

View File

@@ -74,7 +74,7 @@ class _AddExerciseStepperState extends State<AddExerciseStepper> {
final exerciseProvider = context.read<ExercisesProvider>();
final baseId = await addExerciseProvider.addExercise();
final base = await exerciseProvider.fetchAndSetExerciseBase(baseId);
final base = await exerciseProvider.fetchAndSetExercise(baseId);
final name =
base.getExercise(Localizations.localeOf(context).languageCode).name;

View File

@@ -17,7 +17,7 @@
*/
import 'package:flutter/material.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/widgets/exercises/exercises.dart';
class ExerciseDetailScreen extends StatelessWidget {
@@ -27,7 +27,7 @@ class ExerciseDetailScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final exerciseBase = ModalRoute.of(context)!.settings.arguments as ExerciseBase;
final exerciseBase = ModalRoute.of(context)!.settings.arguments as Exercise;
return Scaffold(
appBar: AppBar(

View File

@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:provider/provider.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/providers/exercises.dart';
import 'package:wger/widgets/core/app_bar.dart';
import 'package:wger/widgets/exercises/filter_row.dart';
@@ -21,7 +21,7 @@ class _ExercisesScreenState extends State<ExercisesScreen> {
@override
Widget build(BuildContext context) {
//final size = MediaQuery.of(context).size;
final exercisesList = Provider.of<ExercisesProvider>(context).filteredExerciseBases;
final exercisesList = Provider.of<ExercisesProvider>(context).filteredExercises;
return Scaffold(
appBar: EmptyAppBar(AppLocalizations.of(context).exercises),
@@ -57,7 +57,7 @@ class _ExercisesList extends StatelessWidget {
required this.exerciseBaseList,
}) : super(key: key);
final List<ExerciseBase> exerciseBaseList;
final List<Exercise> exerciseBaseList;
@override
Widget build(BuildContext context) {

View File

@@ -498,11 +498,11 @@ class _DashboardWorkoutWidgetState extends State<DashboardWorkoutWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(s.exerciseBaseObj
Text(s.exerciseObj
.getExercise(Localizations.localeOf(context).languageCode)
.name),
const SizedBox(width: 10),
MutedText(set.getSmartRepr(s.exerciseBaseObj).join('\n')),
MutedText(set.getSmartRepr(s.exerciseObj).join('\n')),
],
),
const SizedBox(height: 10),

View File

@@ -24,7 +24,7 @@ import 'package:provider/provider.dart';
import 'package:wger/helpers/consts.dart';
import 'package:wger/helpers/i18n.dart';
import 'package:wger/helpers/platform.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/exercises/muscle.dart';
import 'package:wger/models/exercises/translation.dart';
import 'package:wger/providers/exercises.dart';
@@ -34,7 +34,7 @@ import 'package:wger/widgets/exercises/list_tile.dart';
import 'package:wger/widgets/exercises/videos.dart';
class ExerciseDetail extends StatelessWidget {
final ExerciseBase _exerciseBase;
final Exercise _exerciseBase;
late Translation _exercise;
static const PADDING = 9.0;

View File

@@ -18,14 +18,14 @@
import 'package:flutter/material.dart';
import 'package:wger/helpers/i18n.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/screens/exercise_screen.dart';
import 'package:wger/widgets/exercises/images.dart';
class ExerciseListTile extends StatelessWidget {
const ExerciseListTile({Key? key, required this.exerciseBase}) : super(key: key);
final ExerciseBase exerciseBase;
final Exercise exerciseBase;
@override
Widget build(BuildContext context) {

View File

@@ -50,17 +50,17 @@ class SettingWidget extends StatelessWidget {
leading: InkWell(
child: SizedBox(
width: 45,
child: ExerciseImageWidget(image: setting.exerciseBaseObj.getMainImage),
child: ExerciseImageWidget(image: setting.exerciseObj.getMainImage),
),
onTap: () {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text(setting.exerciseBaseObj
title: Text(setting.exerciseObj
.getExercise(Localizations.localeOf(context).languageCode)
.name),
content: ExerciseDetail(setting.exerciseBaseObj),
content: ExerciseDetail(setting.exerciseObj),
actions: [
TextButton(
child: Text(MaterialLocalizations.of(context).closeButtonLabel),
@@ -75,12 +75,12 @@ class SettingWidget extends StatelessWidget {
},
),
title: Text(
setting.exerciseBaseObj.getExercise(Localizations.localeOf(context).languageCode).name,
setting.exerciseObj.getExercise(Localizations.localeOf(context).languageCode).name,
),
subtitle: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
...set.getSmartRepr(setting.exerciseBaseObj).map((e) => Text(e)).toList(),
...set.getSmartRepr(setting.exerciseObj).map((e) => Text(e)).toList(),
],
),
);

View File

@@ -21,7 +21,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_typeahead/flutter_typeahead.dart';
import 'package:provider/provider.dart';
import 'package:wger/helpers/consts.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/workouts/day.dart';
import 'package:wger/models/workouts/repetition_unit.dart';
import 'package:wger/models/workouts/set.dart';
@@ -280,14 +280,14 @@ class _SetFormWidgetState extends State<SetFormWidget> {
final _exercisesController = TextEditingController();
/// Removes an exercise from the current set
void removeExerciseBase(ExerciseBase base) {
void removeExerciseBase(Exercise base) {
setState(() {
widget._set.removeExercise(base);
});
}
/// Adds an exercise to the current set
void addExercise(ExerciseBase base) {
void addExercise(Exercise base) {
setState(() {
widget._set.addExerciseBase(base);
addSettings();
@@ -305,7 +305,7 @@ class _SetFormWidgetState extends State<SetFormWidget> {
for (int loop = 0; loop < widget._set.sets; loop++) {
final Setting setting = Setting.empty();
setting.order = order;
setting.exerciseBase = exercise;
setting.exercise = exercise;
setting.weightUnit = workoutProvider.defaultWeightUnit;
setting.repetitionUnit = workoutProvider.defaultRepetitionUnit;
@@ -362,7 +362,7 @@ class _SetFormWidgetState extends State<SetFormWidget> {
Card(
child: Column(
children: [
TypeAheadFormField<ExerciseBase>(
TypeAheadFormField<Exercise>(
key: const Key('field-typeahead'),
textFieldConfiguration: TextFieldConfiguration(
controller: _exercisesController,
@@ -407,7 +407,7 @@ class _SetFormWidgetState extends State<SetFormWidget> {
searchEnglish: _searchEnglish,
);
},
itemBuilder: (BuildContext context, ExerciseBase exerciseSuggestion) {
itemBuilder: (BuildContext context, Exercise exerciseSuggestion) {
return ListTile(
leading: SizedBox(
width: 45,
@@ -426,7 +426,7 @@ class _SetFormWidgetState extends State<SetFormWidget> {
transitionBuilder: (context, suggestionsBox, controller) {
return suggestionsBox;
},
onSuggestionSelected: (ExerciseBase exerciseSuggestion) {
onSuggestionSelected: (Exercise exerciseSuggestion) {
addExercise(exerciseSuggestion);
this._exercisesController.text = '';
},
@@ -484,9 +484,8 @@ class _SetFormWidgetState extends State<SetFormWidget> {
final index = entry.key;
final exercise = entry.value;
final showSupersetInfo = (index + 1) < widget._set.exerciseBasesObj.length;
final settings = widget._set.settings
.where((e) => e.exerciseBaseObj.id == exercise.id)
.toList();
final settings =
widget._set.settings.where((e) => e.exerciseObj.id == exercise.id).toList();
return Column(
children: [
@@ -560,7 +559,7 @@ class _SetFormWidgetState extends State<SetFormWidget> {
}
class ExerciseSetting extends StatelessWidget {
final ExerciseBase _exerciseBase;
final Exercise _exerciseBase;
late final int _numberOfSets;
final bool _detailed;
final Function removeExercise;

View File

@@ -29,7 +29,7 @@ import 'package:wger/helpers/i18n.dart';
import 'package:wger/helpers/json.dart';
import 'package:wger/helpers/misc.dart';
import 'package:wger/helpers/ui.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/workouts/day.dart';
import 'package:wger/models/workouts/log.dart';
import 'package:wger/models/workouts/session.dart';
@@ -86,7 +86,7 @@ class _GymModeState extends State<GymMode> {
var firstPage = true;
for (final setting in set.settingsComputed) {
final exerciseBase = Provider.of<ExercisesProvider>(context, listen: false)
.findExerciseById(setting.exerciseBaseId);
.findExerciseById(setting.exerciseId);
if (firstPage) {
_exercisePages[exerciseBase.uuid!] = currentPage;
@@ -114,7 +114,7 @@ class _GymModeState extends State<GymMode> {
var firstPage = true;
for (final setting in set.settingsComputed) {
final ratioCompleted = currentElement / _totalElements;
final exerciseBase = exerciseProvider.findExerciseById(setting.exerciseBaseId);
final exerciseBase = exerciseProvider.findExerciseById(setting.exerciseId);
currentElement++;
if (firstPage) {
@@ -194,12 +194,12 @@ class StartPage extends StatelessWidget {
return Column(
children: [
Text(
s.exerciseBaseObj
s.exerciseObj
.getExercise(Localizations.localeOf(context).languageCode)
.name,
style: Theme.of(context).textTheme.titleLarge,
),
...set.getSmartRepr(s.exerciseBaseObj).map((e) => Text(e)),
...set.getSmartRepr(s.exerciseObj).map((e) => Text(e)),
const SizedBox(height: 15),
],
);
@@ -232,7 +232,7 @@ class LogPage extends StatefulWidget {
final PageController _controller;
final Setting _setting;
final Set _set;
final ExerciseBase _exerciseBase;
final Exercise _exerciseBase;
final WorkoutPlan _workoutPlan;
final double _ratioCompleted;
final Map<String, int> _exercisePages;
@@ -662,7 +662,7 @@ class _LogPageState extends State<LogPage> {
class ExerciseOverview extends StatelessWidget {
final PageController _controller;
final ExerciseBase _exerciseBase;
final Exercise _exerciseBase;
final double _ratioCompleted;
final Map<String, int> _exercisePages;

View File

@@ -21,7 +21,7 @@ import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:wger/helpers/colors.dart';
import 'package:wger/helpers/ui.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/workouts/log.dart';
import 'package:wger/models/workouts/session.dart';
import 'package:wger/providers/workout_plans.dart';
@@ -29,7 +29,7 @@ import 'package:wger/widgets/measurements/charts.dart';
import 'package:wger/widgets/workouts/charts.dart';
class ExerciseLogChart extends StatelessWidget {
final ExerciseBase _base;
final Exercise _base;
final DateTime _currentDate;
const ExerciseLogChart(this._base, this._currentDate);
@@ -89,7 +89,7 @@ class ExerciseLogChart extends StatelessWidget {
class DayLogWidget extends StatefulWidget {
final DateTime _date;
final WorkoutSession? _session;
final Map<ExerciseBase, List<Log>> _exerciseData;
final Map<Exercise, List<Log>> _exerciseData;
const DayLogWidget(this._date, this._exerciseData, this._session);

View File

@@ -20,7 +20,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:table_calendar/table_calendar.dart';
import 'package:wger/helpers/consts.dart';
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/workouts/log.dart';
import 'package:wger/models/workouts/session.dart';
import 'package:wger/models/workouts/workout_plan.dart';
@@ -96,7 +96,7 @@ class _WorkoutLogsState extends State<WorkoutLogs> {
class WorkoutLogEvent {
final DateTime dateTime;
final WorkoutSession? session;
final Map<ExerciseBase, List<Log>> exercises;
final Map<Exercise, List<Log>> exercises;
WorkoutLogEvent(this.dateTime, this.session, this.exercises);
}

View File

@@ -9,9 +9,9 @@ import 'dart:ui' as _i14;
import 'package:mockito/mockito.dart' as _i1;
import 'package:wger/models/exercises/alias.dart' as _i6;
import 'package:wger/models/exercises/base.dart' as _i3;
import 'package:wger/models/exercises/category.dart' as _i9;
import 'package:wger/models/exercises/equipment.dart' as _i11;
import 'package:wger/models/exercises/exercise.dart' as _i3;
import 'package:wger/models/exercises/language.dart' as _i8;
import 'package:wger/models/exercises/muscle.dart' as _i12;
import 'package:wger/models/exercises/translation.dart' as _i4;
@@ -44,8 +44,8 @@ class _FakeWgerBaseProvider_0 extends _i1.SmartFake implements _i2.WgerBaseProvi
);
}
class _FakeExerciseBase_1 extends _i1.SmartFake implements _i3.ExerciseBase {
_FakeExerciseBase_1(
class _FakeExercise_1 extends _i1.SmartFake implements _i3.Exercise {
_FakeExercise_1(
Object parent,
Invocation parentInvocation,
) : super(
@@ -219,29 +219,29 @@ class MockAddExerciseProvider extends _i1.Mock implements _i7.AddExerciseProvide
);
@override
_i3.ExerciseBase get base => (super.noSuchMethod(
Invocation.getter(#base),
returnValue: _FakeExerciseBase_1(
_i3.Exercise get exercise => (super.noSuchMethod(
Invocation.getter(#exercise),
returnValue: _FakeExercise_1(
this,
Invocation.getter(#base),
Invocation.getter(#exercise),
),
) as _i3.ExerciseBase);
) as _i3.Exercise);
@override
_i4.Translation get exerciseEn => (super.noSuchMethod(
Invocation.getter(#exerciseEn),
_i4.Translation get translationEn => (super.noSuchMethod(
Invocation.getter(#translationEn),
returnValue: _FakeTranslation_2(
this,
Invocation.getter(#exerciseEn),
Invocation.getter(#translationEn),
),
) as _i4.Translation);
@override
_i4.Translation get exerciseTranslation => (super.noSuchMethod(
Invocation.getter(#exerciseTranslation),
_i4.Translation get translation => (super.noSuchMethod(
Invocation.getter(#translation),
returnValue: _FakeTranslation_2(
this,
Invocation.getter(#exerciseTranslation),
Invocation.getter(#translation),
),
) as _i4.Translation);
@@ -336,19 +336,19 @@ class MockAddExerciseProvider extends _i1.Mock implements _i7.AddExerciseProvide
) as _i13.Future<int>);
@override
_i13.Future<_i3.ExerciseBase> addExerciseBase() => (super.noSuchMethod(
_i13.Future<_i3.Exercise> addExerciseBase() => (super.noSuchMethod(
Invocation.method(
#addExerciseBase,
[],
),
returnValue: _i13.Future<_i3.ExerciseBase>.value(_FakeExerciseBase_1(
returnValue: _i13.Future<_i3.Exercise>.value(_FakeExercise_1(
this,
Invocation.method(
#addExerciseBase,
[],
),
)),
) as _i13.Future<_i3.ExerciseBase>);
) as _i13.Future<_i3.Exercise>);
@override
_i13.Future<_i5.Variation> addVariation() => (super.noSuchMethod(
@@ -366,7 +366,7 @@ class MockAddExerciseProvider extends _i1.Mock implements _i7.AddExerciseProvide
) as _i13.Future<_i5.Variation>);
@override
_i13.Future<void> addImages(_i3.ExerciseBase? base) => (super.noSuchMethod(
_i13.Future<void> addImages(_i3.Exercise? base) => (super.noSuchMethod(
Invocation.method(
#addImages,
[base],

View File

@@ -42,7 +42,7 @@ void main() {
group('Correctly loads and parses data from the server', () {
test('test that fetchAndSetExerciseBase finds an existing base', () async {
// arrange and act
final base = await provider.fetchAndSetExerciseBase(1);
final base = await provider.fetchAndSetExercise(1);
// assert
verifyNever(provider.baseProvider.fetch(tExerciseBaseInfoUri));
@@ -51,7 +51,7 @@ void main() {
test('test that fetchAndSetExerciseBase fetches a new base', () async {
// arrange and act
final base = await provider.fetchAndSetExerciseBase(9);
final base = await provider.fetchAndSetExercise(9);
// assert
verify(provider.baseProvider.fetch(tExerciseBaseInfoUri));
@@ -62,8 +62,7 @@ void main() {
// arrange
// arrange and act
final base =
provider.readExerciseBaseFromBaseInfo(ExerciseBaseData.fromJson(tExerciseInfoMap));
final base = provider.readExerciseFromBaseInfo(ExerciseBaseData.fromJson(tExerciseInfoMap));
// assert
expect(base.id, 9);

View File

@@ -193,7 +193,7 @@ void main() {
// assert
verifyNever(provider.baseProvider.fetch(tSearchByNameUri));
expect(provider.filteredExerciseBases, isEmpty);
expect(provider.filteredExercises, isEmpty);
});
group('Filters are not null', () {
@@ -220,7 +220,7 @@ void main() {
verifyNever(provider.baseProvider.fetch(tSearchByNameUri));
expect(
provider.filteredExerciseBases,
provider.filteredExercises,
data.getTestExerciseBases(),
);
});
@@ -236,7 +236,7 @@ void main() {
// assert
verifyNever(provider.baseProvider.fetch(tSearchByNameUri));
expect(provider.filteredExerciseBases, [data.getTestExerciseBases()[0]]);
expect(provider.filteredExercises, [data.getTestExerciseBases()[0]]);
});
test('A muscle is selected with no search term. Should not find results', () async {
@@ -250,7 +250,7 @@ void main() {
// assert
verifyNever(provider.baseProvider.fetch(tSearchByNameUri));
expect(provider.filteredExerciseBases, isEmpty);
expect(provider.filteredExercises, isEmpty);
});
test('An equipment is selected with no search term. Should find results', () async {
@@ -264,7 +264,7 @@ void main() {
// assert
verifyNever(provider.baseProvider.fetch(tSearchByNameUri));
expect(provider.filteredExerciseBases, [data.getTestExerciseBases()[0]]);
expect(provider.filteredExercises, [data.getTestExerciseBases()[0]]);
});
test('An equipment is selected with no search term. Should not find results', () async {
@@ -278,7 +278,7 @@ void main() {
// assert
verifyNever(provider.baseProvider.fetch(tSearchByNameUri));
expect(provider.filteredExerciseBases, isEmpty);
expect(provider.filteredExercises, isEmpty);
});
test('A muscle and equipment is selected and there is a match', () async {
@@ -293,7 +293,7 @@ void main() {
// assert
verifyNever(provider.baseProvider.fetch(tSearchByNameUri));
expect(provider.filteredExerciseBases, [data.getTestExerciseBases()[1]]);
expect(provider.filteredExercises, [data.getTestExerciseBases()[1]]);
});
test('A muscle and equipment is selected but no match', () async {
@@ -308,7 +308,7 @@ void main() {
// assert
verifyNever(provider.baseProvider.fetch(tSearchByNameUri));
expect(provider.filteredExerciseBases, isEmpty);
expect(provider.filteredExercises, isEmpty);
});
group('Search term', () {
@@ -347,7 +347,7 @@ void main() {
// assert
verify(provider.baseProvider.fetch(tSearchByNameUri)).called(1);
expect(
provider.filteredExerciseBases,
provider.filteredExercises,
[data.getTestExerciseBases()[0], data.getTestExerciseBases()[1]],
);
});
@@ -363,7 +363,7 @@ void main() {
// assert
verify(provider.baseProvider.fetch(tSearchByNameUri)).called(1);
expect(provider.filteredExerciseBases, isEmpty);
expect(provider.filteredExercises, isEmpty);
});
});
});

View File

@@ -9,9 +9,9 @@ import 'dart:ui' as _i14;
import 'package:http/http.dart' as _i3;
import 'package:mockito/mockito.dart' as _i1;
import 'package:wger/database/exercises/exercise_database.dart' as _i13;
import 'package:wger/models/exercises/base.dart' as _i5;
import 'package:wger/models/exercises/category.dart' as _i6;
import 'package:wger/models/exercises/equipment.dart' as _i7;
import 'package:wger/models/exercises/exercise.dart' as _i5;
import 'package:wger/models/exercises/exercise_base_data.dart' as _i12;
import 'package:wger/models/exercises/language.dart' as _i9;
import 'package:wger/models/exercises/muscle.dart' as _i8;
@@ -82,8 +82,8 @@ class _FakeWgerBaseProvider_4 extends _i1.SmartFake implements _i4.WgerBaseProvi
);
}
class _FakeExerciseBase_5 extends _i1.SmartFake implements _i5.ExerciseBase {
_FakeExerciseBase_5(
class _FakeExercise_5 extends _i1.SmartFake implements _i5.Exercise {
_FakeExercise_5(
Object parent,
Invocation parentInvocation,
) : super(
@@ -311,7 +311,7 @@ class MockExercisesProvider extends _i1.Mock implements _i11.ExercisesProvider {
) as _i4.WgerBaseProvider);
@override
set exerciseBases(List<_i5.ExerciseBase>? exercisesBases) => super.noSuchMethod(
set exerciseBases(List<_i5.Exercise>? exercisesBases) => super.noSuchMethod(
Invocation.setter(
#exerciseBases,
exercisesBases,
@@ -320,13 +320,13 @@ class MockExercisesProvider extends _i1.Mock implements _i11.ExercisesProvider {
);
@override
List<_i5.ExerciseBase> get filteredExerciseBases => (super.noSuchMethod(
List<_i5.Exercise> get filteredExercises => (super.noSuchMethod(
Invocation.getter(#filteredExerciseBases),
returnValue: <_i5.ExerciseBase>[],
) as List<_i5.ExerciseBase>);
returnValue: <_i5.Exercise>[],
) as List<_i5.Exercise>);
@override
set filteredExerciseBases(List<_i5.ExerciseBase>? newFilteredExercises) => super.noSuchMethod(
set filteredExercises(List<_i5.Exercise>? newFilteredExercises) => super.noSuchMethod(
Invocation.setter(
#filteredExerciseBases,
newFilteredExercises,
@@ -335,16 +335,16 @@ class MockExercisesProvider extends _i1.Mock implements _i11.ExercisesProvider {
);
@override
Map<int, List<_i5.ExerciseBase>> get exerciseBasesByVariation => (super.noSuchMethod(
Map<int, List<_i5.Exercise>> get exerciseBasesByVariation => (super.noSuchMethod(
Invocation.getter(#exerciseBasesByVariation),
returnValue: <int, List<_i5.ExerciseBase>>{},
) as Map<int, List<_i5.ExerciseBase>>);
returnValue: <int, List<_i5.Exercise>>{},
) as Map<int, List<_i5.Exercise>>);
@override
List<_i5.ExerciseBase> get bases => (super.noSuchMethod(
List<_i5.Exercise> get bases => (super.noSuchMethod(
Invocation.getter(#bases),
returnValue: <_i5.ExerciseBase>[],
) as List<_i5.ExerciseBase>);
returnValue: <_i5.Exercise>[],
) as List<_i5.Exercise>);
@override
List<_i6.ExerciseCategory> get categories => (super.noSuchMethod(
@@ -415,22 +415,22 @@ class MockExercisesProvider extends _i1.Mock implements _i11.ExercisesProvider {
);
@override
_i5.ExerciseBase findExerciseById(int? id) => (super.noSuchMethod(
_i5.Exercise findExerciseById(int? id) => (super.noSuchMethod(
Invocation.method(
#findExerciseById,
[id],
),
returnValue: _FakeExerciseBase_5(
returnValue: _FakeExercise_5(
this,
Invocation.method(
#findExerciseById,
[id],
),
),
) as _i5.ExerciseBase);
) as _i5.Exercise);
@override
List<_i5.ExerciseBase> findExerciseBasesByVariationId(
List<_i5.Exercise> findExerciseBasesByVariationId(
int? id, {
int? exerciseBaseIdToExclude,
}) =>
@@ -440,8 +440,8 @@ class MockExercisesProvider extends _i1.Mock implements _i11.ExercisesProvider {
[id],
{#exerciseBaseIdToExclude: exerciseBaseIdToExclude},
),
returnValue: <_i5.ExerciseBase>[],
) as List<_i5.ExerciseBase>);
returnValue: <_i5.Exercise>[],
) as List<_i5.Exercise>);
@override
_i6.ExerciseCategory findCategoryById(int? id) => (super.noSuchMethod(
@@ -569,35 +569,34 @@ class MockExercisesProvider extends _i1.Mock implements _i11.ExercisesProvider {
) as _i10.Future<_i9.Language>);
@override
_i10.Future<_i5.ExerciseBase> fetchAndSetExerciseBase(int? exerciseBaseId) => (super.noSuchMethod(
_i10.Future<_i5.Exercise> fetchAndSetExercise(int? exerciseId) => (super.noSuchMethod(
Invocation.method(
#fetchAndSetExerciseBase,
[exerciseBaseId],
#fetchAndSetExercise,
[exerciseId],
),
returnValue: _i10.Future<_i5.ExerciseBase>.value(_FakeExerciseBase_5(
returnValue: _i10.Future<_i5.Exercise>.value(_FakeExercise_5(
this,
Invocation.method(
#fetchAndSetExerciseBase,
[exerciseBaseId],
#fetchAndSetExercise,
[exerciseId],
),
)),
) as _i10.Future<_i5.ExerciseBase>);
) as _i10.Future<_i5.Exercise>);
@override
_i5.ExerciseBase readExerciseBaseFromBaseInfo(_i12.ExerciseBaseData? baseData) =>
(super.noSuchMethod(
_i5.Exercise readExerciseFromBaseInfo(_i12.ExerciseBaseData? baseData) => (super.noSuchMethod(
Invocation.method(
#readExerciseBaseFromBaseInfo,
#readExerciseFromBaseInfo,
[baseData],
),
returnValue: _FakeExerciseBase_5(
returnValue: _FakeExercise_5(
this,
Invocation.method(
#readExerciseBaseFromBaseInfo,
#readExerciseFromBaseInfo,
[baseData],
),
),
) as _i5.ExerciseBase);
) as _i5.Exercise);
@override
_i10.Future<void> checkExerciseCacheVersion() => (super.noSuchMethod(
@@ -705,7 +704,7 @@ class MockExercisesProvider extends _i1.Mock implements _i11.ExercisesProvider {
) as _i10.Future<void>);
@override
_i10.Future<List<_i5.ExerciseBase>> searchExercise(
_i10.Future<List<_i5.Exercise>> searchExercise(
String? name, {
String? languageCode = r'en',
bool? searchEnglish = false,
@@ -719,8 +718,8 @@ class MockExercisesProvider extends _i1.Mock implements _i11.ExercisesProvider {
#searchEnglish: searchEnglish,
},
),
returnValue: _i10.Future<List<_i5.ExerciseBase>>.value(<_i5.ExerciseBase>[]),
) as _i10.Future<List<_i5.ExerciseBase>>);
returnValue: _i10.Future<List<_i5.Exercise>>.value(<_i5.Exercise>[]),
) as _i10.Future<List<_i5.Exercise>>);
@override
void addListener(_i14.VoidCallback? listener) => super.noSuchMethod(

View File

@@ -41,7 +41,7 @@ void main() {
final setting1 = Setting(
setId: 1,
order: 1,
exerciseBaseId: 1,
exerciseId: 1,
repetitionUnitId: 1,
reps: 2,
weightUnitId: 1,

View File

@@ -8,7 +8,7 @@ import 'dart:ui' as _i16;
import 'package:mockito/mockito.dart' as _i1;
import 'package:mockito/src/dummies.dart' as _i15;
import 'package:wger/models/exercises/base.dart' as _i13;
import 'package:wger/models/exercises/exercise.dart' as _i13;
import 'package:wger/models/exercises/translation.dart' as _i14;
import 'package:wger/models/workouts/day.dart' as _i6;
import 'package:wger/models/workouts/log.dart' as _i10;
@@ -331,7 +331,7 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
@override
_i12.Future<Map<String, dynamic>> fetchLogData(
_i5.WorkoutPlan? workout,
_i13.ExerciseBase? base,
_i13.Exercise? base,
) =>
(super.noSuchMethod(
Invocation.method(

View File

@@ -42,7 +42,7 @@ void main() {
final setting1 = Setting(
setId: 1,
order: 1,
exerciseBaseId: 1,
exerciseId: 1,
repetitionUnitId: 1,
reps: 2,
weightUnitId: 1,

View File

@@ -8,7 +8,7 @@ import 'dart:ui' as _i16;
import 'package:mockito/mockito.dart' as _i1;
import 'package:mockito/src/dummies.dart' as _i15;
import 'package:wger/models/exercises/base.dart' as _i13;
import 'package:wger/models/exercises/exercise.dart' as _i13;
import 'package:wger/models/exercises/translation.dart' as _i14;
import 'package:wger/models/workouts/day.dart' as _i6;
import 'package:wger/models/workouts/log.dart' as _i10;
@@ -331,7 +331,7 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
@override
_i12.Future<Map<String, dynamic>> fetchLogData(
_i5.WorkoutPlan? workout,
_i13.ExerciseBase? base,
_i13.Exercise? base,
) =>
(super.noSuchMethod(
Invocation.method(

View File

@@ -8,7 +8,7 @@ import 'dart:ui' as _i16;
import 'package:mockito/mockito.dart' as _i1;
import 'package:mockito/src/dummies.dart' as _i15;
import 'package:wger/models/exercises/base.dart' as _i13;
import 'package:wger/models/exercises/exercise.dart' as _i13;
import 'package:wger/models/exercises/translation.dart' as _i14;
import 'package:wger/models/workouts/day.dart' as _i6;
import 'package:wger/models/workouts/log.dart' as _i10;
@@ -331,7 +331,7 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
@override
_i12.Future<Map<String, dynamic>> fetchLogData(
_i5.WorkoutPlan? workout,
_i13.ExerciseBase? base,
_i13.Exercise? base,
) =>
(super.noSuchMethod(
Invocation.method(

View File

@@ -10,9 +10,9 @@ import 'package:http/http.dart' as _i9;
import 'package:mockito/mockito.dart' as _i1;
import 'package:mockito/src/dummies.dart' as _i25;
import 'package:wger/database/exercises/exercise_database.dart' as _i21;
import 'package:wger/models/exercises/base.dart' as _i3;
import 'package:wger/models/exercises/category.dart' as _i4;
import 'package:wger/models/exercises/equipment.dart' as _i5;
import 'package:wger/models/exercises/exercise.dart' as _i3;
import 'package:wger/models/exercises/exercise_base_data.dart' as _i20;
import 'package:wger/models/exercises/language.dart' as _i7;
import 'package:wger/models/exercises/muscle.dart' as _i6;
@@ -53,8 +53,8 @@ class _FakeWgerBaseProvider_0 extends _i1.SmartFake implements _i2.WgerBaseProvi
);
}
class _FakeExerciseBase_1 extends _i1.SmartFake implements _i3.ExerciseBase {
_FakeExerciseBase_1(
class _FakeExercise_1 extends _i1.SmartFake implements _i3.Exercise {
_FakeExercise_1(
Object parent,
Invocation parentInvocation,
) : super(
@@ -241,7 +241,7 @@ class MockExercisesProvider extends _i1.Mock implements _i18.ExercisesProvider {
) as _i2.WgerBaseProvider);
@override
set exerciseBases(List<_i3.ExerciseBase>? exercisesBases) => super.noSuchMethod(
set exerciseBases(List<_i3.Exercise>? exercisesBases) => super.noSuchMethod(
Invocation.setter(
#exerciseBases,
exercisesBases,
@@ -250,13 +250,13 @@ class MockExercisesProvider extends _i1.Mock implements _i18.ExercisesProvider {
);
@override
List<_i3.ExerciseBase> get filteredExerciseBases => (super.noSuchMethod(
List<_i3.Exercise> get filteredExercises => (super.noSuchMethod(
Invocation.getter(#filteredExerciseBases),
returnValue: <_i3.ExerciseBase>[],
) as List<_i3.ExerciseBase>);
returnValue: <_i3.Exercise>[],
) as List<_i3.Exercise>);
@override
set filteredExerciseBases(List<_i3.ExerciseBase>? newFilteredExercises) => super.noSuchMethod(
set filteredExercises(List<_i3.Exercise>? newFilteredExercises) => super.noSuchMethod(
Invocation.setter(
#filteredExerciseBases,
newFilteredExercises,
@@ -265,16 +265,16 @@ class MockExercisesProvider extends _i1.Mock implements _i18.ExercisesProvider {
);
@override
Map<int, List<_i3.ExerciseBase>> get exerciseBasesByVariation => (super.noSuchMethod(
Map<int, List<_i3.Exercise>> get exerciseBasesByVariation => (super.noSuchMethod(
Invocation.getter(#exerciseBasesByVariation),
returnValue: <int, List<_i3.ExerciseBase>>{},
) as Map<int, List<_i3.ExerciseBase>>);
returnValue: <int, List<_i3.Exercise>>{},
) as Map<int, List<_i3.Exercise>>);
@override
List<_i3.ExerciseBase> get bases => (super.noSuchMethod(
List<_i3.Exercise> get bases => (super.noSuchMethod(
Invocation.getter(#bases),
returnValue: <_i3.ExerciseBase>[],
) as List<_i3.ExerciseBase>);
returnValue: <_i3.Exercise>[],
) as List<_i3.Exercise>);
@override
List<_i4.ExerciseCategory> get categories => (super.noSuchMethod(
@@ -345,22 +345,22 @@ class MockExercisesProvider extends _i1.Mock implements _i18.ExercisesProvider {
);
@override
_i3.ExerciseBase findExerciseById(int? id) => (super.noSuchMethod(
_i3.Exercise findExerciseById(int? id) => (super.noSuchMethod(
Invocation.method(
#findExerciseById,
[id],
),
returnValue: _FakeExerciseBase_1(
returnValue: _FakeExercise_1(
this,
Invocation.method(
#findExerciseById,
[id],
),
),
) as _i3.ExerciseBase);
) as _i3.Exercise);
@override
List<_i3.ExerciseBase> findExerciseBasesByVariationId(
List<_i3.Exercise> findExerciseBasesByVariationId(
int? id, {
int? exerciseBaseIdToExclude,
}) =>
@@ -370,8 +370,8 @@ class MockExercisesProvider extends _i1.Mock implements _i18.ExercisesProvider {
[id],
{#exerciseBaseIdToExclude: exerciseBaseIdToExclude},
),
returnValue: <_i3.ExerciseBase>[],
) as List<_i3.ExerciseBase>);
returnValue: <_i3.Exercise>[],
) as List<_i3.Exercise>);
@override
_i4.ExerciseCategory findCategoryById(int? id) => (super.noSuchMethod(
@@ -499,35 +499,34 @@ class MockExercisesProvider extends _i1.Mock implements _i18.ExercisesProvider {
) as _i19.Future<_i7.Language>);
@override
_i19.Future<_i3.ExerciseBase> fetchAndSetExerciseBase(int? exerciseBaseId) => (super.noSuchMethod(
_i19.Future<_i3.Exercise> fetchAndSetExercise(int? exerciseId) => (super.noSuchMethod(
Invocation.method(
#fetchAndSetExerciseBase,
[exerciseBaseId],
#fetchAndSetExercise,
[exerciseId],
),
returnValue: _i19.Future<_i3.ExerciseBase>.value(_FakeExerciseBase_1(
returnValue: _i19.Future<_i3.Exercise>.value(_FakeExercise_1(
this,
Invocation.method(
#fetchAndSetExerciseBase,
[exerciseBaseId],
#fetchAndSetExercise,
[exerciseId],
),
)),
) as _i19.Future<_i3.ExerciseBase>);
) as _i19.Future<_i3.Exercise>);
@override
_i3.ExerciseBase readExerciseBaseFromBaseInfo(_i20.ExerciseBaseData? baseData) =>
(super.noSuchMethod(
_i3.Exercise readExerciseFromBaseInfo(_i20.ExerciseBaseData? baseData) => (super.noSuchMethod(
Invocation.method(
#readExerciseBaseFromBaseInfo,
#readExerciseFromBaseInfo,
[baseData],
),
returnValue: _FakeExerciseBase_1(
returnValue: _FakeExercise_1(
this,
Invocation.method(
#readExerciseBaseFromBaseInfo,
#readExerciseFromBaseInfo,
[baseData],
),
),
) as _i3.ExerciseBase);
) as _i3.Exercise);
@override
_i19.Future<void> checkExerciseCacheVersion() => (super.noSuchMethod(
@@ -635,7 +634,7 @@ class MockExercisesProvider extends _i1.Mock implements _i18.ExercisesProvider {
) as _i19.Future<void>);
@override
_i19.Future<List<_i3.ExerciseBase>> searchExercise(
_i19.Future<List<_i3.Exercise>> searchExercise(
String? name, {
String? languageCode = r'en',
bool? searchEnglish = false,
@@ -649,8 +648,8 @@ class MockExercisesProvider extends _i1.Mock implements _i18.ExercisesProvider {
#searchEnglish: searchEnglish,
},
),
returnValue: _i19.Future<List<_i3.ExerciseBase>>.value(<_i3.ExerciseBase>[]),
) as _i19.Future<List<_i3.ExerciseBase>>);
returnValue: _i19.Future<List<_i3.Exercise>>.value(<_i3.Exercise>[]),
) as _i19.Future<List<_i3.Exercise>>);
@override
void addListener(_i22.VoidCallback? listener) => super.noSuchMethod(
@@ -1057,7 +1056,7 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i23.WorkoutPlansProv
@override
_i19.Future<Map<String, dynamic>> fetchLogData(
_i12.WorkoutPlan? workout,
_i3.ExerciseBase? base,
_i3.Exercise? base,
) =>
(super.noSuchMethod(
Invocation.method(

View File

@@ -16,9 +16,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import 'package:wger/models/exercises/base.dart';
import 'package:wger/models/exercises/category.dart';
import 'package:wger/models/exercises/equipment.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/exercises/language.dart';
import 'package:wger/models/exercises/muscle.dart';
import 'package:wger/models/exercises/translation.dart';
@@ -48,7 +48,7 @@ const tEquipment3 = Equipment(id: 3, name: 'Bench');
const tEquipment4 = Equipment(id: 10, name: 'Gym mat');
const testEquipment = [tEquipment1, tEquipment2, tEquipment3];
final benchPress = ExerciseBase(
final benchPress = Exercise(
id: 1,
uuid: '364f196c-881b-4839-8bfc-9e8f651521b6',
created: DateTime(2021, 09, 01),
@@ -59,7 +59,7 @@ final benchPress = ExerciseBase(
musclesSecondary: const [tMuscle3],
);
final crunches = ExerciseBase(
final crunches = Exercise(
id: 2,
uuid: '82415754-fc4c-49ea-8ca7-1516dd36d5a0',
created: DateTime(2021, 08, 01),
@@ -70,7 +70,7 @@ final crunches = ExerciseBase(
musclesSecondary: const [tMuscle2],
);
final deadLift = ExerciseBase(
final deadLift = Exercise(
id: 3,
uuid: 'ca84e2c5-5608-4d6d-ba57-6d4b6b5e7acd',
created: DateTime(2021, 08, 01),
@@ -81,7 +81,7 @@ final deadLift = ExerciseBase(
musclesSecondary: const [tMuscle2],
);
final curls = ExerciseBase(
final curls = Exercise(
id: 4,
uuid: '361f024c-fdf8-4146-b7d7-0c1b67c58141',
created: DateTime(2021, 08, 01),
@@ -91,7 +91,7 @@ final curls = ExerciseBase(
muscles: const [tMuscle1],
musclesSecondary: const [tMuscle2],
);
final squats = ExerciseBase(
final squats = Exercise(
id: 5,
uuid: '361f024c-fdf8-4146-b7d7-0c1b67c58141',
created: DateTime(2021, 08, 01),
@@ -101,7 +101,7 @@ final squats = ExerciseBase(
muscles: const [tMuscle1],
musclesSecondary: const [tMuscle2],
);
final sideRaises = ExerciseBase(
final sideRaises = Exercise(
id: 6,
uuid: '721ff972-c568-41e3-8cf5-cf1e5c5c801c',
created: DateTime(2022, 11, 01),
@@ -118,7 +118,7 @@ final benchPressDe = Translation(
created: DateTime(2021, 1, 15),
name: 'Bankdrücken',
description: 'add clever text',
baseId: benchPress.id,
exerciseId: benchPress.id,
language: tLanguage1,
);
final benchPressEn = Translation(
@@ -127,7 +127,7 @@ final benchPressEn = Translation(
created: DateTime(2021, 1, 15),
name: 'Bench press',
description: 'add clever text',
baseId: benchPress.id,
exerciseId: benchPress.id,
language: tLanguage1,
);
@@ -137,7 +137,7 @@ final deadLiftEn = Translation(
created: DateTime(2021, 1, 15),
name: 'Dead Lift',
description: 'Lorem ipsum etc',
baseId: crunches.id,
exerciseId: crunches.id,
language: tLanguage2,
);
@@ -147,7 +147,7 @@ final crunchesFr = Translation(
created: DateTime(2021, 4, 1),
name: 'Crunches',
description: 'The man in black fled across the desert, and the gunslinger followed',
baseId: deadLift.id,
exerciseId: deadLift.id,
language: tLanguage3,
);
@@ -157,7 +157,7 @@ final crunchesDe = Translation(
created: DateTime(2021, 4, 1),
name: 'Crunches',
description: 'The story so far: in the beginning, the universe was created',
baseId: deadLift.id,
exerciseId: deadLift.id,
language: tLanguage1,
);
@@ -167,7 +167,7 @@ final crunchesEn = Translation(
created: DateTime(2021, 4, 1),
name: 'test exercise 5',
description: 'I am an invisible man',
baseId: deadLift.id,
exerciseId: deadLift.id,
language: tLanguage2,
);
@@ -177,7 +177,7 @@ final curlsEn = Translation(
created: DateTime(2021, 4, 1),
name: 'Curls',
description: 'It was a bright cold day in April, and the clocks were striking thirteen',
baseId: curls.id,
exerciseId: curls.id,
language: tLanguage2,
);
@@ -187,7 +187,7 @@ final squatsEn = Translation(
created: DateTime(2021, 4, 1),
name: 'Squats',
description: 'It was a bright cold day in April, and the clocks were striking thirteen',
baseId: curls.id,
exerciseId: curls.id,
language: tLanguage2,
);
@@ -197,11 +197,11 @@ final sideRaisesEn = Translation(
created: DateTime(2022, 11, 1),
name: 'Side raises',
description: 'It was a bright cold day in April, and the clocks were striking thirteen',
baseId: curls.id,
exerciseId: curls.id,
language: tLanguage2,
);
List<ExerciseBase> getTestExerciseBases() {
List<Exercise> getTestExerciseBases() {
benchPress.translations = [benchPressEn, benchPressDe];
crunches.translations = [crunchesEn, crunchesDe, crunchesFr];
deadLift.translations = [deadLiftEn];

View File

@@ -71,7 +71,7 @@ WorkoutPlan getWorkout() {
final settingBenchPress = Setting(
setId: 1,
order: 1,
exerciseBaseId: 1,
exerciseId: 1,
repetitionUnitId: 1,
reps: 6,
weightUnitId: 1,
@@ -80,7 +80,7 @@ WorkoutPlan getWorkout() {
);
settingBenchPress.repetitionUnit = repetitionUnit1;
settingBenchPress.weightUnit = weightUnit1;
settingBenchPress.exerciseBase = testBases[0];
settingBenchPress.exercise = testBases[0];
settingBenchPress.weight = 80;
final setBenchPress = Set.withData(
@@ -97,7 +97,7 @@ WorkoutPlan getWorkout() {
final settingSquat = Setting(
setId: 2,
order: 1,
exerciseBaseId: 8,
exerciseId: 8,
repetitionUnitId: 1,
reps: 8,
weightUnitId: 1,
@@ -106,7 +106,7 @@ WorkoutPlan getWorkout() {
);
settingSquat.repetitionUnit = repetitionUnit1;
settingSquat.weightUnit = weightUnit1;
settingSquat.exerciseBase = testBases[4];
settingSquat.exercise = testBases[4];
settingSquat.weight = 120;
final setSquat = Set.withData(
@@ -122,7 +122,7 @@ WorkoutPlan getWorkout() {
final settingSideRaises = Setting(
setId: 2,
order: 1,
exerciseBaseId: 8,
exerciseId: 8,
repetitionUnitId: 1,
reps: 12,
weightUnitId: 1,
@@ -131,7 +131,7 @@ WorkoutPlan getWorkout() {
);
settingSideRaises.repetitionUnit = repetitionUnit1;
settingSideRaises.weightUnit = weightUnit1;
settingSideRaises.exerciseBase = testBases[5];
settingSideRaises.exercise = testBases[5];
settingSideRaises.weight = 6;
final setSideRaises = Set.withData(