Initial commit: unionflow-mobile-apps
Application Flutter complète (sans build artifacts). Signed-off-by: lions dev Team
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
/// BLoC pour la gestion des paramètres système (Clean Architecture)
|
||||
library system_settings_bloc;
|
||||
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:injectable/injectable.dart';
|
||||
import '../../domain/usecases/get_settings.dart';
|
||||
import '../../domain/usecases/update_settings.dart';
|
||||
import '../../domain/usecases/get_cache_stats.dart';
|
||||
import '../../domain/usecases/clear_cache.dart' as uc;
|
||||
import '../../domain/usecases/reset_settings.dart';
|
||||
import '../../domain/repositories/system_config_repository.dart';
|
||||
import 'system_settings_event.dart';
|
||||
import 'system_settings_state.dart';
|
||||
|
||||
@injectable
|
||||
class SystemSettingsBloc extends Bloc<SystemSettingsEvent, SystemSettingsState> {
|
||||
final GetSettings _getSettings;
|
||||
final UpdateSettings _updateSettings;
|
||||
final GetCacheStats _getCacheStats;
|
||||
final uc.ClearCache _clearCache;
|
||||
final ResetSettings _resetSettings;
|
||||
final ISystemConfigRepository _repository; // Pour méthodes non-couvertes (metrics, test DB, test email)
|
||||
|
||||
SystemSettingsBloc(
|
||||
this._getSettings,
|
||||
this._updateSettings,
|
||||
this._getCacheStats,
|
||||
this._clearCache,
|
||||
this._resetSettings,
|
||||
this._repository,
|
||||
) : super(SystemSettingsInitial()) {
|
||||
on<LoadSystemConfig>(_onLoadSystemConfig);
|
||||
on<UpdateSystemConfig>(_onUpdateSystemConfig);
|
||||
on<LoadCacheStats>(_onLoadCacheStats);
|
||||
on<LoadSystemMetrics>(_onLoadSystemMetrics);
|
||||
on<ClearCache>(_onClearCache);
|
||||
on<TestDatabaseConnection>(_onTestDatabaseConnection);
|
||||
on<TestEmailConfiguration>(_onTestEmailConfiguration);
|
||||
on<ResetSystemConfig>(_onResetSystemConfig);
|
||||
}
|
||||
|
||||
Future<void> _onLoadSystemConfig(
|
||||
LoadSystemConfig event,
|
||||
Emitter<SystemSettingsState> emit,
|
||||
) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final config = await _getSettings(); // ✅ Use case
|
||||
emit(SystemConfigLoaded(config));
|
||||
} catch (e) {
|
||||
emit(SystemSettingsError('Erreur de chargement: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onUpdateSystemConfig(
|
||||
UpdateSystemConfig event,
|
||||
Emitter<SystemSettingsState> emit,
|
||||
) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final config = await _updateSettings(event.config); // ✅ Use case
|
||||
emit(SystemConfigLoaded(config));
|
||||
emit(const SystemSettingsSuccess('Configuration mise à jour'));
|
||||
} catch (e) {
|
||||
emit(SystemSettingsError('Erreur de mise à jour: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onLoadCacheStats(
|
||||
LoadCacheStats event,
|
||||
Emitter<SystemSettingsState> emit,
|
||||
) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final stats = await _getCacheStats(); // ✅ Use case
|
||||
emit(CacheStatsLoaded(stats));
|
||||
} catch (e) {
|
||||
emit(SystemSettingsError('Erreur de chargement: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onLoadSystemMetrics(
|
||||
LoadSystemMetrics event,
|
||||
Emitter<SystemSettingsState> emit,
|
||||
) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final metrics = await _repository.getMetrics();
|
||||
emit(SystemMetricsLoaded(metrics));
|
||||
} catch (e) {
|
||||
emit(SystemSettingsError('Erreur de chargement des métriques: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onClearCache(
|
||||
ClearCache event,
|
||||
Emitter<SystemSettingsState> emit,
|
||||
) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
await _clearCache(); // ✅ Use case
|
||||
emit(const SystemSettingsSuccess('Cache vidé avec succès'));
|
||||
} catch (e) {
|
||||
emit(SystemSettingsError('Erreur: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onTestDatabaseConnection(
|
||||
TestDatabaseConnection event,
|
||||
Emitter<SystemSettingsState> emit,
|
||||
) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final result = await _repository.testDatabase();
|
||||
final success = result['success'] as bool? ?? false;
|
||||
final message = result['message'] as String? ?? 'Test terminé';
|
||||
if (success) {
|
||||
emit(SystemSettingsSuccess(message));
|
||||
} else {
|
||||
emit(SystemSettingsError(message));
|
||||
}
|
||||
} catch (e) {
|
||||
emit(SystemSettingsError('Erreur de test: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onTestEmailConfiguration(
|
||||
TestEmailConfiguration event,
|
||||
Emitter<SystemSettingsState> emit,
|
||||
) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final result = await _repository.testEmail();
|
||||
final success = result['success'] as bool? ?? false;
|
||||
final message = result['message'] as String? ?? 'Test terminé';
|
||||
if (success) {
|
||||
emit(SystemSettingsSuccess(message));
|
||||
} else {
|
||||
emit(SystemSettingsError(message));
|
||||
}
|
||||
} catch (e) {
|
||||
emit(SystemSettingsError('Erreur de test: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
/// Réinitialise la configuration système aux valeurs par défaut
|
||||
Future<void> _onResetSystemConfig(
|
||||
ResetSystemConfig event,
|
||||
Emitter<SystemSettingsState> emit,
|
||||
) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final config = await _resetSettings(); // ✅ Use case
|
||||
emit(SystemConfigLoaded(config));
|
||||
emit(const SystemSettingsSuccess('Configuration réinitialisée'));
|
||||
} catch (e) {
|
||||
emit(SystemSettingsError('Erreur de réinitialisation: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
/// Events pour SystemSettingsBloc
|
||||
library system_settings_event;
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
abstract class SystemSettingsEvent extends Equatable {
|
||||
const SystemSettingsEvent();
|
||||
|
||||
@override
|
||||
List<Object?> get props => [];
|
||||
}
|
||||
|
||||
class LoadSystemConfig extends SystemSettingsEvent {}
|
||||
|
||||
class UpdateSystemConfig extends SystemSettingsEvent {
|
||||
final Map<String, dynamic> config;
|
||||
|
||||
const UpdateSystemConfig(this.config);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [config];
|
||||
}
|
||||
|
||||
class LoadCacheStats extends SystemSettingsEvent {}
|
||||
|
||||
class LoadSystemMetrics extends SystemSettingsEvent {}
|
||||
|
||||
class ClearCache extends SystemSettingsEvent {}
|
||||
|
||||
class TestDatabaseConnection extends SystemSettingsEvent {}
|
||||
|
||||
class TestEmailConfiguration extends SystemSettingsEvent {}
|
||||
|
||||
class ResetSystemConfig extends SystemSettingsEvent {}
|
||||
@@ -0,0 +1,63 @@
|
||||
/// States pour SystemSettingsBloc
|
||||
library system_settings_state;
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
import '../../data/models/system_config_model.dart';
|
||||
import '../../data/models/cache_stats_model.dart';
|
||||
import '../../data/models/system_metrics_model.dart';
|
||||
|
||||
abstract class SystemSettingsState extends Equatable {
|
||||
const SystemSettingsState();
|
||||
|
||||
@override
|
||||
List<Object?> get props => [];
|
||||
}
|
||||
|
||||
class SystemSettingsInitial extends SystemSettingsState {}
|
||||
|
||||
class SystemSettingsLoading extends SystemSettingsState {}
|
||||
|
||||
class SystemConfigLoaded extends SystemSettingsState {
|
||||
final SystemConfigModel config;
|
||||
|
||||
const SystemConfigLoaded(this.config);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [config];
|
||||
}
|
||||
|
||||
class CacheStatsLoaded extends SystemSettingsState {
|
||||
final CacheStatsModel stats;
|
||||
|
||||
const CacheStatsLoaded(this.stats);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [stats];
|
||||
}
|
||||
|
||||
class SystemMetricsLoaded extends SystemSettingsState {
|
||||
final SystemMetricsModel metrics;
|
||||
|
||||
const SystemMetricsLoaded(this.metrics);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [metrics];
|
||||
}
|
||||
|
||||
class SystemSettingsSuccess extends SystemSettingsState {
|
||||
final String message;
|
||||
|
||||
const SystemSettingsSuccess(this.message);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [message];
|
||||
}
|
||||
|
||||
class SystemSettingsError extends SystemSettingsState {
|
||||
final String error;
|
||||
|
||||
const SystemSettingsError(this.error);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [error];
|
||||
}
|
||||
Reference in New Issue
Block a user