From ec7fd6d2586e658400d94f593d1de4c8bae24608 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 23 Nov 2017 16:42:20 +0100 Subject: [PATCH] Store ChatMessage in db after sending and upon reception --- src/chat/chat-message/chat-message-p.h | 2 ++ src/chat/chat-message/chat-message.cpp | 15 +++++++++++++-- src/core/core.h | 2 ++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/chat/chat-message/chat-message-p.h b/src/chat/chat-message/chat-message-p.h index 92e33a994..6095df842 100644 --- a/src/chat/chat-message/chat-message-p.h +++ b/src/chat/chat-message/chat-message-p.h @@ -121,6 +121,8 @@ public: LinphoneReason receive(); void send(); + void store(); + private: // TODO: Clean attributes. unsigned int storageId = 0; diff --git a/src/chat/chat-message/chat-message.cpp b/src/chat/chat-message/chat-message.cpp index fbed81566..8b286dcaa 100644 --- a/src/chat/chat-message/chat-message.cpp +++ b/src/chat/chat-message/chat-message.cpp @@ -35,6 +35,8 @@ #include "content/file-content.h" #include "content/content.h" #include "core/core.h" +#include "core/core-p.h" +#include "event-log/conference/conference-chat-message-event.h" #include "logger/logger.h" #include "chat/notification/imdn.h" @@ -428,8 +430,9 @@ LinphoneReason ChatMessagePrivate::receive () { messageToBeStored = true; } } - if (messageToBeStored) - q->store(); + if (messageToBeStored) { + store(); + } return reason; } @@ -560,6 +563,8 @@ void ChatMessagePrivate::send () { q->setImdnMessageId(op->get_call_id()); /* must be known at that time */ + store(); + if (call && linphone_call_get_op(call) == op) { /* In this case, chat delivery status is not notified, so unrefing chat message right now */ /* Might be better fixed by delivering status, but too costly for now */ @@ -573,6 +578,12 @@ void ChatMessagePrivate::send () { } } +void ChatMessagePrivate::store() { + L_Q(); + shared_ptr eventLog = make_shared(time, q->getSharedFromThis()); + q->getChatRoom()->getCore()->getPrivate()->mainDb->addEvent(eventLog); +} + // ----------------------------------------------------------------------------- ChatMessage::ChatMessage (const shared_ptr &chatRoom, ChatMessage::Direction direction) : diff --git a/src/core/core.h b/src/core/core.h index 283615bb8..3291e27ca 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -32,12 +32,14 @@ LINPHONE_BEGIN_NAMESPACE class Address; class ChatRoom; +class ChatMessagePrivate; class ChatRoomId; class CorePrivate; class IdentityAddress; class LINPHONE_PUBLIC Core : public Object { friend class ChatRoom; + friend class ChatMessagePrivate; friend class ClientGroupChatRoom; friend class LocalConferenceEventHandlerPrivate; friend class MainDb;