forked from eatvio/eatvio_app
46 lines
2.1 KiB
Dart
46 lines
2.1 KiB
Dart
import 'package:eatvio_app/core/app_initializer.dart';
|
||
import 'package:eatvio_app/core/di/app_config_registration.dart';
|
||
import 'package:eatvio_app/core/di/cubit_registrations.dart';
|
||
import 'package:eatvio_app/core/di/external_registrations.dart';
|
||
import 'package:eatvio_app/core/di/repository_registrations.dart';
|
||
import 'package:eatvio_app/core/di/service_registrations.dart';
|
||
import 'package:eatvio_app/core/local_db/services/diary_sync_runner.dart';
|
||
import 'package:eatvio_app/features/diary/presentation/bloc/glossary_sync_cubit.dart';
|
||
import 'package:eatvio_app/core/prefs.dart';
|
||
import 'package:eatvio_app/core/websockets/ws_manager.dart';
|
||
import 'package:get_it/get_it.dart';
|
||
|
||
/// Глобальный экземпляр GetIt для внедрения зависимостей
|
||
final sl = GetIt.instance;
|
||
|
||
/// Инициализация системы внедрения зависимостей
|
||
Future<void> init({required AppBuildType buildType}) async {
|
||
// Регистрация AppConfig
|
||
AppConfigRegistration.registerAppConfig(buildType: buildType);
|
||
|
||
// Регистрация внешних зависимостей (Dio, БД, etc.)
|
||
ExternalRegistrations.registerAll();
|
||
|
||
// Ожидание инициализации асинхронных зависимостей
|
||
await sl.getAsync<Prefs>();
|
||
|
||
// Регистрация сервисов
|
||
ServiceRegistrations.registerAll();
|
||
|
||
// Регистрация репозиториев
|
||
RepositoryRegistrations.registerAll();
|
||
|
||
// Регистрация Cubit'ов
|
||
CubitRegistrations.registerAll();
|
||
|
||
// Регистрация WebSocket менеджера
|
||
sl.registerLazySingleton<WsManager>(() => WsManager(wsService: sl(), errorReporter: sl()));
|
||
|
||
// Запуск FIFO-воркера синхронизации дневника
|
||
// Подписывается на InternetConnectionCubit и обрабатывает очередь при появлении сети
|
||
sl<DiarySyncRunner>().start();
|
||
|
||
// Запуск синхронизации глоссария с отслеживанием прогресса в UI
|
||
sl<GlossarySyncCubit>().start();
|
||
}
|