mnemo_cards/lib/di/injector.dart
2024-08-07 00:33:11 +03:00

126 lines
3.4 KiB
Dart

import 'package:get_it/get_it.dart';
import 'package:mnemo_cards/admin/admin_api.dart';
import 'package:mnemo_cards/features/packs/pack_cache_manager.dart';
import 'package:mnemo_cards/features/packs/packs_api.dart';
import 'package:mnemo_cards/features/subscription/subscription_api.dart';
import 'package:mnemo_cards/flags.dart';
import 'package:mnemo_cards/managers/favorite_cards.dart';
import 'package:mnemo_cards/managers/repository/dio_provider.dart';
import 'package:mnemo_cards/managers/repository/http_repository.dart';
import '../features/packs/images_holder.dart';
import '../features/packs/pack_updater.dart';
import '../features/packs/preview_packs_poller.dart';
import '../features/purchase/in_app_purchase.dart';
import '../features/tests/test_manager.dart';
import '../features/packs/pack_holder.dart';
import '../features/packs/pack_manager.dart';
import '../features/packs/preview_pack_holder.dart';
import '../managers/user_manager.dart';
GetIt getIt = GetIt.I;
Future<void> setInjections() async {
final _dio = await DioProvider().init();
getIt.registerSingleton<DioProvider>(_dio);
print('set dio');
getIt.registerLazySingleton<HttpRepository>(
() => HttpRepository(getIt.get<DioProvider>().dio),
);
print('set repo');
getIt.registerLazySingleton<PacksApi>(
() => PacksApi(getIt.get<DioProvider>().dio),
);
print('set pack');
getIt.registerLazySingleton<SubscriptionApi>(
() => SubscriptionApi(getIt.get<DioProvider>().dio),
);
print('set subscription');
getIt.registerLazySingleton<PackHolder>(
() => PackHolder(),
);
print('set pack holder');
getIt.registerLazySingleton<PreviewPackHolder>(
() => PreviewPackHolder(),
);
print('set preview');
getIt.registerLazySingleton<PackCacheManager>(
() => PackCacheManager(),
);
print('set cache');
getIt.registerLazySingleton<ImagesHolder>(
() => ImagesHolder(),
);
print('set images holder');
getIt.registerLazySingleton<PreviewPacksPoller>(
() => PreviewPacksPoller(
getIt.get<PacksApi>(),
getIt.get<PreviewPackHolder>(),
),
);
print('set preview poller');
getIt.registerLazySingleton<PackManager>(
() => PackManager(
getIt.get<HttpRepository>(),
getIt.get<PacksApi>(),
getIt.get<PackHolder>(),
getIt.get<PreviewPackHolder>(),
getIt.get<PackCacheManager>(),
),
);
print('set pack manager');
getIt.registerLazySingleton<PackUpdater>(
() => PackUpdater(
getIt.get<PacksApi>(),
getIt.get<PackCacheManager>(),
getIt.get<PackHolder>(),
getIt.get<PreviewPackHolder>(),
),
);
print('set pack updater');
getIt.registerLazySingleton<UserManager>(
() => UserManager(
getIt.get<HttpRepository>(),
),
);
print('set user manager');
getIt.registerLazySingleton<FavoriteCardsController>(
() => FavoriteCardsController(),
);
print('set fav cards container');
getIt.registerLazySingleton<TestManager>(
() =>
TestManager(getIt.get<PackCacheManager>(), getIt.get<HttpRepository>()),
);
print('set test manager');
getIt.registerLazySingleton<InAppPurchaseService>(
() => InAppPurchaseService(),
);
print('set in app');
getIt.registerLazySingleton(
() => PurchaseDetailsStreamSubscription(),
);
print('set purchase');
try {
await getIt.allReady();
print('injector all ready');
} catch (e, s) {
print('injector error $e $s');
}
}