import 'package:be_happy/data/repositories/app_settings_repository_impl.dart'; import 'package:be_happy/data/repositories/certificate_repository_impl.dart'; import 'package:be_happy/data/repositories/notification_repository_impl.dart'; import 'package:be_happy/data/repositories/payment_repository_impl.dart'; // ← новый import 'package:be_happy/data/repositories/scooter_repository_impl.dart'; import 'package:be_happy/data/repositories/zone_repository_impl.dart'; import 'package:be_happy/data/service/app_setting_service.dart'; import 'package:be_happy/data/service/device_info_service_impl.dart'; import 'package:be_happy/data/service/security_service_impl.dart'; import 'package:be_happy/domain/repositories/app_settings_repository.dart'; import 'package:be_happy/domain/repositories/certificate_repository.dart'; import 'package:be_happy/domain/repositories/notification_repository.dart'; import 'package:be_happy/domain/repositories/payment_repository.dart'; // ← новый import 'package:be_happy/domain/repositories/pin_repository.dart'; import 'package:be_happy/domain/repositories/profile_repository.dart'; import 'package:be_happy/domain/repositories/scooter_repository.dart'; import 'package:be_happy/domain/repositories/zone_repository.dart'; import 'package:be_happy/domain/service/security_service.dart'; import 'package:be_happy/domain/usecase/add_payment_card_usecase.dart'; // ← новый import 'package:be_happy/domain/usecase/get_certificates_usecase.dart'; import 'package:be_happy/domain/usecase/get_scooter_order_route_history_usecase.dart'; import 'package:be_happy/domain/usecase/is_pin_set_usecase.dart'; import 'package:be_happy/domain/usecase/purchase_certificate_usecase.dart'; import 'package:be_happy/domain/usecase/book_scooter_usecase.dart'; import 'package:be_happy/domain/usecase/cancel_notification_usecase.dart'; import 'package:be_happy/domain/usecase/create_pin_usecase.dart'; import 'package:be_happy/domain/usecase/get_address_by_point_usecase.dart'; import 'package:be_happy/domain/usecase/get_available_scooters_usecase.dart'; import 'package:be_happy/domain/usecase/get_available_subscriptions_usecase.dart'; import 'package:be_happy/domain/usecase/get_available_tariffs_usecase.dart'; import 'package:be_happy/domain/usecase/get_available_zones_usecase.dart'; import 'package:be_happy/domain/usecase/get_client_orders_usecase.dart'; import 'package:be_happy/domain/usecase/get_map_settings_usecase.dart'; import 'package:be_happy/domain/usecase/get_notifications_stream_usecase.dart'; import 'package:be_happy/domain/usecase/get_payment_cards_usecase.dart'; import 'package:be_happy/domain/usecase/get_pedestrian_routes_usecase.dart'; import 'package:be_happy/domain/usecase/get_profile_usecase.dart'; import 'package:be_happy/domain/usecase/get_scooter_usecase.dart'; import 'package:be_happy/domain/usecase/get_subscription_by_id_usecase.dart'; import 'package:be_happy/domain/usecase/get_subscription_by_id_usecase.dart'; import 'package:be_happy/domain/usecase/login_usecase.dart'; import 'package:be_happy/domain/usecase/logout_usecase.dart'; import 'package:be_happy/domain/usecase/pay_ride_usecase.dart'; import 'package:be_happy/domain/usecase/refresh_token_usecase.dart'; import 'package:be_happy/domain/usecase/save_map_settings_usecase.dart'; import 'package:be_happy/domain/usecase/update_profile_usecase.dart'; import 'package:be_happy/domain/usecase/upload_profile_photo_usecase.dart'; import 'package:be_happy/domain/usecase/verify_code_usecase.dart'; import 'package:be_happy/domain/usecase/upload_scooter_photos_usecase.dart'; import 'package:be_happy/domain/usecase/update_scooter_order_data_usecase.dart'; import 'package:be_happy/domain/usecase/pay_scooter_order_with_photos_usecase.dart'; import 'package:be_happy/domain/usecase/get_scooter_order_by_id_usecase.dart'; import 'package:be_happy/domain/usecase/finish_ride_usecase.dart'; import 'package:be_happy/domain/usecase/pause_ride_usecase.dart'; import 'package:be_happy/domain/usecase/resume_ride_usecase.dart'; import 'package:be_happy/domain/usecase/verify_pin_usecase.dart'; import 'package:be_happy/presentation/viewmodel/active_ride_bloc.dart'; import 'package:be_happy/presentation/viewmodel/add_card_bloc.dart'; // ← новый import 'package:be_happy/presentation/viewmodel/current_rides_bloc.dart'; import 'package:be_happy/presentation/viewmodel/map_settings_modal_bloc.dart'; import 'package:be_happy/presentation/viewmodel/payment_confirm_bloc.dart'; import 'package:be_happy/presentation/viewmodel/payment_method_sheet_bloc.dart'; import 'package:be_happy/presentation/viewmodel/payment_methods_bloc.dart'; import 'package:be_happy/presentation/viewmodel/pin_bloc.dart'; import 'package:be_happy/presentation/viewmodel/profile_bloc.dart'; import 'package:be_happy/presentation/viewmodel/scooter_detail_bloc.dart'; import 'package:be_happy/presentation/viewmodel/scooter_code_bloc.dart'; import 'package:be_happy/presentation/viewmodel/send_photo_bloc.dart'; import 'package:be_happy/presentation/viewmodel/splash_bloc.dart'; import 'package:be_happy/presentation/viewmodel/tariff_sheet_bloc.dart'; import 'package:be_happy/domain/usecase/cancel_ride_usecase.dart'; import 'package:be_happy/domain/usecase/start_ride_usecase.dart'; import 'package:be_happy/domain/usecase/check_user_usecase.dart'; import 'package:be_happy/presentation/viewmodel/reserved_ride_bloc.dart'; import 'package:dio/dio.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:get_it/get_it.dart'; import 'package:http/http.dart' as http; import 'package:shared_preferences/shared_preferences.dart'; import '../data/interceptor/auth_interceptor.dart'; import '../data/network/api_service.dart'; import '../data/network/geocoding_remote_datasource.dart'; import '../data/repositories/auth_repository_impl.dart'; import '../data/repositories/news_repository_impl.dart'; import '../data/repositories/pin_repository_impl.dart'; import '../data/repositories/profile_repository_impl.dart'; import '../data/repositories/promo_code_repository_impl.dart'; import '../data/service/news_api_service.dart'; import '../domain/repositories/auth_repository.dart'; import '../domain/repositories/news_repository.dart'; import '../domain/repositories/promo_code_repository.dart'; import '../domain/service/device_info_service.dart'; import '../domain/usecase/activate_subscription_usecase.dart'; import '../domain/usecase/apply_promo_code_usecase.dart'; import '../domain/usecase/get_client_subscriptions_usecase.dart'; import '../domain/usecase/get_news_by_id_usecase.dart'; import '../domain/usecase/get_notifications_usecase.dart'; import '../domain/usecase/get_scooter_by_title_usecase.dart'; import '../domain/usecase/get_scooter_order_history_usecase.dart'; import '../domain/usecase/remove_payment_card_usecase.dart'; import '../domain/usecase/set_main_payment_card_usecase.dart'; import '../presentation/viewmodel/auth_bloc.dart'; import '../presentation/viewmodel/edit_profile_bloc.dart'; import '../presentation/viewmodel/map_bloc.dart'; import '../presentation/viewmodel/news_bloc.dart'; import '../presentation/viewmodel/notifications_bloc.dart'; import '../presentation/viewmodel/order_history_bloc.dart'; import '../presentation/viewmodel/promo_code_bloc.dart'; import '../presentation/viewmodel/scooter_detail_modal_bloc.dart'; import '../presentation/viewmodel/subscription_list_bloc.dart'; import '../presentation/viewmodel/verify_code_bloc.dart'; final getIt = GetIt.instance; Future setupDependencies() async { final sharedPreferences = await SharedPreferences.getInstance(); final dio = Dio(); dio.interceptors.add(LogInterceptor(/*requestHeader: false, responseHeader:false, */responseBody: true, requestBody: true)); dio.interceptors.add(AuthInterceptor()); // HTTP getIt.registerSingleton(http.Client()); //SecureStorage getIt.registerSingleton(FlutterSecureStorage()); //SharedPrefs getIt.registerSingleton(sharedPreferences); // Service getIt.registerSingleton(SecurityServiceImpl(getIt())); getIt.registerLazySingleton(() => ApiService(getIt(), dio)); getIt.registerSingleton( GeocodingRemoteDataSource(), ); getIt.registerSingleton(DeviceInfoServiceImpl()); getIt.registerSingleton(AppSettingsService(getIt())); getIt.registerLazySingleton( () => NewsApiService(getIt()), ); // Repository getIt.registerSingleton( AuthRepositoryImpl(getIt(), getIt(), getIt()), ); getIt.registerSingleton(PinRepositoryImpl(getIt())); getIt.registerSingleton( UserProfileRepositoryImpl(getIt()), ); getIt.registerSingleton(ScooterRepositoryImpl(getIt())); getIt.registerSingleton(ZoneRepositoryImpl(getIt())); getIt.registerSingleton( AppSettingsRepositoryImpl(getIt()), ); getIt.registerSingleton( PaymentRepositoryImpl(getIt(), getIt()), ); getIt.registerSingleton( CertificateRepositoryImpl(getIt(), getIt()), ); getIt.registerLazySingleton( () => NewsRepositoryImpl(getIt()), ); getIt.registerSingleton( NotificationRepositoryImpl(getIt()), ); // Use Cases getIt.registerSingleton(LoginUseCase(getIt())); getIt.registerSingleton(LogoutUseCase(getIt(), getIt())); getIt.registerSingleton(VerifyCodeUseCase(getIt())); getIt.registerSingleton(RefreshTokenUseCase(getIt())); getIt.registerSingleton(CreatePinUseCase(getIt())); getIt.registerSingleton(VerifyPinUseCase(getIt())); getIt.registerSingleton(IsPinSetUsecase(getIt())); getIt.registerSingleton(GetProfileUseCase(getIt())); getIt.registerSingleton(UpdateProfileUseCase(getIt())); getIt.registerSingleton( UploadProfilePhotoUsecase(getIt()), ); getIt.registerSingleton( GetAvailableScootersUsecase(getIt()), ); getIt.registerSingleton( GetNewsByIdUsecase(getIt()), ); getIt.registerSingleton(GetScooterUsecase(getIt())); getIt.registerSingleton( GetAvailableTariffsUsecase(getIt()), ); getIt.registerSingleton( GetAddressByPointUsecase(getIt()), ); getIt.registerSingleton( GetPedestrianRoutesUsecase(getIt()), ); getIt.registerSingleton( GetScooterOrderRouteHistoryUsecase(getIt()), ); getIt.registerSingleton( GetAvailableZonesUsecase(getIt()), ); getIt.registerSingleton( GetMapSettingsUsecase(getIt()), ); getIt.registerSingleton( SaveMapSettingsUsecase(getIt()), ); getIt.registerSingleton( AddPaymentCardUsecase(getIt()), ); getIt.registerSingleton( GetPaymentCardsUsecase(getIt(), getIt()), ); getIt.registerSingleton( SetMainPaymentCardUsecase(getIt()), ); getIt.registerSingleton( RemovePaymentCardUsecase(getIt()), ); getIt.registerSingleton( GetCertificatesUsecase(getIt()), ); getIt.registerSingleton( PurchaseCertificateUsecase(getIt()), ); getIt.registerSingleton( GetClientOrdersUsecase(getIt()), ); getIt.registerSingleton(BookScooterUsecase(getIt())); getIt.registerSingleton(StartRideUsecase(getIt())); getIt.registerSingleton(CancelRideUsecase(getIt())); getIt.registerSingleton( UploadScooterPhotosUsecase(getIt()), ); getIt.registerSingleton( UpdateScooterOrderDataUsecase(getIt()), ); getIt.registerSingleton( PayScooterOrderWithPhotosUsecase(getIt()), ); getIt.registerSingleton( GetScooterOrderByIdUsecase(getIt()), ); getIt.registerSingleton(FinishRideUsecase(getIt())); getIt.registerSingleton(PauseRideUsecase(getIt())); getIt.registerSingleton(ResumeRideUsecase(getIt())); getIt.registerSingleton(PayRideUsecase(getIt())); getIt.registerSingleton( GetAvailableSubscriptionsUsecase(getIt()), ); getIt.registerSingleton( GetSubscriptionByIdUsecase(getIt()), ); getIt.registerSingleton( ActivateSubscriptionUsecase(getIt()), ); getIt.registerSingleton( GetClientSubscriptionsUsecase(getIt()), ); getIt.registerSingleton( GetScooterByTitleUsecase(getIt()), ); getIt.registerSingleton( GetNotificationsUsecase(getIt()), ); getIt.registerFactory( () => NotificationsBloc(getIt()), ); // Blocs getIt.registerLazySingleton(() => SplashBloc(getIt())); getIt.registerFactory(() => PhoneAuthBloc(getIt())); getIt.registerFactory(() => VerifyCodeBloc(getIt())); getIt.registerFactory(() => ProfileBloc(getIt(), getIt(), getIt())); getIt.registerFactory( () => EditProfileBloc(getIt(), getIt()), ); getIt.registerFactory( () => MapBloc( getIt(), getIt(), getIt(), getIt(), getIt(), getIt(), getIt(), getIt(), getIt(), ), ); getIt.registerFactory(() => ScooterDetailBloc(getIt())); getIt.registerFactory( () => MapSettingsModalBloc(getIt(), getIt()), ); getIt.registerFactory(() => AddCardBloc(getIt())); getIt.registerFactory( () => PaymentMethodSheetBloc(getIt()), ); getIt.registerFactory(() => CurrentRidesBloc(getIt())); getIt.registerFactory( () => ActiveRideBloc(getIt(), getIt(), getIt(), getIt(), getIt()), ); getIt.registerFactory( () => ReservedRideBloc(getIt(), getIt()), ); getIt.registerFactory(() => NewsBloc(getIt())); getIt.registerFactory(() => SendPhotoBloc(getIt(), getIt())); getIt.registerFactory( () => SubscriptionListBloc( getAvailableSubscriptionsUsecase: getIt(), getClientSubscriptionsUsecase: getIt(), ), ); // UseCase getIt.registerSingleton( GetScooterOrderHistoryUsecase(getIt()), ); getIt.registerSingleton( CheckUserUseCase(getIt()), ); getIt.registerSingleton( GetNotificationsStreamUseCase(getIt()), ); getIt.registerSingleton( CancelNotificationUseCase(getIt()), ); // Bloc getIt.registerFactory( () => OrderHistoryBloc(getIt()), ); getIt.registerFactory( () => ScooterCodeBloc(getScooterByTitleUsecase: getIt()), ); // Repository getIt.registerSingleton( PromoCodeRepositoryImpl(getIt()), ); // UseCase getIt.registerSingleton( ApplyPromoCodeUsecase(getIt()), ); // Bloc (factory, т.к. экран создаёт новый экземпляр) getIt.registerFactory( () => PromoCodeBloc(getIt()), ); }