- Task #6: WebSocket /ws/dashboard + Kafka events (5 topics) * Backend: KafkaEventProducer, KafkaEventConsumer * Mobile: WebSocketService (reconnection, heartbeat, typed events) * DashboardBloc: Auto-refresh depuis WebSocket events - Finance Workflow: approbations + budgets (backend + mobile) * Backend: entities, services, resources, migrations Flyway V6 * Mobile: features finance_workflow complète avec BLoC - Corrections DI: interfaces IRepository partout * IProfileRepository, IOrganizationRepository, IMembreRepository * GetIt configuré avec @injectable - Spec-Kit: constitution + templates mis à jour * .specify/memory/constitution.md enrichie * Templates agent, plan, spec, tasks, checklist - Nettoyage: fichiers temporaires supprimés Signed-off-by: lions dev Team
35 lines
878 B
Dart
35 lines
878 B
Dart
part of 'notifications_bloc.dart';
|
|
|
|
abstract class NotificationsEvent extends Equatable {
|
|
const NotificationsEvent();
|
|
|
|
@override
|
|
List<Object?> get props => [];
|
|
}
|
|
|
|
class LoadNotifications extends NotificationsEvent {
|
|
/// Si null ou vide, utilise GET /api/notifications/me (membre connecté).
|
|
final String? membreId;
|
|
final bool onlyUnread;
|
|
const LoadNotifications({this.membreId, this.onlyUnread = false});
|
|
|
|
@override
|
|
List<Object?> get props => [membreId, onlyUnread];
|
|
}
|
|
|
|
class MarkNotificationAsRead extends NotificationsEvent {
|
|
final String notificationId;
|
|
const MarkNotificationAsRead(this.notificationId);
|
|
|
|
@override
|
|
List<Object?> get props => [notificationId];
|
|
}
|
|
|
|
class RefreshNotifications extends NotificationsEvent {
|
|
final String? membreId;
|
|
const RefreshNotifications([this.membreId]);
|
|
|
|
@override
|
|
List<Object?> get props => [membreId];
|
|
}
|