import 'package:dio/dio.dart'; import 'package:eatvio_app/core/app_config.dart'; import 'package:eatvio_app/core/constants/app_constants.dart'; import 'package:eatvio_app/core/error_reporting/error_reporter.dart'; import 'package:eatvio_app/core/error_reporting/sentry_error_reporter.dart'; import 'package:eatvio_app/core/interceptors/phone_verify_error_interceptor.dart'; import 'package:eatvio_app/core/interceptors/token_interceptor.dart'; import 'package:eatvio_app/core/prefs.dart'; import 'package:get_it/get_it.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:sentry_dio/sentry_dio.dart'; /// Регистрация внешних зависимостей в системе внедрения зависимостей class ExternalRegistrations { static final sl = GetIt.instance; /// Регистрация всех внешних зависимостей static void registerAll() { sl.registerLazySingleton(SentryErrorReporter.new); _registerDio(); _registerPrefs(); } /// Регистрация Dio HTTP клиента static void _registerDio() { sl.registerLazySingleton( () => Dio( BaseOptions( baseUrl: sl().baseUrl, headers: {'accept': 'application/json', 'content-type': 'application/json'}, connectTimeout: AppConstants.pendingDelay, receiveTimeout: AppConstants.pendingDelay, sendTimeout: AppConstants.pendingDelay, ), )..interceptors.addAll([TokenInterceptor(), PhoneVerifyErrorInterceptor()]) ..addSentry( failedRequestStatusCodes: const [SentryStatusCode.defaultRange()], ), ); } /// Регистрация Prefs static void _registerPrefs() { sl.registerSingletonAsync(() async => Prefs(await SharedPreferences.getInstance())); } }