forked from eatvio/eatvio_app
178 lines
14 KiB
Dart
178 lines
14 KiB
Dart
import 'package:dio/dio.dart';
|
|
import 'package:eatvio_app/core/const.dart';
|
|
import 'package:eatvio_app/core/interceptors/token_interceptor.dart';
|
|
import 'package:eatvio_app/core/websockets/ws_manager.dart';
|
|
import 'package:eatvio_app/core/websockets/ws_service.dart';
|
|
import 'package:eatvio_app/features/auth/presentation/bloc/auth_cubit.dart';
|
|
import 'package:eatvio_app/features/auth/repositories/auth_repository.dart';
|
|
import 'package:eatvio_app/features/auth/services/auth_service.dart';
|
|
import 'package:eatvio_app/features/complaining/presentation/cubit/complaining_cubit.dart';
|
|
import 'package:eatvio_app/features/complaining/repositories/complaining_repository.dart';
|
|
import 'package:eatvio_app/features/complaining/services/complaining_service.dart';
|
|
import 'package:eatvio_app/features/create_diet/presentation/cubit/create_diet_cubit.dart';
|
|
import 'package:eatvio_app/features/create_diet/repositories/create_diet_repository.dart';
|
|
import 'package:eatvio_app/features/create_diet/services/create_diet_service.dart';
|
|
import 'package:eatvio_app/features/create_plan/presentation/cubit/create_plan_cubit.dart';
|
|
import 'package:eatvio_app/features/diets/repositories/diet_repository.dart';
|
|
import 'package:eatvio_app/features/diets/services/diet_service.dart';
|
|
import 'package:eatvio_app/features/blog_post_create/bloc/blog_post_create_cubit/blog_post_create_cubit.dart';
|
|
import 'package:eatvio_app/features/blog_post_create/repositories/blog_post_repository.dart';
|
|
import 'package:eatvio_app/features/blog_post_create/services/blog_post_service.dart';
|
|
import 'package:eatvio_app/features/bottom_navigation_bar/presentation/bloc/new_messages_cubit/new_messages_cubit.dart';
|
|
import 'package:eatvio_app/features/bottom_navigation_bar/presentation/bloc/notifications_cubit/notifications_cubit.dart';
|
|
import 'package:eatvio_app/features/bottom_navigation_bar/presentation/bloc/profile_avatar_cubit/profile_avatar_cubit.dart';
|
|
import 'package:eatvio_app/features/calendar/presentation/bloc/calendar_cubit.dart';
|
|
import 'package:eatvio_app/features/calendar/repositories/calendar_repository.dart';
|
|
import 'package:eatvio_app/features/calendar/services/calendar_service.dart';
|
|
import 'package:eatvio_app/features/chat/presentation/bloc/chat_room_cubit/chat_room_cubit.dart';
|
|
import 'package:eatvio_app/features/chat/presentation/bloc/chats_cubit/chats_cubit.dart';
|
|
import 'package:eatvio_app/features/chat/repositories/chat_repository.dart';
|
|
import 'package:eatvio_app/features/chat/services/chat_service.dart';
|
|
import 'package:eatvio_app/features/consultant/become_consultant/presentation/bloc/register_consultant_cubit/register_consultant_cubit.dart';
|
|
import 'package:eatvio_app/features/consultant/become_consultant/repositories/consultant_repository.dart';
|
|
import 'package:eatvio_app/features/consultant/become_consultant/services/consultant_service.dart';
|
|
import 'package:eatvio_app/features/diary/presentation/bloc/diary_cubit.dart';
|
|
import 'package:eatvio_app/features/diary/repositories/diary_repository.dart';
|
|
import 'package:eatvio_app/features/diary/services/diary_service.dart';
|
|
import 'package:eatvio_app/features/diets/presentation/cubit/about_diet_cubit.dart';
|
|
import 'package:eatvio_app/features/feed/presentation/bloc/comments_cubit/comments_cubit.dart';
|
|
import 'package:eatvio_app/features/feed/presentation/bloc/consultants_cubit/consultants_cubit.dart';
|
|
import 'package:eatvio_app/features/feed/presentation/bloc/diets_cubit/diets_cubit.dart';
|
|
import 'package:eatvio_app/features/feed/presentation/bloc/feed_cubit/feed_cubit.dart';
|
|
import 'package:eatvio_app/features/feed/presentation/bloc/profile_cubit/profile_cubit.dart';
|
|
import 'package:eatvio_app/features/feed/presentation/bloc/recipes_cubit/recipes_cubit.dart';
|
|
import 'package:eatvio_app/features/feed/repositories/feed_repository.dart';
|
|
import 'package:eatvio_app/features/feed/services/feed_service.dart';
|
|
import 'package:eatvio_app/features/glossary/repositories/glossary_repository.dart';
|
|
import 'package:eatvio_app/features/glossary/services/glossary_service.dart';
|
|
import 'package:eatvio_app/features/feed/presentation/bloc/plans_cubit/plans_cubit.dart';
|
|
import 'package:eatvio_app/features/my_diets/presentation/cubit/my_diets_cubit.dart';
|
|
import 'package:eatvio_app/features/my_diets/repositories/my_diets_repository.dart';
|
|
import 'package:eatvio_app/features/my_diets/services/my_diets_service.dart';
|
|
import 'package:eatvio_app/features/my_finance/presentation/cubit/user_cards_cubit/user_cards_cubit.dart';
|
|
import 'package:eatvio_app/features/my_finance/repositories/cards_repository.dart';
|
|
import 'package:eatvio_app/features/my_finance/services/cards_service.dart';
|
|
import 'package:eatvio_app/features/my_plans/presentation/cubit/my_plans_cubit.dart';
|
|
import 'package:eatvio_app/features/my_plans/repositories/my_diets_repository.dart';
|
|
import 'package:eatvio_app/features/my_plans/services/my_plans_service.dart';
|
|
import 'package:eatvio_app/features/plans/repositories/plans_repository.dart';
|
|
import 'package:eatvio_app/features/plans/services/plans_service.dart';
|
|
import 'package:eatvio_app/features/plans/presentation/cubit/about_plan_cubit.dart';
|
|
import 'package:eatvio_app/features/plans/repositories/plan_repository.dart';
|
|
import 'package:eatvio_app/features/plans/services/plan_service.dart';
|
|
import 'package:eatvio_app/features/profile/presentation/bloc/profile_cubit/profile_cubit.dart';
|
|
import 'package:eatvio_app/features/profile/presentation/bloc/sub_cubit/sub_cubit.dart';
|
|
import 'package:eatvio_app/features/profile/repositories/profile_repository.dart';
|
|
import 'package:eatvio_app/features/profile/services/profile_service.dart';
|
|
import 'package:eatvio_app/features/create_recipe/presentation/bloc/create_recipe_cubit/create_recipe_cubit.dart';
|
|
import 'package:eatvio_app/features/create_recipe/reporitories/recipe_repository.dart';
|
|
import 'package:eatvio_app/features/create_recipe/services/recipe_service.dart';
|
|
import 'package:eatvio_app/features/recipe/presentation/cubit/about_recipe_cubit.dart';
|
|
import 'package:eatvio_app/features/recipe/repositories/about_recipe_repository.dart';
|
|
import 'package:eatvio_app/features/recipe/services/about_recipe_service.dart';
|
|
import 'package:eatvio_app/features/registration/presentation/bloc/registration_cubit/registration_cubit.dart';
|
|
import 'package:eatvio_app/features/registration/repositories/registration_repository.dart';
|
|
import 'package:eatvio_app/features/registration/services/registration_service.dart';
|
|
import 'package:eatvio_app/features/settings/presentation/bloc/settings_cubit/settings_cubit.dart';
|
|
import 'package:eatvio_app/features/settings/repositories/service_repository.dart';
|
|
import 'package:eatvio_app/features/settings/services/settings_service.dart';
|
|
import 'package:eatvio_app/features/user_details/presentation/cubit/user_details_cubit.dart';
|
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
|
import 'package:get_it/get_it.dart';
|
|
import 'package:eatvio_app/features/profile/presentation/bloc/plans_cubit/plans_cubit.dart' as profile_plans;
|
|
|
|
final sl = GetIt.instance;
|
|
|
|
Future<void> init() async {
|
|
// Cubit singletons
|
|
sl.registerLazySingleton<WsManager>(() => WsManager(wsService: sl()));
|
|
sl.registerLazySingleton<NewMessagesCubit>(() => NewMessagesCubit());
|
|
sl.registerLazySingleton<NotificationsCubit>(() => NotificationsCubit(wsManager: sl()));
|
|
sl.registerLazySingleton<FeedCubit>(() => FeedCubit(feedRepository: sl()));
|
|
sl.registerLazySingleton<ProfileAvatarCubit>(() => ProfileAvatarCubit(profileRepository: sl()));
|
|
sl.registerLazySingleton<ChatsCubit>(() => ChatsCubit(chatRepository: sl(), wsManager: sl(), profileRepository: sl()));
|
|
|
|
// Cubit factories
|
|
sl.registerFactory<RegistrationCubit>(() => RegistrationCubit(registrationRepository: sl()));
|
|
sl.registerFactory<ChatRoomCubit>(() => ChatRoomCubit(cardsRepository: sl(), chatRepository: sl(), wsManager: sl()));
|
|
sl.registerFactory<RecipesCubit>(() => RecipesCubit(feedRepository: sl(), recipeRepository: sl(), aboutRecipeRepository: sl()));
|
|
sl.registerFactory<CalendarCubit>(() => CalendarCubit(calendarRepository: sl()));
|
|
sl.registerFactory<ProfileCubit>(() => ProfileCubit(profileRepository: sl(), chatRepository: sl()));
|
|
sl.registerFactory<profile_plans.PlansCubit>(() => profile_plans.PlansCubit(plansRepository: sl()));
|
|
sl.registerFactory<DietsCubit>(() => DietsCubit(feedRepository: sl(), dietsRepository: sl()));
|
|
sl.registerFactory<CommentsCubit>(() => CommentsCubit(feedRepository: sl()));
|
|
sl.registerFactory<PlansCubit>(() => PlansCubit(feedRepository: sl(), planRepository: sl()));
|
|
sl.registerFactory<SettingsCubit>(() => SettingsCubit(profileRepository: sl(), settingsRepository: sl()));
|
|
sl.registerFactory<RegisterConsultantCubit>(() => RegisterConsultantCubit(consultantRepository: sl()));
|
|
sl.registerFactory<DiaryCubit>(() => DiaryCubit(diaryRepository: sl(), glossaryRepository: sl()));
|
|
sl.registerFactory<AboutDietCubit>(() => AboutDietCubit(dietsRepository: sl(), profileRepository: sl()));
|
|
sl.registerFactory<BlogPostCreateCubit>(() => BlogPostCreateCubit(blogPostRepository: sl()));
|
|
sl.registerFactory<SubCubit>(() => SubCubit(profileRepository: sl()));
|
|
sl.registerFactory<CreateDietCubit>(() => CreateDietCubit(profileRepository: sl(), createDietRepository: sl(), glossaryRepository: sl()));
|
|
sl.registerFactory<CreatePlanCubit>(() => CreatePlanCubit());
|
|
sl.registerFactory<FeedProfileCubit>(() => FeedProfileCubit(profileRepository: sl()));
|
|
sl.registerFactory<AboutPlanCubit>(() => AboutPlanCubit(planRepository: sl()));
|
|
sl.registerFactory<CreateRecipeCubit>(() => CreateRecipeCubit(recipeRepository: sl()));
|
|
sl.registerFactory<MyDietsCubit>(() => MyDietsCubit(myDietsRepository: sl(), createDietRepository: sl()));
|
|
sl.registerFactory<MyPlansCubit>(() => MyPlansCubit(myPlansRepository: sl()));
|
|
sl.registerFactory<UserDetailsCubit>(() => UserDetailsCubit(profileRepository: sl()));
|
|
sl.registerFactory<ConsultantsCubit>(() => ConsultantsCubit(feedRepository: sl()));
|
|
sl.registerFactory<AboutRecipeCubit>(() => AboutRecipeCubit(recipeRepository: sl(), profileRepository: sl()));
|
|
sl.registerFactory<AuthCubit>(() => AuthCubit(authRepository: sl()));
|
|
sl.registerFactory<ComplainingCubit>(() => ComplainingCubit(repository: sl()));
|
|
sl.registerFactory<UserCardsCubit>(() => UserCardsCubit(cardsRepository: sl()));
|
|
|
|
// Repository
|
|
sl.registerLazySingleton<ChatRepository>(() => ChatRepository(chatService: sl()));
|
|
sl.registerLazySingleton<FeedRepository>(() => FeedRepository(feedService: sl()));
|
|
sl.registerLazySingleton<RegistrationRepository>(() => RegistrationRepository(registrationService: sl()));
|
|
sl.registerLazySingleton<CalendarRepository>(() => CalendarRepository(calendarService: sl()));
|
|
sl.registerLazySingleton<ProfileRepository>(() => ProfileRepository(profileService: sl()));
|
|
sl.registerLazySingleton<RecipeRepository>(() => RecipeRepository(recipeService: sl()));
|
|
sl.registerLazySingleton<SettingsRepository>(() => SettingsRepository(settingsService: sl()));
|
|
sl.registerLazySingleton<ConsultantRepository>(() => ConsultantRepository(consultantService: sl()));
|
|
sl.registerLazySingleton<DiaryRepository>(() => DiaryRepository(diaryService: sl()));
|
|
sl.registerLazySingleton<GlossaryRepository>(() => GlossaryRepository(glossaryService: sl()));
|
|
sl.registerLazySingleton<DietRepository>(() => DietRepository(dietsService: sl()));
|
|
sl.registerLazySingleton<BlogPostRepository>(() => BlogPostRepository(blogPostService: sl()));
|
|
sl.registerLazySingleton<CreateDietRepository>(() => CreateDietRepository(createDietService: sl()));
|
|
sl.registerLazySingleton<PlansRepository>(() => PlansRepository(plansService: sl()));
|
|
sl.registerLazySingleton<PlanRepository>(() => PlanRepository(planService: sl()));
|
|
sl.registerLazySingleton<MyDietsRepository>(() => MyDietsRepository(myDietsService: sl()));
|
|
sl.registerLazySingleton<MyPlansRepository>(() => MyPlansRepository(myPlansService: sl()));
|
|
sl.registerLazySingleton<AboutRecipeRepository>(() => AboutRecipeRepository(recipeService: sl()));
|
|
sl.registerLazySingleton<ComplainingRepository>(() => ComplainingRepository(service: sl()));
|
|
sl.registerLazySingleton<AuthRepository>(() => AuthRepository(authService: sl()));
|
|
sl.registerLazySingleton<CardsRepository>(() => CardsRepository(cardsService: sl()));
|
|
|
|
// Services
|
|
sl.registerLazySingleton<ChatService>(() => ChatService(sl()));
|
|
sl.registerLazySingleton<FeedService>(() => FeedService(sl()));
|
|
sl.registerLazySingleton<RegistrationService>(() => RegistrationService(sl()));
|
|
sl.registerLazySingleton<CalendarService>(() => CalendarService(sl()));
|
|
sl.registerLazySingleton<ProfileService>(() => ProfileService(sl()));
|
|
sl.registerLazySingleton<CreateRecipeService>(() => CreateRecipeService(sl()));
|
|
sl.registerLazySingleton<SettingsService>(() => SettingsService(sl()));
|
|
sl.registerLazySingleton<ConsultantService>(() => ConsultantService(sl()));
|
|
sl.registerLazySingleton<DiaryService>(() => DiaryService(sl()));
|
|
sl.registerLazySingleton<GlossaryService>(() => GlossaryService(sl()));
|
|
sl.registerLazySingleton<DietService>(() => DietService(sl()));
|
|
sl.registerLazySingleton<BlogPostService>(() => BlogPostService(sl()));
|
|
sl.registerLazySingleton<CreateDietService>(() => CreateDietService(sl()));
|
|
sl.registerLazySingleton<PlansService>(() => PlansService(sl()));
|
|
sl.registerLazySingleton<PlanService>(() => PlanService(sl()));
|
|
sl.registerLazySingleton<MyDietsService>(() => MyDietsService(sl()));
|
|
sl.registerLazySingleton<MyPlansService>(() => MyPlansService(sl()));
|
|
sl.registerLazySingleton<WsService>(() => WsService(sl()));
|
|
sl.registerLazySingleton<AboutRecipeService>(() => AboutRecipeService(sl()));
|
|
sl.registerLazySingleton<ComplainingService>(() => ComplainingService(sl()));
|
|
sl.registerLazySingleton<AuthService>(() => AuthService(sl()));
|
|
sl.registerLazySingleton<CardsService>(() => CardsService(sl()));
|
|
|
|
// External
|
|
sl.registerLazySingleton(
|
|
() => Dio(BaseOptions(baseUrl: baseUrl, headers: {'accept': 'application/json', 'content-type': 'application/json'}))..interceptors.add(TokenInterceptor()),
|
|
);
|
|
sl.registerLazySingleton(() async => const FlutterSecureStorage());
|
|
}
|