2025-02-12 10:53:38 +03:00
|
|
|
|
import 'package:app_services/app_services.dart';
|
|
|
|
|
|
import 'package:friflex_starter/di/di_container.dart';
|
|
|
|
|
|
import 'package:friflex_starter/di/di_typedefs.dart';
|
|
|
|
|
|
import 'package:i_app_services/i_app_services.dart';
|
|
|
|
|
|
|
2025-06-20 16:50:48 +03:00
|
|
|
|
/// {@template di_services}
|
|
|
|
|
|
/// Класс для инициализации и управления сервисами приложения.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Отвечает за:
|
|
|
|
|
|
/// - Инициализацию сервисов для работы с путями
|
|
|
|
|
|
/// - Инициализацию сервисов для работы с защищенным хранилищем
|
|
|
|
|
|
/// - Уведомление о прогрессе инициализации
|
|
|
|
|
|
/// - Обработку ошибок инициализации сервисов
|
|
|
|
|
|
/// {@endtemplate}
|
2025-02-12 10:53:38 +03:00
|
|
|
|
final class DiServices {
|
2025-06-20 16:50:48 +03:00
|
|
|
|
/// {@macro di_services}
|
|
|
|
|
|
DiServices();
|
|
|
|
|
|
|
|
|
|
|
|
/// Сервис для работы с путями файловой системы
|
2025-02-12 10:53:38 +03:00
|
|
|
|
late final IPathProvider pathProvider;
|
|
|
|
|
|
|
2025-06-20 16:50:48 +03:00
|
|
|
|
/// Сервис для работы с защищенным локальным хранилищем
|
2025-02-12 10:53:38 +03:00
|
|
|
|
late final ISecureStorage secureStorage;
|
|
|
|
|
|
|
2025-06-23 01:03:38 +03:00
|
|
|
|
/// Сервис для работы с URL
|
|
|
|
|
|
late final IUrlLauncher urlLauncher;
|
|
|
|
|
|
|
2025-06-20 16:50:48 +03:00
|
|
|
|
/// Метод для инициализации сервисов в приложении.
|
2025-02-12 10:53:38 +03:00
|
|
|
|
///
|
|
|
|
|
|
/// Принимает:
|
2025-06-20 16:50:48 +03:00
|
|
|
|
/// - [onProgress] - обратный вызов для уведомления о прогрессе инициализации
|
|
|
|
|
|
/// - [diContainer] - контейнер зависимостей с конфигурацией приложения
|
|
|
|
|
|
/// - [onError] - обратный вызов для обработки ошибок инициализации
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Последовательность инициализации:
|
|
|
|
|
|
/// 1. Инициализация сервиса путей (AppPathProvider)
|
|
|
|
|
|
/// 2. Инициализация защищенного хранилища (AppSecureStorage)
|
2025-06-23 01:03:38 +03:00
|
|
|
|
/// 3. Инициализация сервиса URL (AppUrlLauncherService)
|
2025-02-12 10:53:38 +03:00
|
|
|
|
void init({
|
|
|
|
|
|
required OnProgress onProgress,
|
|
|
|
|
|
required OnError onError,
|
|
|
|
|
|
required DiContainer diContainer,
|
|
|
|
|
|
}) {
|
|
|
|
|
|
try {
|
2025-04-27 17:08:34 +03:00
|
|
|
|
pathProvider = const AppPathProvider();
|
2025-02-12 10:53:38 +03:00
|
|
|
|
onProgress(AppPathProvider.name);
|
|
|
|
|
|
} on Object catch (error, stackTrace) {
|
2025-05-28 16:38:56 +03:00
|
|
|
|
onError('Ошибка инициализации ${IPathProvider.name}', error, stackTrace);
|
2025-02-12 10:53:38 +03:00
|
|
|
|
}
|
|
|
|
|
|
try {
|
2025-06-23 01:03:38 +03:00
|
|
|
|
secureStorage = AppSecureStorage(secretKey: diContainer.appConfig.secretKey);
|
2025-02-12 10:53:38 +03:00
|
|
|
|
onProgress(AppSecureStorage.name);
|
|
|
|
|
|
} on Object catch (error, stackTrace) {
|
2025-05-28 16:38:56 +03:00
|
|
|
|
onError('Ошибка инициализации ${ISecureStorage.name}', error, stackTrace);
|
2025-02-12 10:53:38 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-06-23 01:03:38 +03:00
|
|
|
|
try {
|
|
|
|
|
|
urlLauncher = AppUrlLauncher();
|
|
|
|
|
|
onProgress(AppUrlLauncher.name);
|
|
|
|
|
|
} on Object catch (error, stackTrace) {
|
|
|
|
|
|
onError('Ошибка инициализации ${IUrlLauncher.name}', error, stackTrace);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-02-12 10:53:38 +03:00
|
|
|
|
onProgress('Инициализация сервисов завершена!');
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|