diff --git a/lib/src/providers/messages_change_provider.dart b/lib/src/providers/messages_change_provider.dart index b35488a..8ee89c6 100644 --- a/lib/src/providers/messages_change_provider.dart +++ b/lib/src/providers/messages_change_provider.dart @@ -35,13 +35,14 @@ class MessagesChangeProvider with ChangeNotifier, DiagnosticableTreeMixin { .indexWhere((x) => x.messageId == messageId); if (index == -1) { _allMessagesFromUser[targetUserId]!.insert(0, msg); + // reload all messages but async + loadMessagesForUser(targetUserId, force: true); } else { _allMessagesFromUser[targetUserId]![index] = msg; } } - _allMessagesFromUser[targetUserId] = allMessagesFromUser[targetUserId]!; - notifyListeners(); } + notifyListeners(); } Future loadMessagesForUser(int targetUserId, {bool force = false}) async { diff --git a/lib/src/views/chats/chat_item_details_view.dart b/lib/src/views/chats/chat_item_details_view.dart index c541983..c0ba394 100644 --- a/lib/src/views/chats/chat_item_details_view.dart +++ b/lib/src/views/chats/chat_item_details_view.dart @@ -143,7 +143,6 @@ class ChatItemDetailsView extends StatefulWidget { } class _ChatItemDetailsViewState extends State { - int lastChangeCounter = 0; TextEditingController newMessageController = TextEditingController(); HashSet alreadyReportedOpened = HashSet(); late Contact user; @@ -185,16 +184,11 @@ class _ChatItemDetailsViewState extends State { .watch() .allMessagesFromUser[user.userId.toInt()] ?? []; - print(messages.length); messages.where((x) => x.messageOpenedAt == null).forEach((message) { if (message.messageOtherId != null && message.messageContent is TextMessageContent) { if (!alreadyReportedOpened.contains(message.messageOtherId!)) { - setState(() { - // so the _loadAsync will not be called again by this update - lastChangeCounter++; - }); userOpenedOtherMessage(message.otherUserId, message.messageOtherId!); flutterLocalNotificationsPlugin.cancel(message.messageId); alreadyReportedOpened.add(message.messageOtherId!);