mirror of
https://github.com/smmarty/friflex_flutter_starter.git
synced 2025-12-22 01:20:46 +00:00
refactor(app): Обновить описание и структуру файлов конфигурации, улучшить документацию (#14)
Co-authored-by: PetrovY <y.petrov@friflex.com>
This commit is contained in:
@@ -13,7 +13,7 @@ import 'package:friflex_starter/features/profile/data/repository/profile_reposit
|
||||
import 'package:friflex_starter/features/profile/domain/repository/i_profile_repository.dart';
|
||||
|
||||
/// Список названий моковых репозиториев, которые должны быть подменены
|
||||
/// для использования в сборке stage окружения
|
||||
/// для использования в сборке stage окружения.
|
||||
///
|
||||
/// Для того, чтобы репозиторий был автоматически подменен на моковый в stage
|
||||
/// сборке, необходимо в этом списке указать название мокового репозитория,
|
||||
@@ -25,12 +25,24 @@ import 'package:friflex_starter/features/profile/domain/repository/i_profile_rep
|
||||
/// ```
|
||||
final List<String> _mockReposToSwitch = [];
|
||||
|
||||
/// Класс для инициализации репозиториев в приложении
|
||||
/// {@template di_repositories}
|
||||
/// Класс для инициализации и управления репозиториями приложения.
|
||||
///
|
||||
/// По умолчанию репозиторию присваивается моковая реализация.
|
||||
/// В зависимости от окружения либо выполняется подмена репозиторий,
|
||||
/// либо используется моковый.
|
||||
/// Отвечает за:
|
||||
/// - Инициализацию репозиториев для работы с данными
|
||||
/// - Автоматическое переключение между моковыми и реальными репозиториями
|
||||
/// - Уведомление о прогрессе инициализации
|
||||
/// - Обработку ошибок инициализации репозиториев
|
||||
///
|
||||
/// Стратегия инициализации по окружениям:
|
||||
/// - dev: всегда используются моковые репозитории
|
||||
/// - prod: всегда используются реальные репозитории
|
||||
/// - stage: используются моковые репозитории из списка _mockReposToSwitch
|
||||
/// {@endtemplate}
|
||||
final class DiRepositories {
|
||||
/// {@macro di_repositories}
|
||||
DiRepositories();
|
||||
|
||||
/// Интерфейс для работы с репозиторием авторизации
|
||||
late final IAuthRepository authRepository;
|
||||
|
||||
@@ -40,18 +52,24 @@ final class DiRepositories {
|
||||
/// Интерфейс для работы с репозиторием профиля
|
||||
late final IProfileRepository profileRepository;
|
||||
|
||||
/// Метод для инициализации репозиториев в приложении
|
||||
/// Метод для инициализации репозиториев в приложении.
|
||||
///
|
||||
/// Принимает:
|
||||
/// - [onProgress] - обратный вызов при прогрессе
|
||||
/// - [diContainer] - контейнер зависимостей
|
||||
/// - [onProgress] - обратный вызов для уведомления о прогрессе инициализации
|
||||
/// - [diContainer] - контейнер зависимостей с конфигурацией приложения
|
||||
/// - [onError] - обратный вызов для обработки ошибок инициализации
|
||||
///
|
||||
/// Последовательность инициализации:
|
||||
/// 1. Инициализация репозитория авторизации
|
||||
/// 2. Инициализация репозитория главного сервиса
|
||||
/// 3. Инициализация репозитория профиля
|
||||
void init({
|
||||
required OnProgress onProgress,
|
||||
required OnError onError,
|
||||
required DiContainer diContainer,
|
||||
}) {
|
||||
try {
|
||||
//Инициализация репозитория авторизации
|
||||
// Инициализация репозитория авторизации
|
||||
authRepository = _lazyInitRepo<IAuthRepository>(
|
||||
mockFactory: AuthMockRepository.new,
|
||||
mainFactory: () => AuthRepository(
|
||||
@@ -125,9 +143,13 @@ final class DiRepositories {
|
||||
/// В зависимости от окружения инициализируется моковый или сетевой репозиторий.
|
||||
///
|
||||
/// Принимает:
|
||||
/// - [mockFactory] - функция - фабрика для инициализации репозитория для управления моковыми запросами
|
||||
/// - [mainFactory] - функция - фабрика для инициализации основного репозиторий
|
||||
/// - [onProgress] - обратный вызов при прогрессе
|
||||
/// - [mockFactory] - функция-фабрика для инициализации мокового репозитория
|
||||
/// - [mainFactory] - функция-фабрика для инициализации основного репозитория
|
||||
/// - [onProgress] - обратный вызов для уведомления о прогрессе
|
||||
/// - [environment] - окружение приложения для определения стратегии инициализации
|
||||
///
|
||||
/// Возвращает:
|
||||
/// - Экземпляр репозитория в зависимости от окружения
|
||||
T _lazyInitRepo<T extends DiBaseRepo>({
|
||||
required AppEnv environment,
|
||||
required T Function() mainFactory,
|
||||
|
||||
Reference in New Issue
Block a user