fix crash when sending message

-> fix to handle null for getTempMessageForConversation

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2025-07-01 12:21:24 +02:00
parent 99d5fc7d19
commit 74a1c5aeb0
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
2 changed files with 21 additions and 15 deletions

View File

@ -900,14 +900,15 @@ class OfflineFirstChatRepository @Inject constructor(
sendWithoutNotification: Boolean, sendWithoutNotification: Boolean,
referenceId: String referenceId: String
): Flow<Result<ChatMessage?>> { ): Flow<Result<ChatMessage?>> {
val messageToResend = chatDao.getTempMessageForConversation(internalConversationId, referenceId).first() val messageToResend = chatDao.getTempMessageForConversation(internalConversationId, referenceId).firstOrNull()
return if (messageToResend != null) {
messageToResend.sendStatus = SendStatus.PENDING messageToResend.sendStatus = SendStatus.PENDING
chatDao.updateChatMessage(messageToResend) chatDao.updateChatMessage(messageToResend)
val messageToResendModel = messageToResend.asModel() val messageToResendModel = messageToResend.asModel()
_updateMessageFlow.emit(messageToResendModel) _updateMessageFlow.emit(messageToResendModel)
return sendChatMessage( sendChatMessage(
credentials, credentials,
url, url,
message, message,
@ -916,6 +917,11 @@ class OfflineFirstChatRepository @Inject constructor(
sendWithoutNotification, sendWithoutNotification,
referenceId referenceId
) )
} else {
flow {
emit(Result.failure(IllegalStateException("No temporary message found to resend")))
}
}
} }
@Suppress("Detekt.TooGenericExceptionCaught") @Suppress("Detekt.TooGenericExceptionCaught")

View File

@ -72,7 +72,7 @@ interface ChatMessagesDao {
ORDER BY timestamp DESC, id DESC ORDER BY timestamp DESC, id DESC
""" """
) )
fun getTempMessageForConversation(internalConversationId: String, referenceId: String): Flow<ChatMessageEntity> fun getTempMessageForConversation(internalConversationId: String, referenceId: String): Flow<ChatMessageEntity?>
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun upsertChatMessages(chatMessages: List<ChatMessageEntity>) suspend fun upsertChatMessages(chatMessages: List<ChatMessageEntity>)