From c9a11758d820b184f2cf54aa2d4dd20cd5799476 Mon Sep 17 00:00:00 2001 From: Freek van de Ven Date: Fri, 24 May 2024 14:17:58 +0200 Subject: [PATCH] fix: add check for groupchats with only 1 member --- CHANGELOG.md | 1 + .../firebase_chat_overview_service.dart | 20 +++++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca60a31..c808eeb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Change the ChatTranslations constructor to require all translations or use the ChatTranslations.empty constructor if you don't want to specify all translations - Remove the Divider between the users on the new chat screen - Add option to set a custom padding around the list of chats +- Fix nullpointer when firstWhere returns null because there is only 1 person in a groupchat ## 1.4.3 diff --git a/packages/flutter_chat_firebase/lib/service/firebase_chat_overview_service.dart b/packages/flutter_chat_firebase/lib/service/firebase_chat_overview_service.dart index a00fdeb..92da038 100644 --- a/packages/flutter_chat_firebase/lib/service/firebase_chat_overview_service.dart +++ b/packages/flutter_chat_firebase/lib/service/firebase_chat_overview_service.dart @@ -91,11 +91,15 @@ class FirebaseChatOverviewService implements ChatOverviewService { var chat = element.doc.data(); if (chat == null) return; - var otherUser = await _userService.getUser( - chat.users.firstWhere( - (element) => element != currentUser?.id, - ), - ); + var otherUser = chat.users.any( + (element) => element != currentUser?.id, + ) + ? await _userService.getUser( + chat.users.firstWhere( + (element) => element != currentUser?.id, + ), + ) + : null; var unread = await _addUnreadChatSubscription(chat.id!, currentUser!.id!); @@ -144,10 +148,10 @@ class FirebaseChatOverviewService implements ChatOverviewService { imageUrl: chat.imageUrl ?? '', unreadMessages: unread, users: users, - lastMessage: chat.lastMessage != null + lastMessage: chat.lastMessage != null && otherUser != null ? chat.lastMessage!.imageUrl == null ? ChatTextMessageModel( - sender: otherUser!, + sender: otherUser, text: chat.lastMessage!.text!, timestamp: DateTime.fromMillisecondsSinceEpoch( chat.lastMessage!.timestamp @@ -155,7 +159,7 @@ class FirebaseChatOverviewService implements ChatOverviewService { ), ) : ChatImageMessageModel( - sender: otherUser!, + sender: otherUser, imageUrl: chat.lastMessage!.imageUrl!, timestamp: DateTime.fromMillisecondsSinceEpoch( chat.lastMessage!.timestamp