diff --git a/src/chat/chat-message/chat-message.cpp b/src/chat/chat-message/chat-message.cpp index aa69c4a38..4f203bf99 100644 --- a/src/chat/chat-message/chat-message.cpp +++ b/src/chat/chat-message/chat-message.cpp @@ -425,15 +425,7 @@ LinphoneReason ChatMessagePrivate::receive () { return reason; } - bool messageToBeStored = false; - for (Content *c : contents) { - if (c->getContentType() == ContentType::FileTransfer || c->getContentType() == ContentType::PlainText) { - messageToBeStored = true; - } - } - if (messageToBeStored) { - store(); - } + store(); return reason; } @@ -552,13 +544,6 @@ void ChatMessagePrivate::send () { } else msgOp->send_message(ContentType::PlainText.asString().c_str(), internalContent.getBodyAsString().c_str()); - bool messageToBeStored = false; - for (Content *c : contents) { - if (c->getContentType() == ContentType::FileTransfer || c->getContentType() == ContentType::PlainText) { - messageToBeStored = true; - } - } - for (Content *content : contents) { // Restore FileContents and remove FileTransferContents if (content->getContentType() == ContentType::FileTransfer) { @@ -571,9 +556,7 @@ void ChatMessagePrivate::send () { q->setImdnMessageId(op->get_call_id()); /* must be known at that time */ - if (messageToBeStored) { - store(); - } + store(); if (call && linphone_call_get_op(call) == op) { /* In this case, chat delivery status is not notified, so unrefing chat message right now */ @@ -591,6 +574,17 @@ void ChatMessagePrivate::send () { void ChatMessagePrivate::store() { L_Q(); + bool messageToBeStored = false; + for (Content *c : contents) { + ContentType contentType = c->getContentType(); + if (contentType == ContentType::FileTransfer || contentType == ContentType::PlainText || contentType.isFile()) { + messageToBeStored = true; + } + } + if (!messageToBeStored) { + return; + } + shared_ptr eventLog = chatEvent.lock(); if (eventLog) { q->getChatRoom()->getCore()->getPrivate()->mainDb->updateEvent(eventLog);