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>(),
),
);
}