Set the baseID when loading exercises

This commit is contained in:
Roland Geider
2022-05-11 16:58:55 +02:00
parent 7ae98462fa
commit 34e0854c68
4 changed files with 51 additions and 77 deletions

View File

@@ -39,6 +39,7 @@ import 'package:wger/providers/base_provider.dart';
class ExercisesProvider with ChangeNotifier {
final WgerBaseProvider baseProvider;
ExercisesProvider(this.baseProvider);
static const EXERCISE_CACHE_DAYS = 7;
static const CACHE_VERSION = 3;
@@ -92,8 +93,6 @@ class ExercisesProvider with ChangeNotifier {
return variations;
}
ExercisesProvider(this.baseProvider);
List<ExerciseBase> get bases => [..._exerciseBases];
List<ExerciseCategory> get categories => [..._categories];
List<Muscle> get muscles => [..._muscles];
@@ -184,26 +183,15 @@ 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.
///
/// languageId: the ID of the language to filter the results by. If this
/// parameter is not passed, all exercises are returned.
List<ExerciseBase> findExerciseBasesByVariationId(int id,
{int? exerciseIdToExclude, int? languageId}) {
List<ExerciseBase> findExerciseBasesByVariationId(int id, {int? exerciseBaseIdToExclude}) {
var out = _exerciseBases
.where(
(base) => base.variationId == id,
)
.toList();
/*
if (languageId != null) {
out = out.where((e) => e.languageId == languageId).toList();
}
*/
if (exerciseIdToExclude != null) {
out = out.where((e) => e.id != exerciseIdToExclude).toList();
if (exerciseBaseIdToExclude != null) {
out = out.where((e) => e.id != exerciseBaseIdToExclude).toList();
}
return out;
}
@@ -334,6 +322,7 @@ class ExercisesProvider with ChangeNotifier {
.cast<Alias>();
exercise.notes =
exerciseData['notes'].map((e) => Comment.fromJson(e)).toList().cast<Comment>();
exercise.baseId = baseData['id'];
exercises.add(exercise);
}

View File

@@ -86,8 +86,7 @@ class ExerciseDetail extends StatelessWidget {
Provider.of<ExercisesProvider>(context, listen: false)
.findExerciseBasesByVariationId(
_exerciseBase.variationId!,
languageId: _exercise.languageId,
exerciseIdToExclude: _exerciseBase.id,
exerciseBaseIdToExclude: _exerciseBase.id,
)
.forEach((element) {
out.add(ExerciseListTile(

View File

@@ -82,6 +82,10 @@ main() {
'd8aa5990-bb47-4111-9823-e2fbd98fe07f',
'49a159e1-1e00-409a-81c9-b4d4489fbd67'
]);
expect(base.exercises[0].name, '2 Handed Kettlebell Swing');
expect(base.exercises[1].name, 'Kettlebell Con Dos Manos');
expect(base.exercises[2].name, 'Zweihändiges Kettlebell');
});
});
}

View File

@@ -24,13 +24,11 @@ import 'package:wger/providers/exercises.dart' as _i8;
// ignore_for_file: unnecessary_parenthesis
// ignore_for_file: camel_case_types
class _FakeWgerBaseProvider_0 extends _i1.Fake implements _i2.WgerBaseProvider {
}
class _FakeWgerBaseProvider_0 extends _i1.Fake implements _i2.WgerBaseProvider {}
class _FakeExerciseBase_1 extends _i1.Fake implements _i3.ExerciseBase {}
class _FakeExerciseCategory_2 extends _i1.Fake implements _i4.ExerciseCategory {
}
class _FakeExerciseCategory_2 extends _i1.Fake implements _i4.ExerciseCategory {}
class _FakeEquipment_3 extends _i1.Fake implements _i5.Equipment {}
@@ -48,8 +46,8 @@ class MockExercisesProvider extends _i1.Mock implements _i8.ExercisesProvider {
@override
_i2.WgerBaseProvider get baseProvider =>
(super.noSuchMethod(Invocation.getter(#baseProvider),
returnValue: _FakeWgerBaseProvider_0()) as _i2.WgerBaseProvider);
(super.noSuchMethod(Invocation.getter(#baseProvider), returnValue: _FakeWgerBaseProvider_0())
as _i2.WgerBaseProvider);
@override
set exerciseBases(List<_i3.ExerciseBase>? exercisesBases) =>
super.noSuchMethod(Invocation.setter(#exerciseBases, exercisesBases),
@@ -60,65 +58,57 @@ class MockExercisesProvider extends _i1.Mock implements _i8.ExercisesProvider {
returnValue: <_i3.ExerciseBase>[]) as List<_i3.ExerciseBase>);
@override
set filteredExerciseBases(List<_i3.ExerciseBase>? newFilteredExercises) =>
super.noSuchMethod(
Invocation.setter(#filteredExerciseBases, newFilteredExercises),
super.noSuchMethod(Invocation.setter(#filteredExerciseBases, newFilteredExercises),
returnValueForMissingStub: null);
@override
Map<int, List<_i3.ExerciseBase>> get exerciseBasesByVariation =>
(super.noSuchMethod(Invocation.getter(#exerciseBasesByVariation),
returnValue: <int, List<_i3.ExerciseBase>>{})
as Map<int, List<_i3.ExerciseBase>>);
returnValue: <int, List<_i3.ExerciseBase>>{}) as Map<int, List<_i3.ExerciseBase>>);
@override
List<_i3.ExerciseBase> get bases =>
(super.noSuchMethod(Invocation.getter(#bases),
returnValue: <_i3.ExerciseBase>[]) as List<_i3.ExerciseBase>);
(super.noSuchMethod(Invocation.getter(#bases), returnValue: <_i3.ExerciseBase>[])
as List<_i3.ExerciseBase>);
@override
List<_i4.ExerciseCategory> get categories =>
(super.noSuchMethod(Invocation.getter(#categories),
returnValue: <_i4.ExerciseCategory>[]) as List<_i4.ExerciseCategory>);
(super.noSuchMethod(Invocation.getter(#categories), returnValue: <_i4.ExerciseCategory>[])
as List<_i4.ExerciseCategory>);
@override
List<_i6.Muscle> get muscles =>
(super.noSuchMethod(Invocation.getter(#muscles),
returnValue: <_i6.Muscle>[]) as List<_i6.Muscle>);
(super.noSuchMethod(Invocation.getter(#muscles), returnValue: <_i6.Muscle>[])
as List<_i6.Muscle>);
@override
List<_i5.Equipment> get equipment =>
(super.noSuchMethod(Invocation.getter(#equipment),
returnValue: <_i5.Equipment>[]) as List<_i5.Equipment>);
(super.noSuchMethod(Invocation.getter(#equipment), returnValue: <_i5.Equipment>[])
as List<_i5.Equipment>);
@override
List<_i7.Language> get languages =>
(super.noSuchMethod(Invocation.getter(#languages),
returnValue: <_i7.Language>[]) as List<_i7.Language>);
(super.noSuchMethod(Invocation.getter(#languages), returnValue: <_i7.Language>[])
as List<_i7.Language>);
@override
bool get hasListeners =>
(super.noSuchMethod(Invocation.getter(#hasListeners), returnValue: false)
as bool);
(super.noSuchMethod(Invocation.getter(#hasListeners), returnValue: false) as bool);
@override
_i9.Future<void> setFilters(_i8.Filters? newFilters) =>
(super.noSuchMethod(Invocation.method(#setFilters, [newFilters]),
returnValue: Future<void>.value(),
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
@override
_i9.Future<void> findByFilters() =>
(super.noSuchMethod(Invocation.method(#findByFilters, []),
returnValue: Future<void>.value(),
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
_i9.Future<void> findByFilters() => (super.noSuchMethod(Invocation.method(#findByFilters, []),
returnValue: Future<void>.value(),
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
@override
void clear() => super.noSuchMethod(Invocation.method(#clear, []),
returnValueForMissingStub: null);
void clear() =>
super.noSuchMethod(Invocation.method(#clear, []), returnValueForMissingStub: null);
@override
_i3.ExerciseBase findExerciseBaseById(int? id) =>
(super.noSuchMethod(Invocation.method(#findExerciseBaseById, [id]),
returnValue: _FakeExerciseBase_1()) as _i3.ExerciseBase);
@override
List<_i3.ExerciseBase> findExerciseBasesByVariationId(int? id,
{int? exerciseIdToExclude, int? languageId}) =>
{int? exerciseBaseIdToExclude, int? languageId}) =>
(super.noSuchMethod(
Invocation.method(#findExerciseBasesByVariationId, [
id
], {
#exerciseIdToExclude: exerciseIdToExclude,
#languageId: languageId
}),
Invocation.method(#findExerciseBasesByVariationId, [id],
{#exerciseIdToExclude: exerciseBaseIdToExclude, #languageId: languageId}),
returnValue: <_i3.ExerciseBase>[]) as List<_i3.ExerciseBase>);
@override
_i4.ExerciseCategory findCategoryById(int? id) =>
@@ -130,12 +120,12 @@ class MockExercisesProvider extends _i1.Mock implements _i8.ExercisesProvider {
returnValue: _FakeEquipment_3()) as _i5.Equipment);
@override
_i6.Muscle findMuscleById(int? id) =>
(super.noSuchMethod(Invocation.method(#findMuscleById, [id]),
returnValue: _FakeMuscle_4()) as _i6.Muscle);
(super.noSuchMethod(Invocation.method(#findMuscleById, [id]), returnValue: _FakeMuscle_4())
as _i6.Muscle);
@override
_i7.Language findLanguageById(int? id) =>
(super.noSuchMethod(Invocation.method(#findLanguageById, [id]),
returnValue: _FakeLanguage_5()) as _i7.Language);
_i7.Language findLanguageById(int? id) => (super
.noSuchMethod(Invocation.method(#findLanguageById, [id]), returnValue: _FakeLanguage_5())
as _i7.Language);
@override
_i9.Future<void> fetchAndSetCategories() =>
(super.noSuchMethod(Invocation.method(#fetchAndSetCategories, []),
@@ -163,15 +153,12 @@ class MockExercisesProvider extends _i1.Mock implements _i8.ExercisesProvider {
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
@override
_i9.Future<_i3.ExerciseBase> fetchAndSetExerciseBase(int? exerciseBaseId) =>
(super.noSuchMethod(
Invocation.method(#fetchAndSetExerciseBase, [exerciseBaseId]),
returnValue:
Future<_i3.ExerciseBase>.value(_FakeExerciseBase_1()))
(super.noSuchMethod(Invocation.method(#fetchAndSetExerciseBase, [exerciseBaseId]),
returnValue: Future<_i3.ExerciseBase>.value(_FakeExerciseBase_1()))
as _i9.Future<_i3.ExerciseBase>);
@override
_i3.ExerciseBase readExerciseBaseFromBaseInfo(dynamic baseData) =>
(super.noSuchMethod(
Invocation.method(#readExerciseBaseFromBaseInfo, [baseData]),
(super.noSuchMethod(Invocation.method(#readExerciseBaseFromBaseInfo, [baseData]),
returnValue: _FakeExerciseBase_1()) as _i3.ExerciseBase);
@override
_i9.Future<void> checkExerciseCacheVersion() =>
@@ -184,26 +171,21 @@ class MockExercisesProvider extends _i1.Mock implements _i8.ExercisesProvider {
returnValue: Future<void>.value(),
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
@override
_i9.Future<List<_i3.ExerciseBase>> searchExercise(String? name,
[String? languageCode = r'en']) =>
(super.noSuchMethod(
Invocation.method(#searchExercise, [name, languageCode]),
returnValue:
Future<List<_i3.ExerciseBase>>.value(<_i3.ExerciseBase>[]))
_i9.Future<List<_i3.ExerciseBase>> searchExercise(String? name, [String? languageCode = r'en']) =>
(super.noSuchMethod(Invocation.method(#searchExercise, [name, languageCode]),
returnValue: Future<List<_i3.ExerciseBase>>.value(<_i3.ExerciseBase>[]))
as _i9.Future<List<_i3.ExerciseBase>>);
@override
void addListener(_i10.VoidCallback? listener) =>
super.noSuchMethod(Invocation.method(#addListener, [listener]),
returnValueForMissingStub: null);
void addListener(_i10.VoidCallback? listener) => super
.noSuchMethod(Invocation.method(#addListener, [listener]), returnValueForMissingStub: null);
@override
void removeListener(_i10.VoidCallback? listener) =>
super.noSuchMethod(Invocation.method(#removeListener, [listener]),
returnValueForMissingStub: null);
@override
void dispose() => super.noSuchMethod(Invocation.method(#dispose, []),
returnValueForMissingStub: null);
void dispose() =>
super.noSuchMethod(Invocation.method(#dispose, []), returnValueForMissingStub: null);
@override
void notifyListeners() =>
super.noSuchMethod(Invocation.method(#notifyListeners, []),
returnValueForMissingStub: null);
super.noSuchMethod(Invocation.method(#notifyListeners, []), returnValueForMissingStub: null);
}