This commit is contained in:
otsmr 2025-02-13 23:19:15 +01:00
parent 7db9daf41d
commit 9a05f616dc
2 changed files with 3 additions and 8 deletions

View file

@ -35,13 +35,14 @@ class MessagesChangeProvider with ChangeNotifier, DiagnosticableTreeMixin {
.indexWhere((x) => x.messageId == messageId); .indexWhere((x) => x.messageId == messageId);
if (index == -1) { if (index == -1) {
_allMessagesFromUser[targetUserId]!.insert(0, msg); _allMessagesFromUser[targetUserId]!.insert(0, msg);
// reload all messages but async
loadMessagesForUser(targetUserId, force: true);
} else { } else {
_allMessagesFromUser[targetUserId]![index] = msg; _allMessagesFromUser[targetUserId]![index] = msg;
} }
} }
_allMessagesFromUser[targetUserId] = allMessagesFromUser[targetUserId]!;
notifyListeners();
} }
notifyListeners();
} }
Future loadMessagesForUser(int targetUserId, {bool force = false}) async { Future loadMessagesForUser(int targetUserId, {bool force = false}) async {

View file

@ -143,7 +143,6 @@ class ChatItemDetailsView extends StatefulWidget {
} }
class _ChatItemDetailsViewState extends State<ChatItemDetailsView> { class _ChatItemDetailsViewState extends State<ChatItemDetailsView> {
int lastChangeCounter = 0;
TextEditingController newMessageController = TextEditingController(); TextEditingController newMessageController = TextEditingController();
HashSet<int> alreadyReportedOpened = HashSet<int>(); HashSet<int> alreadyReportedOpened = HashSet<int>();
late Contact user; late Contact user;
@ -185,16 +184,11 @@ class _ChatItemDetailsViewState extends State<ChatItemDetailsView> {
.watch<MessagesChangeProvider>() .watch<MessagesChangeProvider>()
.allMessagesFromUser[user.userId.toInt()] ?? .allMessagesFromUser[user.userId.toInt()] ??
[]; [];
print(messages.length);
messages.where((x) => x.messageOpenedAt == null).forEach((message) { messages.where((x) => x.messageOpenedAt == null).forEach((message) {
if (message.messageOtherId != null && if (message.messageOtherId != null &&
message.messageContent is TextMessageContent) { message.messageContent is TextMessageContent) {
if (!alreadyReportedOpened.contains(message.messageOtherId!)) { if (!alreadyReportedOpened.contains(message.messageOtherId!)) {
setState(() {
// so the _loadAsync will not be called again by this update
lastChangeCounter++;
});
userOpenedOtherMessage(message.otherUserId, message.messageOtherId!); userOpenedOtherMessage(message.otherUserId, message.messageOtherId!);
flutterLocalNotificationsPlugin.cancel(message.messageId); flutterLocalNotificationsPlugin.cancel(message.messageId);
alreadyReportedOpened.add(message.messageOtherId!); alreadyReportedOpened.add(message.messageOtherId!);