mirror of
https://github.com/smmarty/friflex_flutter_starter.git
synced 2025-12-22 09:30:45 +00:00
feat(update): добавить модуль управления Hard & Soft обновлений (#30)
1. Реализован интерфейс и репозитории для проверки обновлений. 2. Добавлены состояния и кубит для управления процессом обновления. 3. Созданы UI-компоненты для отображения информации об обновлениях. 4. Обновлен README.md с описанием нового модуля и его интеграции
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import 'package:friflex_starter/features/update/domain/entity/update_entity.dart';
|
||||
import 'package:friflex_starter/features/update/domain/repository/i_update_repository.dart';
|
||||
import 'package:friflex_starter/features/update/update_type.dart';
|
||||
|
||||
/// Мок обновления обязательное, можно использовать для тестирования
|
||||
const mockHardUpdateEntity = UpdateEntity(
|
||||
availableVersion: '2.0.0',
|
||||
updateUrl: 'https://example.com/update',
|
||||
updateType: UpdateType.hard,
|
||||
whatIsNew: 'Добавлены новые функции и исправлены ошибки.',
|
||||
);
|
||||
|
||||
/// Мок обновления мягкое, можно использовать для тестирования
|
||||
const mockSoftUpdateEntity = UpdateEntity(
|
||||
availableVersion: '2.0.0',
|
||||
updateUrl: 'https://example.com/update',
|
||||
updateType: UpdateType.soft,
|
||||
whatIsNew: 'Добавлены новые функции и исправлены ошибки.',
|
||||
);
|
||||
|
||||
/// {@template UpdateMockRepository}
|
||||
/// Репозиторий для моковой реализации проверки обновлений
|
||||
/// {@endtemplate}
|
||||
final class UpdateMockRepository implements IUpdateRepository {
|
||||
/// {@macro UpdateMockRepository}
|
||||
const UpdateMockRepository();
|
||||
|
||||
@override
|
||||
Future<UpdateEntity> checkForUpdates({
|
||||
required String versionCode,
|
||||
required String platform,
|
||||
}) async {
|
||||
// Имитация задержки для асинхронной операции
|
||||
await Future<void>.delayed(const Duration(seconds: 1));
|
||||
|
||||
// Возвращаем фиктивные данные об обновлении
|
||||
// Можно возвращать [_mockHardUpdateEntity] или [_mockSoftUpdateEntity]
|
||||
return mockSoftUpdateEntity;
|
||||
}
|
||||
|
||||
@override
|
||||
String get name => 'UpdateMockRepository';
|
||||
}
|
||||
23
lib/features/update/data/repository/update_repository.dart
Normal file
23
lib/features/update/data/repository/update_repository.dart
Normal file
@@ -0,0 +1,23 @@
|
||||
import 'package:friflex_starter/features/update/domain/entity/update_entity.dart';
|
||||
import 'package:friflex_starter/features/update/domain/repository/i_update_repository.dart';
|
||||
|
||||
/// {@template UpdateRepository}
|
||||
/// Репозиторий для реализации проверки обновлений
|
||||
/// {@endtemplate}
|
||||
final class UpdateRepository implements IUpdateRepository {
|
||||
/// {@macro UpdateRepository}
|
||||
const UpdateRepository();
|
||||
|
||||
@override
|
||||
Future<UpdateEntity> checkForUpdates({
|
||||
required String versionCode,
|
||||
required String platform,
|
||||
}) {
|
||||
// TODO: Реализовать реальную логику проверки обновлений
|
||||
// Если обновления нет, возвращаем null
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
String get name => 'UpdateRepository';
|
||||
}
|
||||
Reference in New Issue
Block a user