forked from eatvio/eatvio_app
48 lines
1.9 KiB
Dart
48 lines
1.9 KiB
Dart
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<ErrorReporter>(SentryErrorReporter.new);
|
|
_registerDio();
|
|
_registerPrefs();
|
|
}
|
|
|
|
/// Регистрация Dio HTTP клиента
|
|
static void _registerDio() {
|
|
sl.registerLazySingleton(
|
|
() => Dio(
|
|
BaseOptions(
|
|
baseUrl: sl<AppConfig>().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<Prefs>(() async => Prefs(await SharedPreferences.getInstance()));
|
|
}
|
|
}
|