feat: Simplify message state management by removing intermediate states and updating UI logic

This commit is contained in:
Dayron
2025-10-20 17:51:16 +02:00
parent a2e366e1ce
commit 633d2c5e5c
3 changed files with 17 additions and 127 deletions

View File

@@ -55,31 +55,16 @@ class MessageBloc extends Bloc<MessageEvent, MessageState> {
SendMessage event,
Emitter<MessageState> emit,
) async {
final currentState = state;
try {
emit(MessageSending());
// Juste effectuer l'action, le stream mettra à jour
await _messageService.sendMessage(
groupId: event.groupId,
text: event.text,
senderId: event.senderId,
senderName: event.senderName,
);
emit(MessageSent());
// Retourner à l'état précédent si c'était MessagesLoaded
if (currentState is MessagesLoaded) {
emit(currentState);
}
} catch (e) {
emit(MessageError('Erreur lors de l\'envoi du message: $e'));
// Retourner à l'état précédent
if (currentState is MessagesLoaded) {
emit(currentState);
}
}
}
@@ -87,29 +72,15 @@ class MessageBloc extends Bloc<MessageEvent, MessageState> {
DeleteMessage event,
Emitter<MessageState> emit,
) async {
final currentState = state;
try {
emit(MessageDeleting());
// Ne pas émettre d'état, juste effectuer l'action
// Le stream Firestore mettra à jour automatiquement
await _messageService.deleteMessage(
groupId: event.groupId,
messageId: event.messageId,
);
emit(MessageDeleted());
// Retourner à l'état précédent si c'était MessagesLoaded
if (currentState is MessagesLoaded) {
emit(currentState);
}
} catch (e) {
emit(MessageError('Erreur lors de la suppression du message: $e'));
// Retourner à l'état précédent
if (currentState is MessagesLoaded) {
emit(currentState);
}
}
}
@@ -117,30 +88,16 @@ class MessageBloc extends Bloc<MessageEvent, MessageState> {
UpdateMessage event,
Emitter<MessageState> emit,
) async {
final currentState = state;
try {
emit(MessageUpdating());
// Ne pas émettre d'état, juste effectuer l'action
// Le stream Firestore mettra à jour automatiquement
await _messageService.updateMessage(
groupId: event.groupId,
messageId: event.messageId,
newText: event.newText,
);
emit(MessageUpdated());
// Retourner à l'état précédent si c'était MessagesLoaded
if (currentState is MessagesLoaded) {
emit(currentState);
}
} catch (e) {
emit(MessageError('Erreur lors de la modification du message: $e'));
// Retourner à l'état précédent
if (currentState is MessagesLoaded) {
emit(currentState);
}
}
}
@@ -148,31 +105,17 @@ class MessageBloc extends Bloc<MessageEvent, MessageState> {
ReactToMessage event,
Emitter<MessageState> emit,
) async {
final currentState = state;
try {
emit(MessageReacting());
// Ne pas émettre d'état, juste effectuer l'action
// Le stream Firestore mettra à jour automatiquement
await _messageService.reactToMessage(
groupId: event.groupId,
messageId: event.messageId,
userId: event.userId,
reaction: event.reaction,
);
emit(MessageReacted());
// Retourner à l'état précédent si c'était MessagesLoaded
if (currentState is MessagesLoaded) {
emit(currentState);
}
} catch (e) {
emit(MessageError('Erreur lors de l\'ajout de la réaction: $e'));
// Retourner à l'état précédent
if (currentState is MessagesLoaded) {
emit(currentState);
}
}
}
@@ -180,30 +123,16 @@ class MessageBloc extends Bloc<MessageEvent, MessageState> {
RemoveReaction event,
Emitter<MessageState> emit,
) async {
final currentState = state;
try {
emit(MessageReacting());
// Ne pas émettre d'état, juste effectuer l'action
// Le stream Firestore mettra à jour automatiquement
await _messageService.removeReaction(
groupId: event.groupId,
messageId: event.messageId,
userId: event.userId,
);
emit(MessageReacted());
// Retourner à l'état précédent si c'était MessagesLoaded
if (currentState is MessagesLoaded) {
emit(currentState);
}
} catch (e) {
emit(MessageError('Erreur lors de la suppression de la réaction: $e'));
// Retourner à l'état précédent
if (currentState is MessagesLoaded) {
emit(currentState);
}
}
}

View File

@@ -25,22 +25,6 @@ class MessagesLoaded extends MessageState {
List<Object?> get props => [messages, groupId];
}
class MessageSending extends MessageState {}
class MessageSent extends MessageState {}
class MessageDeleting extends MessageState {}
class MessageDeleted extends MessageState {}
class MessageUpdating extends MessageState {}
class MessageUpdated extends MessageState {}
class MessageReacting extends MessageState {}
class MessageReacted extends MessageState {}
class MessageError extends MessageState {
final String message;