From 52892db9b11ff8fad6e4cae8e356cbad7ccd0448 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Mon, 22 Dec 2025 13:03:24 +0100 Subject: [PATCH] Allow passing the language to the fetch request This allows us to use the trophy translations from the server. --- lib/providers/base_provider.dart | 15 ++++---- lib/providers/trophies.dart | 36 ++++++++++++------- lib/providers/trophies.g.dart | 2 +- lib/widgets/dashboard/widgets/trophies.dart | 3 +- lib/widgets/routines/gym_mode/log_page.dart | 3 ++ lib/widgets/routines/gym_mode/summary.dart | 21 ++++++++--- lib/widgets/trophies/trophies_overview.dart | 3 +- test/core/settings_test.mocks.dart | 14 +++++--- .../contribute_exercise_image_test.mocks.dart | 14 +++++--- test/gallery/gallery_form_test.mocks.dart | 14 +++++--- test/gallery/gallery_screen_test.mocks.dart | 14 +++++--- .../measurement_provider_test.mocks.dart | 14 +++++--- .../nutritional_plan_screen_test.mocks.dart | 14 +++++--- .../nutritional_plans_screen_test.mocks.dart | 14 +++++--- .../routine/gym_mode/gym_mode_test.mocks.dart | 14 +++++--- test/routine/routine_screen_test.mocks.dart | 14 +++++--- .../routine/routines_provider_test.mocks.dart | 14 +++++--- test/routine/routines_screen_test.mocks.dart | 14 +++++--- .../trophies_provider_test.mocks.dart | 14 +++++--- .../dashboard_trophies_widget_test.dart | 5 ++- .../dashboard_trophies_widget_test.mocks.dart | 8 +++-- .../widgets/trophies_overview_test.dart | 5 ++- .../widgets/trophies_overview_test.mocks.dart | 8 +++-- test/user/provider_test.mocks.dart | 32 +++++------------ test/weight/weight_provider_test.mocks.dart | 14 +++++--- 25 files changed, 202 insertions(+), 121 deletions(-) diff --git a/lib/providers/base_provider.dart b/lib/providers/base_provider.dart index dee257d7..a1e11f54 100644 --- a/lib/providers/base_provider.dart +++ b/lib/providers/base_provider.dart @@ -1,6 +1,6 @@ /* * This file is part of wger Workout Manager . - * Copyright (C) 2020, 2021 wger Team + * Copyright (c) 2025 wger Team * * wger Workout Manager is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -37,7 +37,7 @@ class WgerBaseProvider { this.client = client ?? http.Client(); } - Map getDefaultHeaders({bool includeAuth = false}) { + Map getDefaultHeaders({bool includeAuth = false, String? language}) { final out = { HttpHeaders.contentTypeHeader: 'application/json; charset=UTF-8', HttpHeaders.userAgentHeader: auth.getAppNameHeader(), @@ -47,6 +47,10 @@ class WgerBaseProvider { out[HttpHeaders.authorizationHeader] = 'Token ${auth.token}'; } + if (language != null) { + out[HttpHeaders.acceptLanguageHeader] = language; + } + return out; } @@ -56,8 +60,7 @@ class WgerBaseProvider { } /// Fetch and retrieve the overview list of objects, returns the JSON parsed response - Future fetch(Uri uri) async { - // Future | List> fetch(Uri uri) async { + Future fetch(Uri uri, {String? language}) async { // Send the request final response = await client.get( uri, @@ -74,13 +77,13 @@ class WgerBaseProvider { } /// Fetch and retrieve the overview list of objects, returns the JSON parsed response - Future> fetchPaginated(Uri uri) async { + Future> fetchPaginated(Uri uri, {String? language}) async { final out = []; var url = uri; var allPagesProcessed = false; while (!allPagesProcessed) { - final data = await fetch(url); + final data = await fetch(url, language: language); data['results'].forEach((e) => out.add(e)); diff --git a/lib/providers/trophies.dart b/lib/providers/trophies.dart index e172f5ec..183a8fde 100644 --- a/lib/providers/trophies.dart +++ b/lib/providers/trophies.dart @@ -38,10 +38,10 @@ class TrophyRepository { TrophyRepository(this.base); - Future> fetchTrophies() async { + Future> fetchTrophies({String? language}) async { try { final url = base.makeUrl(trophiesPath, query: {'limit': API_MAX_PAGE_SIZE}); - final trophyData = await base.fetchPaginated(url); + final trophyData = await base.fetchPaginated(url, language: language); return trophyData.map((e) => Trophy.fromJson(e)).toList(); } catch (e, stk) { _logger.warning('Error fetching trophies:', e, stk); @@ -49,7 +49,10 @@ class TrophyRepository { } } - Future> fetchUserTrophies({Map? filterQuery}) async { + Future> fetchUserTrophies({ + Map? filterQuery, + String? language, + }) async { final query = {'limit': API_MAX_PAGE_SIZE}; if (filterQuery != null) { query.addAll(filterQuery); @@ -57,7 +60,7 @@ class TrophyRepository { try { final url = base.makeUrl(userTrophiesPath, query: query); - final trophyData = await base.fetchPaginated(url); + final trophyData = await base.fetchPaginated(url, language: language); return trophyData.map((e) => UserTrophy.fromJson(e)).toList(); } catch (e, stk) { _logger.warning('Error fetching user trophies:'); @@ -67,10 +70,13 @@ class TrophyRepository { } } - Future> fetchProgression({Map? filterQuery}) async { + Future> fetchProgression({ + Map? filterQuery, + String? language, + }) async { try { final url = base.makeUrl(userTrophyProgressionPath, query: filterQuery); - final List data = await base.fetch(url); + final List data = await base.fetch(url, language: language); return data.map((e) => UserTrophyProgression.fromJson(e)).toList(); } catch (e, stk) { _logger.warning('Error fetching user trophy progression:', e, stk); @@ -102,24 +108,28 @@ final class TrophyStateNotifier extends _$TrophyStateNotifier { /// Fetch trophies awarded to the user. /// Excludes hidden trophies as well as repeatable (PR) trophies since they are /// handled separately - Future> fetchUserTrophies() async { + Future> fetchUserTrophies({String? language}) async { final repo = ref.read(trophyRepositoryProvider); return repo.fetchUserTrophies( filterQuery: {'trophy__is_hidden': 'false', 'trophy__is_repeatable': 'false'}, + language: language, ); } /// Fetch PR trophies awarded to the user - Future> fetchUserPRTrophies() async { + Future> fetchUserPRTrophies({String? language}) async { final repo = ref.read(trophyRepositoryProvider); - return repo.fetchUserTrophies(filterQuery: {'trophy__trophy_type': TrophyType.pr.name}); + return repo.fetchUserTrophies( + filterQuery: {'trophy__trophy_type': TrophyType.pr.name}, + language: language, + ); } /// Fetch trophy progression for the user - Future> fetchTrophyProgression() async { + Future> fetchTrophyProgression({String? language}) async { final repo = ref.read(trophyRepositoryProvider); - return repo.fetchProgression( - filterQuery: {'trophy__is_hidden': 'false', 'trophy__is_repeatable': 'false'}, - ); + + // Note that repeatable trophies are filtered out in the backend + return repo.fetchProgression(language: language); } } diff --git a/lib/providers/trophies.g.dart b/lib/providers/trophies.g.dart index 4b413f7f..88f47d58 100644 --- a/lib/providers/trophies.g.dart +++ b/lib/providers/trophies.g.dart @@ -81,7 +81,7 @@ final class TrophyStateNotifierProvider extends $NotifierProvider r'7f50ce352d980168dae169916a17d9b62b388d28'; +String _$trophyStateNotifierHash() => r'47b4babf337bbb8bf60142ebe59dc760fa08dce3'; abstract class _$TrophyStateNotifier extends $Notifier { void build(); diff --git a/lib/widgets/dashboard/widgets/trophies.dart b/lib/widgets/dashboard/widgets/trophies.dart index b0e1bb62..3e39fd45 100644 --- a/lib/widgets/dashboard/widgets/trophies.dart +++ b/lib/widgets/dashboard/widgets/trophies.dart @@ -29,9 +29,10 @@ class DashboardTrophiesWidget extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final provider = ref.watch(trophyStateProvider.notifier); + final languageCode = Localizations.localeOf(context).languageCode; return FutureBuilder( - future: provider.fetchUserTrophies(), + future: provider.fetchUserTrophies(language: languageCode), builder: (context, asyncSnapshot) { if (asyncSnapshot.connectionState != ConnectionState.done) { return const Card(child: BoxedProgressIndicator()); diff --git a/lib/widgets/routines/gym_mode/log_page.dart b/lib/widgets/routines/gym_mode/log_page.dart index 70254266..10cf7e64 100644 --- a/lib/widgets/routines/gym_mode/log_page.dart +++ b/lib/widgets/routines/gym_mode/log_page.dart @@ -549,6 +549,9 @@ class _LogFormWidgetState extends ConsumerState { _weightController = TextEditingController(); WidgetsBinding.instance.addPostFrameCallback((_) { + if (!mounted) { + return; + } _syncControllersWithWidget(); }); } diff --git a/lib/widgets/routines/gym_mode/summary.dart b/lib/widgets/routines/gym_mode/summary.dart index 850af71a..146b15c5 100644 --- a/lib/widgets/routines/gym_mode/summary.dart +++ b/lib/widgets/routines/gym_mode/summary.dart @@ -38,7 +38,6 @@ import '../logs/muscle_groups.dart'; class WorkoutSummary extends ConsumerStatefulWidget { final _logger = Logger('WorkoutSummary'); - final PageController _controller; WorkoutSummary(this._controller); @@ -51,14 +50,24 @@ class _WorkoutSummaryState extends ConsumerState { late Future _initData; late Routine _routine; late List _userPrTrophies; + bool _didInit = false; @override void initState() { super.initState(); - _initData = _reloadRoutineData(); } - Future _reloadRoutineData() async { + @override + void didChangeDependencies() { + super.didChangeDependencies(); + if (!_didInit) { + final languageCode = Localizations.localeOf(context).languageCode; + _initData = _reloadRoutineData(languageCode); + _didInit = true; + } + } + + Future _reloadRoutineData(String languageCode) async { widget._logger.fine('Loading routine data'); final gymState = ref.read(gymStateProvider); @@ -67,7 +76,7 @@ class _WorkoutSummaryState extends ConsumerState { ); final trophyNotifier = ref.read(trophyStateProvider.notifier); - _userPrTrophies = await trophyNotifier.fetchUserPRTrophies(); + _userPrTrophies = await trophyNotifier.fetchUserPRTrophies(language: languageCode); } @override @@ -86,7 +95,9 @@ class _WorkoutSummaryState extends ConsumerState { if (snapshot.connectionState == ConnectionState.waiting) { return const BoxedProgressIndicator(); } else if (snapshot.hasError) { - return Center(child: Text('Error: ${snapshot.error}: ${snapshot.stackTrace}')); + widget._logger.warning(snapshot.error); + widget._logger.warning(snapshot.stackTrace); + return Center(child: Text('Error: ${snapshot.error}')); } else if (snapshot.connectionState == ConnectionState.done) { final apiSession = _routine.sessions.firstWhereOrNull( (s) => s.session.date.isSameDayAs(clock.now()), diff --git a/lib/widgets/trophies/trophies_overview.dart b/lib/widgets/trophies/trophies_overview.dart index 2db561e7..d763e946 100644 --- a/lib/widgets/trophies/trophies_overview.dart +++ b/lib/widgets/trophies/trophies_overview.dart @@ -29,6 +29,7 @@ class TrophiesOverview extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final notifier = ref.watch(trophyStateProvider.notifier); + final languageCode = Localizations.localeOf(context).languageCode; // Responsive grid: determine columns based on screen width final width = MediaQuery.widthOf(context); @@ -44,7 +45,7 @@ class TrophiesOverview extends ConsumerWidget { } return FutureBuilder>( - future: notifier.fetchTrophyProgression(), + future: notifier.fetchTrophyProgression(language: languageCode), builder: (context, snapshot) { if (snapshot.connectionState != ConnectionState.done) { return const Card(child: BoxedProgressIndicator()); diff --git a/test/core/settings_test.mocks.dart b/test/core/settings_test.mocks.dart index db2394bd..e883c76d 100644 --- a/test/core/settings_test.mocks.dart +++ b/test/core/settings_test.mocks.dart @@ -1066,10 +1066,14 @@ class MockWgerBaseProvider extends _i1.Mock implements _i2.WgerBaseProvider { ); @override - Map getDefaultHeaders({bool? includeAuth = false}) => + Map getDefaultHeaders({ + bool? includeAuth = false, + String? language, + }) => (super.noSuchMethod( Invocation.method(#getDefaultHeaders, [], { #includeAuth: includeAuth, + #language: language, }), returnValue: {}, ) @@ -1100,17 +1104,17 @@ class MockWgerBaseProvider extends _i1.Mock implements _i2.WgerBaseProvider { as Uri); @override - _i18.Future fetch(Uri? uri) => + _i18.Future fetch(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetch, [uri]), + Invocation.method(#fetch, [uri], {#language: language}), returnValue: _i18.Future.value(), ) as _i18.Future); @override - _i18.Future> fetchPaginated(Uri? uri) => + _i18.Future> fetchPaginated(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetchPaginated, [uri]), + Invocation.method(#fetchPaginated, [uri], {#language: language}), returnValue: _i18.Future>.value([]), ) as _i18.Future>); diff --git a/test/exercises/contribute_exercise_image_test.mocks.dart b/test/exercises/contribute_exercise_image_test.mocks.dart index c3685ed3..c5c3b857 100644 --- a/test/exercises/contribute_exercise_image_test.mocks.dart +++ b/test/exercises/contribute_exercise_image_test.mocks.dart @@ -368,10 +368,14 @@ class MockWgerBaseProvider extends _i1.Mock implements _i2.WgerBaseProvider { ); @override - Map getDefaultHeaders({bool? includeAuth = false}) => + Map getDefaultHeaders({ + bool? includeAuth = false, + String? language, + }) => (super.noSuchMethod( Invocation.method(#getDefaultHeaders, [], { #includeAuth: includeAuth, + #language: language, }), returnValue: {}, ) @@ -402,17 +406,17 @@ class MockWgerBaseProvider extends _i1.Mock implements _i2.WgerBaseProvider { as Uri); @override - _i14.Future fetch(Uri? uri) => + _i14.Future fetch(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetch, [uri]), + Invocation.method(#fetch, [uri], {#language: language}), returnValue: _i14.Future.value(), ) as _i14.Future); @override - _i14.Future> fetchPaginated(Uri? uri) => + _i14.Future> fetchPaginated(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetchPaginated, [uri]), + Invocation.method(#fetchPaginated, [uri], {#language: language}), returnValue: _i14.Future>.value([]), ) as _i14.Future>); diff --git a/test/gallery/gallery_form_test.mocks.dart b/test/gallery/gallery_form_test.mocks.dart index e14d7838..a531b6ae 100644 --- a/test/gallery/gallery_form_test.mocks.dart +++ b/test/gallery/gallery_form_test.mocks.dart @@ -141,10 +141,14 @@ class MockGalleryProvider extends _i1.Mock implements _i4.GalleryProvider { as _i6.Future); @override - Map getDefaultHeaders({bool? includeAuth = false}) => + Map getDefaultHeaders({ + bool? includeAuth = false, + String? language, + }) => (super.noSuchMethod( Invocation.method(#getDefaultHeaders, [], { #includeAuth: includeAuth, + #language: language, }), returnValue: {}, ) @@ -175,17 +179,17 @@ class MockGalleryProvider extends _i1.Mock implements _i4.GalleryProvider { as Uri); @override - _i6.Future fetch(Uri? uri) => + _i6.Future fetch(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetch, [uri]), + Invocation.method(#fetch, [uri], {#language: language}), returnValue: _i6.Future.value(), ) as _i6.Future); @override - _i6.Future> fetchPaginated(Uri? uri) => + _i6.Future> fetchPaginated(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetchPaginated, [uri]), + Invocation.method(#fetchPaginated, [uri], {#language: language}), returnValue: _i6.Future>.value([]), ) as _i6.Future>); diff --git a/test/gallery/gallery_screen_test.mocks.dart b/test/gallery/gallery_screen_test.mocks.dart index d1ab1318..330d0c42 100644 --- a/test/gallery/gallery_screen_test.mocks.dart +++ b/test/gallery/gallery_screen_test.mocks.dart @@ -141,10 +141,14 @@ class MockGalleryProvider extends _i1.Mock implements _i4.GalleryProvider { as _i6.Future); @override - Map getDefaultHeaders({bool? includeAuth = false}) => + Map getDefaultHeaders({ + bool? includeAuth = false, + String? language, + }) => (super.noSuchMethod( Invocation.method(#getDefaultHeaders, [], { #includeAuth: includeAuth, + #language: language, }), returnValue: {}, ) @@ -175,17 +179,17 @@ class MockGalleryProvider extends _i1.Mock implements _i4.GalleryProvider { as Uri); @override - _i6.Future fetch(Uri? uri) => + _i6.Future fetch(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetch, [uri]), + Invocation.method(#fetch, [uri], {#language: language}), returnValue: _i6.Future.value(), ) as _i6.Future); @override - _i6.Future> fetchPaginated(Uri? uri) => + _i6.Future> fetchPaginated(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetchPaginated, [uri]), + Invocation.method(#fetchPaginated, [uri], {#language: language}), returnValue: _i6.Future>.value([]), ) as _i6.Future>); diff --git a/test/measurements/measurement_provider_test.mocks.dart b/test/measurements/measurement_provider_test.mocks.dart index ef362a87..c8c22b45 100644 --- a/test/measurements/measurement_provider_test.mocks.dart +++ b/test/measurements/measurement_provider_test.mocks.dart @@ -78,10 +78,14 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { ); @override - Map getDefaultHeaders({bool? includeAuth = false}) => + Map getDefaultHeaders({ + bool? includeAuth = false, + String? language, + }) => (super.noSuchMethod( Invocation.method(#getDefaultHeaders, [], { #includeAuth: includeAuth, + #language: language, }), returnValue: {}, ) @@ -112,17 +116,17 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { as Uri); @override - _i5.Future fetch(Uri? uri) => + _i5.Future fetch(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetch, [uri]), + Invocation.method(#fetch, [uri], {#language: language}), returnValue: _i5.Future.value(), ) as _i5.Future); @override - _i5.Future> fetchPaginated(Uri? uri) => + _i5.Future> fetchPaginated(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetchPaginated, [uri]), + Invocation.method(#fetchPaginated, [uri], {#language: language}), returnValue: _i5.Future>.value([]), ) as _i5.Future>); diff --git a/test/nutrition/nutritional_plan_screen_test.mocks.dart b/test/nutrition/nutritional_plan_screen_test.mocks.dart index 2fe3c4ac..0ff6d292 100644 --- a/test/nutrition/nutritional_plan_screen_test.mocks.dart +++ b/test/nutrition/nutritional_plan_screen_test.mocks.dart @@ -88,10 +88,14 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { ); @override - Map getDefaultHeaders({bool? includeAuth = false}) => + Map getDefaultHeaders({ + bool? includeAuth = false, + String? language, + }) => (super.noSuchMethod( Invocation.method(#getDefaultHeaders, [], { #includeAuth: includeAuth, + #language: language, }), returnValue: {}, ) @@ -122,17 +126,17 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { as Uri); @override - _i5.Future fetch(Uri? uri) => + _i5.Future fetch(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetch, [uri]), + Invocation.method(#fetch, [uri], {#language: language}), returnValue: _i5.Future.value(), ) as _i5.Future); @override - _i5.Future> fetchPaginated(Uri? uri) => + _i5.Future> fetchPaginated(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetchPaginated, [uri]), + Invocation.method(#fetchPaginated, [uri], {#language: language}), returnValue: _i5.Future>.value([]), ) as _i5.Future>); diff --git a/test/nutrition/nutritional_plans_screen_test.mocks.dart b/test/nutrition/nutritional_plans_screen_test.mocks.dart index c702d401..e42d7a17 100644 --- a/test/nutrition/nutritional_plans_screen_test.mocks.dart +++ b/test/nutrition/nutritional_plans_screen_test.mocks.dart @@ -323,10 +323,14 @@ class MockWgerBaseProvider extends _i1.Mock implements _i8.WgerBaseProvider { ); @override - Map getDefaultHeaders({bool? includeAuth = false}) => + Map getDefaultHeaders({ + bool? includeAuth = false, + String? language, + }) => (super.noSuchMethod( Invocation.method(#getDefaultHeaders, [], { #includeAuth: includeAuth, + #language: language, }), returnValue: {}, ) @@ -357,17 +361,17 @@ class MockWgerBaseProvider extends _i1.Mock implements _i8.WgerBaseProvider { as Uri); @override - _i5.Future fetch(Uri? uri) => + _i5.Future fetch(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetch, [uri]), + Invocation.method(#fetch, [uri], {#language: language}), returnValue: _i5.Future.value(), ) as _i5.Future); @override - _i5.Future> fetchPaginated(Uri? uri) => + _i5.Future> fetchPaginated(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetchPaginated, [uri]), + Invocation.method(#fetchPaginated, [uri], {#language: language}), returnValue: _i5.Future>.value([]), ) as _i5.Future>); diff --git a/test/routine/gym_mode/gym_mode_test.mocks.dart b/test/routine/gym_mode/gym_mode_test.mocks.dart index 6b3c882c..8259d2c0 100644 --- a/test/routine/gym_mode/gym_mode_test.mocks.dart +++ b/test/routine/gym_mode/gym_mode_test.mocks.dart @@ -167,10 +167,14 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { ); @override - Map getDefaultHeaders({bool? includeAuth = false}) => + Map getDefaultHeaders({ + bool? includeAuth = false, + String? language, + }) => (super.noSuchMethod( Invocation.method(#getDefaultHeaders, [], { #includeAuth: includeAuth, + #language: language, }), returnValue: {}, ) @@ -201,17 +205,17 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { as Uri); @override - _i20.Future fetch(Uri? uri) => + _i20.Future fetch(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetch, [uri]), + Invocation.method(#fetch, [uri], {#language: language}), returnValue: _i20.Future.value(), ) as _i20.Future); @override - _i20.Future> fetchPaginated(Uri? uri) => + _i20.Future> fetchPaginated(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetchPaginated, [uri]), + Invocation.method(#fetchPaginated, [uri], {#language: language}), returnValue: _i20.Future>.value([]), ) as _i20.Future>); diff --git a/test/routine/routine_screen_test.mocks.dart b/test/routine/routine_screen_test.mocks.dart index 99fe1643..8f05a817 100644 --- a/test/routine/routine_screen_test.mocks.dart +++ b/test/routine/routine_screen_test.mocks.dart @@ -78,10 +78,14 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { ); @override - Map getDefaultHeaders({bool? includeAuth = false}) => + Map getDefaultHeaders({ + bool? includeAuth = false, + String? language, + }) => (super.noSuchMethod( Invocation.method(#getDefaultHeaders, [], { #includeAuth: includeAuth, + #language: language, }), returnValue: {}, ) @@ -112,17 +116,17 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { as Uri); @override - _i5.Future fetch(Uri? uri) => + _i5.Future fetch(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetch, [uri]), + Invocation.method(#fetch, [uri], {#language: language}), returnValue: _i5.Future.value(), ) as _i5.Future); @override - _i5.Future> fetchPaginated(Uri? uri) => + _i5.Future> fetchPaginated(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetchPaginated, [uri]), + Invocation.method(#fetchPaginated, [uri], {#language: language}), returnValue: _i5.Future>.value([]), ) as _i5.Future>); diff --git a/test/routine/routines_provider_test.mocks.dart b/test/routine/routines_provider_test.mocks.dart index 06326506..ae751468 100644 --- a/test/routine/routines_provider_test.mocks.dart +++ b/test/routine/routines_provider_test.mocks.dart @@ -117,10 +117,14 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { ); @override - Map getDefaultHeaders({bool? includeAuth = false}) => + Map getDefaultHeaders({ + bool? includeAuth = false, + String? language, + }) => (super.noSuchMethod( Invocation.method(#getDefaultHeaders, [], { #includeAuth: includeAuth, + #language: language, }), returnValue: {}, ) @@ -151,17 +155,17 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { as Uri); @override - _i11.Future fetch(Uri? uri) => + _i11.Future fetch(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetch, [uri]), + Invocation.method(#fetch, [uri], {#language: language}), returnValue: _i11.Future.value(), ) as _i11.Future); @override - _i11.Future> fetchPaginated(Uri? uri) => + _i11.Future> fetchPaginated(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetchPaginated, [uri]), + Invocation.method(#fetchPaginated, [uri], {#language: language}), returnValue: _i11.Future>.value([]), ) as _i11.Future>); diff --git a/test/routine/routines_screen_test.mocks.dart b/test/routine/routines_screen_test.mocks.dart index 2607f048..1dafb2ca 100644 --- a/test/routine/routines_screen_test.mocks.dart +++ b/test/routine/routines_screen_test.mocks.dart @@ -78,10 +78,14 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { ); @override - Map getDefaultHeaders({bool? includeAuth = false}) => + Map getDefaultHeaders({ + bool? includeAuth = false, + String? language, + }) => (super.noSuchMethod( Invocation.method(#getDefaultHeaders, [], { #includeAuth: includeAuth, + #language: language, }), returnValue: {}, ) @@ -112,17 +116,17 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { as Uri); @override - _i5.Future fetch(Uri? uri) => + _i5.Future fetch(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetch, [uri]), + Invocation.method(#fetch, [uri], {#language: language}), returnValue: _i5.Future.value(), ) as _i5.Future); @override - _i5.Future> fetchPaginated(Uri? uri) => + _i5.Future> fetchPaginated(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetchPaginated, [uri]), + Invocation.method(#fetchPaginated, [uri], {#language: language}), returnValue: _i5.Future>.value([]), ) as _i5.Future>); diff --git a/test/trophies/provider/trophies_provider_test.mocks.dart b/test/trophies/provider/trophies_provider_test.mocks.dart index 9830acb4..79887735 100644 --- a/test/trophies/provider/trophies_provider_test.mocks.dart +++ b/test/trophies/provider/trophies_provider_test.mocks.dart @@ -78,10 +78,14 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { ); @override - Map getDefaultHeaders({bool? includeAuth = false}) => + Map getDefaultHeaders({ + bool? includeAuth = false, + String? language, + }) => (super.noSuchMethod( Invocation.method(#getDefaultHeaders, [], { #includeAuth: includeAuth, + #language: language, }), returnValue: {}, ) @@ -112,17 +116,17 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { as Uri); @override - _i5.Future fetch(Uri? uri) => + _i5.Future fetch(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetch, [uri]), + Invocation.method(#fetch, [uri], {#language: language}), returnValue: _i5.Future.value(), ) as _i5.Future); @override - _i5.Future> fetchPaginated(Uri? uri) => + _i5.Future> fetchPaginated(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetchPaginated, [uri]), + Invocation.method(#fetchPaginated, [uri], {#language: language}), returnValue: _i5.Future>.value([]), ) as _i5.Future>); diff --git a/test/trophies/widgets/dashboard_trophies_widget_test.dart b/test/trophies/widgets/dashboard_trophies_widget_test.dart index 9d7ae799..bf4209b4 100644 --- a/test/trophies/widgets/dashboard_trophies_widget_test.dart +++ b/test/trophies/widgets/dashboard_trophies_widget_test.dart @@ -34,7 +34,10 @@ void main() { // Arrange final mockRepository = MockTrophyRepository(); when( - mockRepository.fetchUserTrophies(filterQuery: anyNamed('filterQuery')), + mockRepository.fetchUserTrophies( + filterQuery: anyNamed('filterQuery'), + language: anyNamed('language'), + ), ).thenAnswer((_) async => getUserTrophies()); // Act diff --git a/test/trophies/widgets/dashboard_trophies_widget_test.mocks.dart b/test/trophies/widgets/dashboard_trophies_widget_test.mocks.dart index 47c030af..41544f94 100644 --- a/test/trophies/widgets/dashboard_trophies_widget_test.mocks.dart +++ b/test/trophies/widgets/dashboard_trophies_widget_test.mocks.dart @@ -86,9 +86,9 @@ class MockTrophyRepository extends _i1.Mock implements _i3.TrophyRepository { as String); @override - _i5.Future> fetchTrophies() => + _i5.Future> fetchTrophies({String? language}) => (super.noSuchMethod( - Invocation.method(#fetchTrophies, []), + Invocation.method(#fetchTrophies, [], {#language: language}), returnValue: _i5.Future>.value(<_i6.Trophy>[]), ) as _i5.Future>); @@ -96,10 +96,12 @@ class MockTrophyRepository extends _i1.Mock implements _i3.TrophyRepository { @override _i5.Future> fetchUserTrophies({ Map? filterQuery, + String? language, }) => (super.noSuchMethod( Invocation.method(#fetchUserTrophies, [], { #filterQuery: filterQuery, + #language: language, }), returnValue: _i5.Future>.value( <_i7.UserTrophy>[], @@ -110,10 +112,12 @@ class MockTrophyRepository extends _i1.Mock implements _i3.TrophyRepository { @override _i5.Future> fetchProgression({ Map? filterQuery, + String? language, }) => (super.noSuchMethod( Invocation.method(#fetchProgression, [], { #filterQuery: filterQuery, + #language: language, }), returnValue: _i5.Future>.value( <_i8.UserTrophyProgression>[], diff --git a/test/trophies/widgets/trophies_overview_test.dart b/test/trophies/widgets/trophies_overview_test.dart index 7874f991..2c6b71f5 100644 --- a/test/trophies/widgets/trophies_overview_test.dart +++ b/test/trophies/widgets/trophies_overview_test.dart @@ -34,7 +34,10 @@ void main() { // Arrange final mockRepository = MockTrophyRepository(); when( - mockRepository.fetchProgression(filterQuery: anyNamed('filterQuery')), + mockRepository.fetchProgression( + filterQuery: anyNamed('filterQuery'), + language: anyNamed('language'), + ), ).thenAnswer((_) async => getUserTrophyProgression()); // Act diff --git a/test/trophies/widgets/trophies_overview_test.mocks.dart b/test/trophies/widgets/trophies_overview_test.mocks.dart index 039b622a..dc837fd8 100644 --- a/test/trophies/widgets/trophies_overview_test.mocks.dart +++ b/test/trophies/widgets/trophies_overview_test.mocks.dart @@ -86,9 +86,9 @@ class MockTrophyRepository extends _i1.Mock implements _i3.TrophyRepository { as String); @override - _i5.Future> fetchTrophies() => + _i5.Future> fetchTrophies({String? language}) => (super.noSuchMethod( - Invocation.method(#fetchTrophies, []), + Invocation.method(#fetchTrophies, [], {#language: language}), returnValue: _i5.Future>.value(<_i6.Trophy>[]), ) as _i5.Future>); @@ -96,10 +96,12 @@ class MockTrophyRepository extends _i1.Mock implements _i3.TrophyRepository { @override _i5.Future> fetchUserTrophies({ Map? filterQuery, + String? language, }) => (super.noSuchMethod( Invocation.method(#fetchUserTrophies, [], { #filterQuery: filterQuery, + #language: language, }), returnValue: _i5.Future>.value( <_i7.UserTrophy>[], @@ -110,10 +112,12 @@ class MockTrophyRepository extends _i1.Mock implements _i3.TrophyRepository { @override _i5.Future> fetchProgression({ Map? filterQuery, + String? language, }) => (super.noSuchMethod( Invocation.method(#fetchProgression, [], { #filterQuery: filterQuery, + #language: language, }), returnValue: _i5.Future>.value( <_i8.UserTrophyProgression>[], diff --git a/test/user/provider_test.mocks.dart b/test/user/provider_test.mocks.dart index b8fce543..6ff9bc85 100644 --- a/test/user/provider_test.mocks.dart +++ b/test/user/provider_test.mocks.dart @@ -1,21 +1,3 @@ -/* - * This file is part of wger Workout Manager . - * Copyright (c) 2025 wger Team - * - * wger Workout Manager is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - // Mocks generated by Mockito 5.4.6 from annotations // in wger/test/user/provider_test.dart. // Do not manually edit this file. @@ -96,10 +78,14 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { ); @override - Map getDefaultHeaders({bool? includeAuth = false}) => + Map getDefaultHeaders({ + bool? includeAuth = false, + String? language, + }) => (super.noSuchMethod( Invocation.method(#getDefaultHeaders, [], { #includeAuth: includeAuth, + #language: language, }), returnValue: {}, ) @@ -130,17 +116,17 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { as Uri); @override - _i5.Future fetch(Uri? uri) => + _i5.Future fetch(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetch, [uri]), + Invocation.method(#fetch, [uri], {#language: language}), returnValue: _i5.Future.value(), ) as _i5.Future); @override - _i5.Future> fetchPaginated(Uri? uri) => + _i5.Future> fetchPaginated(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetchPaginated, [uri]), + Invocation.method(#fetchPaginated, [uri], {#language: language}), returnValue: _i5.Future>.value([]), ) as _i5.Future>); diff --git a/test/weight/weight_provider_test.mocks.dart b/test/weight/weight_provider_test.mocks.dart index 4cd18bb5..bf00ffb1 100644 --- a/test/weight/weight_provider_test.mocks.dart +++ b/test/weight/weight_provider_test.mocks.dart @@ -78,10 +78,14 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { ); @override - Map getDefaultHeaders({bool? includeAuth = false}) => + Map getDefaultHeaders({ + bool? includeAuth = false, + String? language, + }) => (super.noSuchMethod( Invocation.method(#getDefaultHeaders, [], { #includeAuth: includeAuth, + #language: language, }), returnValue: {}, ) @@ -112,17 +116,17 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider { as Uri); @override - _i5.Future fetch(Uri? uri) => + _i5.Future fetch(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetch, [uri]), + Invocation.method(#fetch, [uri], {#language: language}), returnValue: _i5.Future.value(), ) as _i5.Future); @override - _i5.Future> fetchPaginated(Uri? uri) => + _i5.Future> fetchPaginated(Uri? uri, {String? language}) => (super.noSuchMethod( - Invocation.method(#fetchPaginated, [uri]), + Invocation.method(#fetchPaginated, [uri], {#language: language}), returnValue: _i5.Future>.value([]), ) as _i5.Future>);