feat: Simplify message state management by removing intermediate states and updating UI logic
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user