diff --git a/lib/src/components/message_send_state_icon.dart b/lib/src/components/message_send_state_icon.dart index 0017d7a..98a0c76 100644 --- a/lib/src/components/message_send_state_icon.dart +++ b/lib/src/components/message_send_state_icon.dart @@ -152,7 +152,11 @@ class _MessageSendStateIconState extends State { text = "Unknown error."; } - icons.add(icon); + if (message.kind == MessageKind.media) { + icons.insert(0, icon); + } else { + icons.add(icon); + } } if (icons.isEmpty) return Container(); diff --git a/lib/src/services/fcm_service.dart b/lib/src/services/fcm_service.dart index 5f700c3..2ca3fb5 100644 --- a/lib/src/services/fcm_service.dart +++ b/lib/src/services/fcm_service.dart @@ -84,8 +84,7 @@ Future initFCMService() async { String title = message.notification!.title ?? ""; String body = message.notification!.body ?? ""; customLocalPushNotification(title, body); - } - if (message.data["push_data"] != null) { + } else if (message.data["push_data"] != null) { handlePushData(message.data["push_data"]); } }); diff --git a/lib/src/views/chats/chat_item_details_view.dart b/lib/src/views/chats/chat_item_details_view.dart index 47c3179..4377ab5 100644 --- a/lib/src/views/chats/chat_item_details_view.dart +++ b/lib/src/views/chats/chat_item_details_view.dart @@ -229,6 +229,7 @@ class _ChatItemDetailsViewState extends State { twonlyDatabase.messagesDao.watchAllMessagesFrom(widget.userid); messageSub = msgStream.listen((msgs) { if (!context.mounted) return; + flutterLocalNotificationsPlugin.cancel(widget.userid); var updated = false; List displayedMessages = []; // should be cleared @@ -239,7 +240,6 @@ class _ChatItemDetailsViewState extends State { msg.messageOtherId != null && msg.openedAt == null) { updated = true; - flutterLocalNotificationsPlugin.cancel(msg.messageId); notifyContactAboutOpeningMessage(widget.userid, msg.messageOtherId!); } diff --git a/lib/src/views/chats/chat_list_view.dart b/lib/src/views/chats/chat_list_view.dart index d18d362..9e41087 100644 --- a/lib/src/views/chats/chat_list_view.dart +++ b/lib/src/views/chats/chat_list_view.dart @@ -165,6 +165,8 @@ class _UserListItem extends State { List lastMessages = []; late StreamSubscription> lastMessageStream; + List previewMessages = []; + Timer? updateTime; @override @@ -195,9 +197,11 @@ class _UserListItem extends State { if (newLastMessages.isEmpty) { // there are no messages at all currentMessage = null; + previewMessages = []; } else if (newMessagesNotOpened.isEmpty) { // there are no not opened messages show just the last message in the table currentMessage = newLastMessages.first; + previewMessages = newLastMessages; } else { // filter first for received messages final receivedMessages = @@ -213,6 +217,7 @@ class _UserListItem extends State { } else { currentMessage = receivedMessages.first; } + previewMessages = receivedMessages; } else { // The not opened message was send final mediaMessages = @@ -223,6 +228,7 @@ class _UserListItem extends State { } else { currentMessage = newMessagesNotOpened.first; } + previewMessages = [currentMessage!]; } } @@ -268,7 +274,7 @@ class _UserListItem extends State { ? Text(context.lang.chatsTapToSend) : Row( children: [ - MessageSendStateIcon(lastMessages), + MessageSendStateIcon(previewMessages), Text("•"), const SizedBox(width: 5), Text( diff --git a/lib/src/views/chats/media_viewer_view.dart b/lib/src/views/chats/media_viewer_view.dart index 734e79a..aacd26b 100644 --- a/lib/src/views/chats/media_viewer_view.dart +++ b/lib/src/views/chats/media_viewer_view.dart @@ -126,7 +126,7 @@ class _MediaViewerViewState extends State { } } } - flutterLocalNotificationsPlugin.cancel(current.messageId); + flutterLocalNotificationsPlugin.cancel(current.contactId); if (current.downloadState == DownloadState.pending) { setState(() { isDownloading = true;