Files
paperless-mobile/lib/di_modules.dart
2022-12-12 01:29:34 +01:00

71 lines
2.2 KiB
Dart

import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:encrypted_shared_preferences/encrypted_shared_preferences.dart';
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
import 'package:http_interceptor/http_interceptor.dart';
import 'package:paperless_mobile/core/interceptor/authentication.interceptor.dart';
import 'package:paperless_mobile/core/interceptor/base_url_interceptor.dart';
import 'package:paperless_mobile/core/interceptor/language_header.interceptor.dart';
import 'package:paperless_mobile/core/interceptor/response_conversion.interceptor.dart';
import 'package:http/io_client.dart';
import 'package:injectable/injectable.dart';
import 'package:local_auth/local_auth.dart';
@module
abstract class RegisterModule {
@prod
@singleton
LocalAuthentication get localAuthentication => LocalAuthentication();
@prod
@singleton
EncryptedSharedPreferences get encryptedSharedPreferences =>
EncryptedSharedPreferences();
@prod
@test
@singleton
@Order(-1)
SecurityContext get securityContext => SecurityContext();
@prod
@singleton
Connectivity get connectivity => Connectivity();
///
/// Factory method creating an [HttpClient] with the currently registered [SecurityContext].
///
@prod
@Order(-1)
HttpClient getHttpClient(SecurityContext securityContext) =>
HttpClient(context: securityContext)
..connectionTimeout = const Duration(seconds: 10);
///
/// Factory method creating a [InterceptedClient] on top of the currently registered [HttpClient].
///
@prod
@Order(-1)
BaseClient getBaseClient(
AuthenticationInterceptor authInterceptor,
ResponseConversionInterceptor responseConversionInterceptor,
LanguageHeaderInterceptor languageHeaderInterceptor,
BaseUrlInterceptor baseUrlInterceptor,
HttpClient client,
) =>
InterceptedClient.build(
interceptors: [
baseUrlInterceptor,
authInterceptor,
responseConversionInterceptor,
languageHeaderInterceptor,
],
client: IOClient(client),
);
@prod
CacheManager getCacheManager(BaseClient client) => CacheManager(
Config('cacheKey', fileService: HttpFileService(httpClient: client)));
}