initInjector function

Future<void> initInjector(
  1. Talker talker
)

Implementation

Future<void> initInjector(Talker talker) async {
  final Dio dio = buildDioClient(talker);
  const FlutterSecureStorage secureStorage = FlutterSecureStorage();
  final SharedPreferences sharedPreferences =
      await SharedPreferences.getInstance();

  getIt
    ..registerLazySingleton<Talker>(() => talker)
    ..registerLazySingleton<FlutterSecureStorage>(
      () => secureStorage,
    )
    ..registerLazySingleton<SharedPreferences>(
      () => sharedPreferences,
    )
    ..registerLazySingleton<IAnalyticsService>(
      FirebaseAnalyticsService.new,
    )
    ..registerLazySingleton<AuthModuleRestClient>(
      () => AuthModuleRestClient(
        dio,
        baseUrl: FlavorConfig.config.authUrl,
      ),
    )
    ..registerLazySingleton<CustomersModuleRestClient>(
      () => CustomersModuleRestClient(
        dio,
        baseUrl: FlavorConfig.config.customersUrl,
      ),
    )
    ..registerLazySingleton<VendorsModuleRestClient>(
      () => VendorsModuleRestClient(
        dio,
        baseUrl: FlavorConfig.config.vendorsUrl,
      ),
    )
    ..registerLazySingleton<ZincSearchRestClient>(
      () => ZincSearchRestClient(
        dio,
        baseUrl: FlavorConfig.config.zincSearchUrl,
      ),
    )
    ..registerLazySingleton<AuthenticationRepository>(
      () => AuthenticationRepository(
        tokenLocalDataSource: getIt.get<ITokenLocalDataSource>(),
        loginRemoteDataSource: getIt.get<ILoginRemoteDataSource>(),
      ),
    )
    ..registerLazySingleton<LogOutUseCase>(
      () => LogOutUseCase(
        authenticationRepository: getIt.get<AuthenticationRepository>(),
      ),
    )
    ..registerLazySingleton<AuthenticationBloc>(
      () => AuthenticationBloc(
        authenticationRepository: getIt.get<AuthenticationRepository>(),
        getUserUseCase: getIt.get<GetUserUseCase>(),
        logOutUseCase: getIt.get<LogOutUseCase>(),
      ),
    )
    ..registerLazySingleton<AppVersionBloc>(
      () => AppVersionBloc(
        getAppVersionUseCase: getIt.get<GetAppVersionUseCase>(),
      ),
    )
    ..registerLazySingleton<AppRouter>(
      AppRouter.new,
    )
    ..registerLazySingleton<ILocalizationLocalDataSource>(
      () => LocalizationLocalDataSourceImpl(
        dataSource: getIt.get<SharedPreferences>(),
      ),
    )
    ..registerLazySingleton<ILocalizationRepository>(
      () => LocalizationRepositoryImpl(
        dataSource: getIt.get<ILocalizationLocalDataSource>(),
      ),
    )
    ..registerLazySingleton<GetCurrentLocaleUseCase>(
      () => GetCurrentLocaleUseCase(
        localizationRepository: getIt.get<ILocalizationRepository>(),
      ),
    )
    ..registerLazySingleton<SetCurrentLocaleUseCase>(
      () => SetCurrentLocaleUseCase(
        localizationRepository: getIt.get<ILocalizationRepository>(),
      ),
    )
    ..registerLazySingleton<LanguageBloc>(
      () => LanguageBloc(
        getCurrentLocaleUseCase: getIt.get<GetCurrentLocaleUseCase>(),
        setCurrentLocaleUseCase: getIt.get<SetCurrentLocaleUseCase>(),
      ),
    )
    ..registerLazySingleton<IFirstRunLocalDataSource>(
      () => FirstRunLocalDataSourceImpl(
        dataSource: getIt.get<SharedPreferences>(),
        secureDataSource: getIt.get<FlutterSecureStorage>(),
      ),
    )
    ..registerLazySingleton<InternetConnectionBloc>(
      InternetConnectionBloc.new,
    )
    ..registerLazySingleton<IFirstRunRepository>(
      () => FirstRunRepositoryImpl(
        firstRunLocalDataSource: getIt.get<IFirstRunLocalDataSource>(),
        appVersionRemoteDataSource: getIt.get<IAppVersionsRemoteDataSource>(),
      ),
    )
    ..registerLazySingleton<HandleFirstRunUseCase>(
      () => HandleFirstRunUseCase(
        firstRunRepository: getIt.get<IFirstRunRepository>(),
      ),
    )
    ..registerLazySingleton<IAppVersionsRemoteDataSource>(
      () => AppVersionsRemoteDataSourceImpl(
        vendorsModuleRestClient: getIt.get<VendorsModuleRestClient>(),
      ),
    )
    ..registerLazySingleton<IAppVersionsRepository>(
      () => AppVersionsRepositoryImpl(
        remoteDataSource: getIt.get<IAppVersionsRemoteDataSource>(),
      ),
    )
    ..registerLazySingleton<GetAppVersionUseCase>(
      () => GetAppVersionUseCase(
        repository: getIt.get<IAppVersionsRepository>(),
      ),
    )
    ..registerLazySingleton<ILoginRemoteDataSource>(
      () => LoginRemoteDataSourceImpl(
        authModuleRestClient: getIt.get<AuthModuleRestClient>(),
        customersModuleRestClient: getIt.get<CustomersModuleRestClient>(),
      ),
    )
    ..registerLazySingleton<ITokenLocalDataSource>(
      () => TokenLocalDataSourceImpl(
        dataSource: getIt.get<FlutterSecureStorage>(),
      ),
    )
    ..registerLazySingleton<GenerateCodeUseCase>(
      () => GenerateCodeUseCase(
        authenticationRepository: getIt.get<AuthenticationRepository>(),
      ),
    )
    ..registerLazySingleton<CheckCodeUseCase>(
      () => CheckCodeUseCase(
        authenticationRepository: getIt.get<AuthenticationRepository>(),
      ),
    )
    ..registerLazySingleton<LoginByPasswordUseCase>(
      () => LoginByPasswordUseCase(
        authenticationRepository: getIt.get<AuthenticationRepository>(),
      ),
    )
    ..registerLazySingleton<IUserRemoteDataSource>(
      () => UserRemoteDataSourceImpl(
        customersModuleRestClient: getIt.get<CustomersModuleRestClient>(),
      ),
    )
    ..registerLazySingleton<IUserRepository>(
      () => UserRepositoryImpl(
        dataSource: getIt.get<IUserRemoteDataSource>(),
      ),
    )
    ..registerLazySingleton<GetUserUseCase>(
      () => GetUserUseCase(
        userRepository: getIt.get<IUserRepository>(),
      ),
    )
    ..registerFactory<LoginBloc>(
      () => LoginBloc(
        generateCodeUseCase: getIt.get<GenerateCodeUseCase>(),
        loginByPasswordUseCase: getIt.get<LoginByPasswordUseCase>(),
      ),
    )
    ..registerFactory<IOtpMapper>(OtpMapperImpl.new)
    ..registerFactory<OtpBloc>(
      () => OtpBloc(
        checkCodeUseCase: getIt.get<CheckCodeUseCase>(),
        checkResetPasswordCodeUseCase:
            getIt.get<CheckResetPasswordCodeUseCase>(),
        checkSignUpCodeUseCase: getIt.get<CheckSignUpCodeUseCase>(),
        generateCodeUseCase: getIt.get<GenerateCodeUseCase>(),
        generateSignUpCodeUseCase: getIt.get<GenerateSignUpCodeUseCase>(),
        generateResetPasswordCodeUseCase:
            getIt.get<GenerateResetPasswordCodeUseCase>(),
        otpMapper: getIt.get<IOtpMapper>(),
      ),
    )
    ..registerLazySingleton<IBannersRemoteDataSource>(
      () => BannersRemoteDataSourceImpl(
        vendorsModuleRestClient: getIt.get<VendorsModuleRestClient>(),
      ),
    )
    ..registerLazySingleton<IBannersRepository>(
      () => BannersRepositoryImpl(
        dataSource: getIt.get<IBannersRemoteDataSource>(),
      ),
    )
    ..registerLazySingleton<GetBannersUseCase>(
      () => GetBannersUseCase(
        bannersRepository: getIt.get<IBannersRepository>(),
      ),
    )
    ..registerLazySingleton<GetPromotionsUseCase>(
      () => GetPromotionsUseCase(
        searchRepository: getIt.get<ISearchRepository>(),
      ),
    )
    ..registerFactory<HomeBannersBloc>(
      () => HomeBannersBloc(
        getBannersUseCase: getIt.get<GetBannersUseCase>(),
      ),
    )
    ..registerFactory<HomeVendorsBloc>(
      () => HomeVendorsBloc(
        getVendorsUseCase: getIt.get<GetVendorsUseCase>(),
      ),
    )
    ..registerFactory<PromotionsBloc>(
      () => PromotionsBloc(
        getPromotionsUseCase: getIt.get<GetPromotionsUseCase>(),
      ),
    )
    ..registerLazySingleton<IClientsRemoteDataSource>(
      () => ClientsRemoteDataSourceImpl(
        customersModuleRestClient: getIt.get<CustomersModuleRestClient>(),
      ),
    )
    ..registerLazySingleton<IClientsRepository>(
      () => ClientsRepositoryImpl(
        clientsRemoteDataSource: getIt.get<IClientsRemoteDataSource>(),
      ),
    )
    ..registerLazySingleton<GetClientsUseCase>(
      () => GetClientsUseCase(
        clientsRepository: getIt.get<IClientsRepository>(),
        authenticationRepository: getIt.get<AuthenticationRepository>(),
      ),
    )
    ..registerLazySingleton<GetClientTokenUseCase>(
      () => GetClientTokenUseCase(
        authenticationRepository: getIt.get<AuthenticationRepository>(),
      ),
    )
    ..registerLazySingleton<SetSalesRepTokenUseCase>(
      () => SetSalesRepTokenUseCase(
        authenticationRepository: getIt.get<AuthenticationRepository>(),
      ),
    )
    ..registerFactory<ClientsBloc>(
      () => ClientsBloc(
        getClientsUseCase: getIt.get<GetClientsUseCase>(),
        getClientTokenUseCase: getIt.get<GetClientTokenUseCase>(),
        setSalesRepTokenUseCase: getIt.get<SetSalesRepTokenUseCase>(),
      ),
    )
    ..registerLazySingleton<ISearchRepository>(
      () => SearchRepositoryImpl(
        searchDataSource: getIt.get<ISearchRemoteDataSource>(),
      ),
    )
    ..registerLazySingleton<GetProductsSearchResultUseCase>(
      () => GetProductsSearchResultUseCase(
        searchRepository: getIt.get<ISearchRepository>(),
      ),
    )
    ..registerFactory<SearchBloc>(
      () => SearchBloc(
        getProductsSearchResultUseCase:
            getIt.get<GetProductsSearchResultUseCase>(),
      ),
    )
    ..registerLazySingleton<ICatalogRemoteDataSource>(
      () => CatalogRemoteDataSourceImpl(
        catalogModuleRestClient: getIt.get<CatalogModuleRestClient>(),
      ),
    )
    ..registerLazySingleton<ICatalogRepository>(
      () => CatalogRepositoryImpl(
        dataSource: getIt.get<ICatalogRemoteDataSource>(),
      ),
    )
    ..registerLazySingleton<GetCategoriesUseCase>(
      () => GetCategoriesUseCase(
        catalogRepository: getIt.get<ICatalogRepository>(),
      ),
    )
    ..registerFactory<CatalogBannersBloc>(
      CatalogBannersBloc.new,
    )
    ..registerFactory<CatalogCategoriesBloc>(
      () => CatalogCategoriesBloc(
        getCategoriesUseCase: getIt.get<GetCategoriesUseCase>(),
      ),
    )
    ..registerLazySingleton<EditEmailUseCase>(
      () => EditEmailUseCase(
        userRepository: getIt.get<IUserRepository>(),
      ),
    )
    ..registerFactory<RequisitesBloc>(
      () => RequisitesBloc(
        editEmailUseCase: getIt.get<EditEmailUseCase>(),
      ),
    )
    ..registerLazySingleton<ISignUpRemoteDataSource>(
      () => SignUpRemoteDataSourceImpl(
        authModuleRestClient: getIt.get<AuthModuleRestClient>(),
        customersModuleRestClient: getIt.get<CustomersModuleRestClient>(),
      ),
    )
    ..registerLazySingleton<ISignUpRepository>(
      () => SignUpRepositoryImpl(
        dataSource: getIt.get<ISignUpRemoteDataSource>(),
      ),
    )
    ..registerLazySingleton<GenerateSignUpCodeUseCase>(
      () => GenerateSignUpCodeUseCase(
        signUpRepository: getIt.get<ISignUpRepository>(),
      ),
    )
    ..registerLazySingleton<CheckSignUpCodeUseCase>(
      () => CheckSignUpCodeUseCase(
        signUpRepository: getIt.get<ISignUpRepository>(),
      ),
    )
    ..registerLazySingleton<IResetPasswordRemoteDataSource>(
      () => ResetPasswordRemoteDataSourceImpl(
        restClient: getIt.get<AuthModuleRestClient>(),
      ),
    )
    ..registerLazySingleton<IResetPasswordRepository>(
      () => ResetPasswordRepositoryImpl(
        dataSource: getIt.get<IResetPasswordRemoteDataSource>(),
      ),
    )
    ..registerLazySingleton<GenerateResetPasswordCodeUseCase>(
      () => GenerateResetPasswordCodeUseCase(
        resetPasswordRepository: getIt.get<IResetPasswordRepository>(),
      ),
    )
    ..registerLazySingleton<CheckResetPasswordCodeUseCase>(
      () => CheckResetPasswordCodeUseCase(
        resetPasswordRepository: getIt.get<IResetPasswordRepository>(),
      ),
    )
    ..registerFactory<PhoneInputBloc>(
      () => PhoneInputBloc(
        generateSignUpCodeUseCase: getIt.get<GenerateSignUpCodeUseCase>(),
        generateResetPasswordCodeUseCase:
            getIt.get<GenerateResetPasswordCodeUseCase>(),
      ),
    )
    ..registerLazySingleton<SignUpUseCase>(
      () => SignUpUseCase(
        signUpRepository: getIt.get<ISignUpRepository>(),
      ),
    )
    ..registerLazySingleton<GetUserDataByTaxIdUseCase>(
      () => GetUserDataByTaxIdUseCase(
        signUpRepository: getIt.get<ISignUpRepository>(),
      ),
    )
    ..registerFactory<SignUpUserDetailsBloc>(
      () => SignUpUserDetailsBloc(
        getUserDataByTaxIdUseCase: getIt.get<GetUserDataByTaxIdUseCase>(),
      ),
    )
    ..registerFactory<SignUpPasswordCreationBloc>(
      () => SignUpPasswordCreationBloc(
        signUpUseCase: getIt.get<SignUpUseCase>(),
      ),
    )
    ..registerLazySingleton<IVendorsRemoteDataSource>(
      () => VendorsRemoteDataSourceImpl(
        vendorsModuleRestClient: getIt.get<VendorsModuleRestClient>(),
      ),
    )
    ..registerLazySingleton<IVendorsRepository>(
      () => VendorsRepositoryImpl(
        vendorsDataSource: getIt.get<IVendorsRemoteDataSource>(),
      ),
    )
    ..registerLazySingleton<GetVendorsUseCase>(
      () => GetVendorsUseCase(
        vendorsRepository: getIt.get<IVendorsRepository>(),
      ),
    )
    ..registerFactory<VendorsBloc>(
      () => VendorsBloc(
        getVendorsUseCase: getIt.get<GetVendorsUseCase>(),
      ),
    )
    ..registerFactory<GetCategoryProductsUseCase>(
      () => GetCategoryProductsUseCase(
        searchRepository: getIt.get<ISearchRepository>(),
      ),
    )
    ..registerFactory<GetCategoryUseCase>(
      () => GetCategoryUseCase(
        catalogRepository: getIt.get<ICatalogRepository>(),
      ),
    )
    ..registerFactory<CategoryBloc>(
      () => CategoryBloc(
        getCategoryUseCase: getIt.get<GetCategoryUseCase>(),
      ),
    )
    ..registerFactory<CategoryProductsBloc>(
      () => CategoryProductsBloc(
        getCategoryProductsUseCase: getIt.get<GetCategoryProductsUseCase>(),
      ),
    )
    ..registerFactory<GetVendorProductsUseCase>(
      () => GetVendorProductsUseCase(
        searchRepository: getIt.get<ISearchRepository>(),
      ),
    )
    ..registerFactory<VendorBloc>(
      () => VendorBloc(
        getVendorProductsUseCase: getIt.get<GetVendorProductsUseCase>(),
      ),
    )
    ..registerFactory<ISortingMapper>(
      SortingMapperImpl.new,
    )
    ..registerFactory<SortingBloc>(
      () => SortingBloc(
        sortingMapper: getIt.get<ISortingMapper>(),
      ),
    )
    ..registerFactory<IFiltersMapper>(
      FiltersMapperImpl.new,
    )
    ..registerFactory<FiltersBloc>(
      () => FiltersBloc(
        filtersMapper: getIt.get<IFiltersMapper>(),
      ),
    )
    ..registerLazySingleton<ResetPasswordUseCase>(
      () => ResetPasswordUseCase(
        resetPasswordRepository: getIt.get<IResetPasswordRepository>(),
      ),
    )
    ..registerFactory<PasswordResetConfirmationBloc>(
      () => PasswordResetConfirmationBloc(
        resetPasswordUseCase: getIt.get<ResetPasswordUseCase>(),
      ),
    )
    ..registerLazySingleton<ISearchRemoteDataSource>(
      () => SearchRemoteDataSourceImpl(
        restClient: getIt.get<ZincSearchRestClient>(),
      ),
    )
    ..registerLazySingleton<IProductRepository>(
      () => ProductRepositoryImpl(
        searchDataSource: getIt.get<ISearchRemoteDataSource>(),
      ),
    )
    ..registerLazySingleton<GetProductUseCase>(
      () => GetProductUseCase(
        productRepository: getIt.get<IProductRepository>(),
      ),
    )
    ..registerLazySingleton<DeleteFromCartUseCase>(
      () => DeleteFromCartUseCase(
        cartRepository: getIt.get<ICartRepository>(),
      ),
    )
    ..registerFactory<ProductBloc>(
      () => ProductBloc(
        getProductUseCase: getIt.get<GetProductUseCase>(),
        addToCartUseCase: getIt.get<AddToCartUseCase>(),
        deleteFromCartUseCase: getIt.get<DeleteFromCartUseCase>(),
      ),
    )
    ..registerFactory(
      BrandsBloc.new,
    )
    ..registerLazySingleton<CatalogModuleRestClient>(
      () => CatalogModuleRestClient(
        dio,
        baseUrl: FlavorConfig.config.catalogUrl,
      ),
    )
    ..registerLazySingleton<CartModuleRestClient>(
      () => CartModuleRestClient(
        dio,
        baseUrl: FlavorConfig.config.cartUrl,
      ),
    )
    ..registerLazySingleton<ICartRemoteDataSource>(
      () => CartRemoteDataSourceImpl(
        cartModuleRestClient: getIt.get<CartModuleRestClient>(),
      ),
    )
    ..registerLazySingleton<ICartRepository>(
      () => CartRepositoryImpl(
        dataSource: getIt.get<ICartRemoteDataSource>(),
      ),
    )
    ..registerLazySingleton<GetCartsUseCase>(
      () => GetCartsUseCase(
        cartRepository: getIt.get<ICartRepository>(),
      ),
    )
    ..registerFactory<AddToCartUseCase>(
      () => AddToCartUseCase(
        cartRepository: getIt.get<ICartRepository>(),
      ),
    )
    ..registerFactory<CreateOrderUseCase>(
      () => CreateOrderUseCase(
        cartRepository: getIt.get<ICartRepository>(),
      ),
    )
    ..registerFactory<CartBloc>(
      () => CartBloc(
        getCartsUseCase: getIt.get<GetCartsUseCase>(),
        createOrderUseCase: getIt.get<CreateOrderUseCase>(),
      ),
    )
    ..registerLazySingleton<EditCartUseCase>(
      () => EditCartUseCase(
        cartRepository: getIt.get<ICartRepository>(),
      ),
    )
    ..registerFactory<ProductInCartBloc>(
      () => ProductInCartBloc(
        deleteFromCartUseCase: getIt.get<DeleteFromCartUseCase>(),
        editCartUseCase: getIt.get<EditCartUseCase>(),
      ),
    )
    ..registerFactory<AddToCartBottomSheetBloc>(
      () => AddToCartBottomSheetBloc(
        addToCartUseCase: getIt.get<AddToCartUseCase>(),
      ),
    )
    ..registerFactory<RemoveFromCartBottomSheetBloc>(
      () => RemoveFromCartBottomSheetBloc(
        deleteFromCartUseCase: getIt.get<DeleteFromCartUseCase>(),
      ),
    )
    ..registerFactory<IDeliveryAddressesMapper>(
      DeliveryAddressesMapperImpl.new,
    )
    ..registerLazySingleton<IDeliveryAddressesRemoteDataSource>(
      () => DeliveryAddressesRemoteDataSourceImpl(
        customersModuleRestClient: getIt.get<CustomersModuleRestClient>(),
      ),
    )
    ..registerLazySingleton<IDeliveryAddressesRepository>(
      () => DeliveryAddressesRepositoryImpl(
        dataSource: getIt.get<IDeliveryAddressesRemoteDataSource>(),
      ),
    )
    ..registerLazySingleton<GetDeliveryAddressesUseCase>(
      () => GetDeliveryAddressesUseCase(
        addressesRepository: getIt.get<IDeliveryAddressesRepository>(),
      ),
    )
    ..registerFactory<DeliveryAddressSelectionBloc>(
      () => DeliveryAddressSelectionBloc(
        mapper: getIt.get<IDeliveryAddressesMapper>(),
        getAddressesUseCase: getIt.get<GetDeliveryAddressesUseCase>(),
      ),
    )
    ..registerLazySingleton<PlaceAutocompleteRestClient>(
      () => PlaceAutocompleteRestClient(
        dio,
        baseUrl: AppUrls.googleUrl,
      ),
    )
    ..registerLazySingleton<IPlaceAutocompleteRemoteDataSource>(
      () => PlaceAutocompleteRemoteDataSourceImpl(
        placeAutocompleteRestClient: getIt.get<PlaceAutocompleteRestClient>(),
      ),
    )
    ..registerLazySingleton<IPlaceAutocompleteRepository>(
      () => PlaceAutocompleteRepository(
        dataSource: getIt.get<IPlaceAutocompleteRemoteDataSource>(),
      ),
    )
    ..registerLazySingleton<GetPlacesUseCase>(
      () => GetPlacesUseCase(
        placeRepository: getIt.get<IPlaceAutocompleteRepository>(),
      ),
    )
    ..registerFactory<CreateDeliveryAddressUseCase>(
      () => CreateDeliveryAddressUseCase(
        addressesRepository: getIt.get<IDeliveryAddressesRepository>(),
      ),
    )
    ..registerFactory<DeliveryAddressBloc>(
      () => DeliveryAddressBloc(
        getPlacesUseCase: getIt.get<GetPlacesUseCase>(),
        createDeliveryAddressUseCase: getIt.get<CreateDeliveryAddressUseCase>(),
      ),
    )
    ..registerFactory<DeleteUserUseCase>(
      () => DeleteUserUseCase(
        userRepository: getIt.get<IUserRepository>(),
      ),
    )
    ..registerFactory<DeleteUserBottomSheetBloc>(
      () => DeleteUserBottomSheetBloc(
        deleteUserUseCase: getIt.get<DeleteUserUseCase>(),
        logOutUseCase: getIt.get<LogOutUseCase>(),
      ),
    )
    ..registerFactory<PriceRulesBloc>(
      PriceRulesBloc.new,
    )
    ..registerFactory<GetVendorCategoriesUseCase>(
      () => GetVendorCategoriesUseCase(
        catalogRepository: getIt.get<ICatalogRepository>(),
      ),
    )
    ..registerFactory<VendorCategoriesCubit>(
      () => VendorCategoriesCubit(
        getVendorCategoriesUseCase: getIt.get<GetVendorCategoriesUseCase>(),
      ),
    );
}