diff --git a/lib/api_base_rest/cache/cache.dart b/lib/api_base_rest/cache/cache.dart index 9f09edc8..862210e0 100644 --- a/lib/api_base_rest/cache/cache.dart +++ b/lib/api_base_rest/cache/cache.dart @@ -34,6 +34,7 @@ extension DataCachingX on Ref { AuthHeader? authHeader, }) async { final cacheManager = watch(restCacheManagerProvider(ttlDays)); + final dio = watch(authRestClientProvider(authHeader)); final cachedFile = await cacheManager.getFileFromCache(fullUrl); if (cachedFile != null) { @@ -43,12 +44,7 @@ extension DataCachingX on Ref { return data; } } - final response = await safeGetWatch( - fullUrl, - localizedMessage: localizedOfflineMessage, - onRetry: onRetry, - authHeader: authHeader, - ); + final response = await dio.safeGet(fullUrl, localizedMessage: localizedOfflineMessage, onRetry: onRetry); final json = parseJSON(response.data, fromJson); if (extraValidityCheck(json)) { await cacheManager.putFile( diff --git a/lib/api_base_rest/client/offline_error.dart b/lib/api_base_rest/client/offline_error.dart index f325faeb..61c1b506 100644 --- a/lib/api_base_rest/client/offline_error.dart +++ b/lib/api_base_rest/client/offline_error.dart @@ -1,10 +1,7 @@ import "package:dio/dio.dart"; import "package:flutter/widgets.dart"; -import "package:flutter_riverpod/flutter_riverpod.dart"; import "package:logger/logger.dart"; -import "dio_client.dart"; - class RestFrameworkOfflineException implements Exception { final String message; final String Function(BuildContext context) localizedMessage; @@ -20,27 +17,25 @@ class RestFrameworkOfflineException implements Exception { String toString() => "RestFrameworkOfflineException: $message"; } -extension DioSafeRequestsX on Ref { - Future> safeRequest( - Future> Function() request, { - required String Function(BuildContext context) localizedMessage, - VoidCallback? onRetry, - }) async { - try { - return await request(); - } on DioException catch (e) { - Logger().e(e); - throw RestFrameworkOfflineException(localizedMessage: localizedMessage, onRetry: onRetry); - } +Future> safeRequest( + Future> Function() request, { + required String Function(BuildContext context) localizedMessage, + VoidCallback? onRetry, +}) async { + try { + return await request(); + } on DioException catch (e) { + Logger().e(e); + throw RestFrameworkOfflineException(localizedMessage: localizedMessage, onRetry: onRetry); } +} - Future> safeGetWatch( +extension DioSafeRequestsX on Dio { + Future> safeGet( String url, { required String Function(BuildContext context) localizedMessage, VoidCallback? onRetry, - AuthHeader? authHeader, }) { - final dio = watch(authRestClientProvider(authHeader)); - return safeRequest(() => dio.get(url), localizedMessage: localizedMessage, onRetry: onRetry); + return safeRequest(() => get(url), localizedMessage: localizedMessage, onRetry: onRetry); } } diff --git a/lib/api_base_rest/translations/translate.dart b/lib/api_base_rest/translations/translate.dart index 062a322b..7d4efa6e 100644 --- a/lib/api_base_rest/translations/translate.dart +++ b/lib/api_base_rest/translations/translate.dart @@ -23,6 +23,9 @@ extension TranslateX on Ref { VoidCallback? onRetry, AuthHeader? authHeader, }) async { + final translator = watch(solvroTranslatorProvider); + final localeFuture = watch(preferredLanguageRepositoryProvider.future); + final data = await getAndCacheData( fullUrl, fromJson, @@ -33,8 +36,7 @@ extension TranslateX on Ref { authHeader: authHeader, ); - final translator = watch(solvroTranslatorProvider); - final locale = await watch(preferredLanguageRepositoryProvider.future) ?? SolvroLocale.pl; + final locale = await localeFuture ?? SolvroLocale.pl; try { return switch (data) {