import 'dart:convert'; import 'dart:io'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:contact/data/network/contact_api.dart'; import 'package:core/core.dart'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_appauth/flutter_appauth.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/http/http_client.dart'; import 'package:tmail_ui_user/features/email/data/local/html_analyzer.dart'; import 'package:tmail_ui_user/features/email/data/network/email_api.dart'; import 'package:tmail_ui_user/features/email/data/network/mdn_api.dart'; import 'package:tmail_ui_user/features/home/data/network/session_api.dart'; import 'package:tmail_ui_user/features/login/data/local/account_cache_manager.dart'; import 'package:tmail_ui_user/features/login/data/local/authentication_info_cache_manager.dart'; import 'package:tmail_ui_user/features/login/data/local/oidc_configuration_cache_manager.dart'; import 'package:tmail_ui_user/features/login/data/local/token_oidc_cache_manager.dart'; import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart'; import 'package:tmail_ui_user/features/login/data/network/dns_service.dart'; import 'package:tmail_ui_user/features/login/data/network/interceptors/authorization_interceptors.dart'; import 'package:tmail_ui_user/features/login/data/network/oidc_http_client.dart'; import 'package:tmail_ui_user/features/login/data/utils/library_platform/app_auth_plugin/app_auth_plugin.dart'; import 'package:tmail_ui_user/features/mailbox/data/local/mailbox_cache_manager.dart'; import 'package:tmail_ui_user/features/mailbox/data/local/state_cache_manager.dart'; import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_api.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/data/network/linagora_ecosystem_api.dart'; import 'package:tmail_ui_user/features/manage_account/data/network/forwarding_api.dart'; import 'package:tmail_ui_user/features/manage_account/data/network/identity_api.dart'; import 'package:tmail_ui_user/features/manage_account/data/network/rule_filter_api.dart'; import 'package:tmail_ui_user/features/manage_account/data/network/vacation_api.dart'; import 'package:tmail_ui_user/features/push_notification/data/keychain/keychain_sharing_manager.dart'; import 'package:tmail_ui_user/features/push_notification/data/network/fcm_api.dart'; import 'package:tmail_ui_user/features/push_notification/data/network/web_socket_api.dart'; import 'package:tmail_ui_user/features/quotas/data/network/quotas_api.dart'; import 'package:tmail_ui_user/features/server_settings/data/network/server_settings_api.dart'; import 'package:tmail_ui_user/features/thread/data/network/thread_api.dart'; import 'package:tmail_ui_user/main/exceptions/remote_exception_thrower.dart'; import 'package:tmail_ui_user/main/exceptions/send_email_exception_thrower.dart'; import 'package:tmail_ui_user/main/utils/ios_sharing_manager.dart'; import 'package:uuid/uuid.dart'; class NetworkBindings extends Bindings { @override void dependencies() { _bindingConnection(); _bindingBaseOption(); _bindingDio(); _bindingSharing(); _bindingInterceptors(); _bindingApi(); _bindingTransformer(); _bindingServices(); _bindingException(); } void _bindingBaseOption() { final headers = { HttpHeaders.acceptHeader: Constant.acceptHeaderDefault, HttpHeaders.contentTypeHeader: Constant.contentTypeHeaderDefault }; Get.put(BaseOptions(headers: headers)); } void _bindingDio() { Get.put(Dio(Get.find())); Get.put(DioClient(Get.find())); Get.put(const FlutterAppAuth()); Get.put(AppAuthWebPlugin()); Get.put(OIDCHttpClient(Get.find())); Get.put(AuthenticationClientBase()); } void _bindingSharing() { Get.put(IOSSharingManager( Get.find(), Get.find(), Get.find(), Get.find(), Get.find(), Get.find(), Get.find(), )); } void _bindingInterceptors() { Get.put(DynamicUrlInterceptors()); Get.put(AuthorizationInterceptors( Get.find(), Get.find(), Get.find(), Get.find(), Get.find(), )); Get.find().interceptors.add(Get.find()); Get.find().interceptors.add(Get.find()); if (kDebugMode) { Get.find().interceptors.add(LogInterceptor(requestBody: true)); } } void _bindingApi() { Get.put(HttpClient(Get.find())); Get.put(DownloadClient(Get.find(), Get.find())); Get.put(DownloadManager(Get.find(), Get.find())); Get.put(MailboxAPI(Get.find(), Get.find())); Get.put(SessionAPI(Get.find())); Get.put(ThreadAPI(Get.find())); Get.put(EmailAPI( Get.find(), Get.find(), Get.find(), Get.find(), )); Get.put(RuleFilterAPI(Get.find())); Get.put(VacationAPI(Get.find())); Get.put(ContactAPI(Get.find())); Get.put(IdentityAPI(Get.find())); Get.put(MdnAPI(Get.find())); Get.put(ForwardingAPI(Get.find())); Get.put(QuotasAPI(Get.find())); Get.put(FcmApi(Get.find())); Get.put(ServerSettingsAPI(Get.find())); Get.put(WebSocketApi(Get.find())); Get.put(LinagoraEcosystemApi(Get.find())); } void _bindingConnection() { Get.put(Connectivity()); } void _bindingException() { Get.put(RemoteExceptionThrower()); Get.put(SendEmailExceptionThrower()); } void _bindingTransformer() { Get.put(const HtmlEscape()); Get.put(HtmlTransform(Get.find(), Get.find())); Get.put(HtmlAnalyzer(Get.find())); } void _bindingServices() { Get.put(DNSService()); } }