From 37b00ed782b03a114aa71a4dbe85d53e727d539b Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Tue, 1 Jul 2025 12:21:24 +0200 Subject: [PATCH] fix crash when sending message -> fix to handle null for getTempMessageForConversation Signed-off-by: Marcel Hibbe --- .../network/OfflineFirstChatRepository.kt | 34 +++++++++++-------- .../talk/data/database/dao/ChatMessagesDao.kt | 2 +- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt b/app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt index 9049f262f..f37ba12c3 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt @@ -900,22 +900,28 @@ class OfflineFirstChatRepository @Inject constructor( sendWithoutNotification: Boolean, referenceId: String ): Flow> { - val messageToResend = chatDao.getTempMessageForConversation(internalConversationId, referenceId).first() - messageToResend.sendStatus = SendStatus.PENDING - chatDao.updateChatMessage(messageToResend) + val messageToResend = chatDao.getTempMessageForConversation(internalConversationId, referenceId).firstOrNull() + return if (messageToResend != null) { + messageToResend.sendStatus = SendStatus.PENDING + chatDao.updateChatMessage(messageToResend) - val messageToResendModel = messageToResend.asModel() - _updateMessageFlow.emit(messageToResendModel) + val messageToResendModel = messageToResend.asModel() + _updateMessageFlow.emit(messageToResendModel) - return sendChatMessage( - credentials, - url, - message, - displayName, - replyTo, - sendWithoutNotification, - referenceId - ) + sendChatMessage( + credentials, + url, + message, + displayName, + replyTo, + sendWithoutNotification, + referenceId + ) + } else { + flow { + emit(Result.failure(IllegalStateException("No temporary message found to resend"))) + } + } } @Suppress("Detekt.TooGenericExceptionCaught") diff --git a/app/src/main/java/com/nextcloud/talk/data/database/dao/ChatMessagesDao.kt b/app/src/main/java/com/nextcloud/talk/data/database/dao/ChatMessagesDao.kt index 3373300de..70a17a0ef 100644 --- a/app/src/main/java/com/nextcloud/talk/data/database/dao/ChatMessagesDao.kt +++ b/app/src/main/java/com/nextcloud/talk/data/database/dao/ChatMessagesDao.kt @@ -72,7 +72,7 @@ interface ChatMessagesDao { ORDER BY timestamp DESC, id DESC """ ) - fun getTempMessageForConversation(internalConversationId: String, referenceId: String): Flow + fun getTempMessageForConversation(internalConversationId: String, referenceId: String): Flow @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun upsertChatMessages(chatMessages: List)