diff --git a/linphone-app/src/components/chat-events/ChatMessageModel.cpp b/linphone-app/src/components/chat-events/ChatMessageModel.cpp index 9a4f29adf..026e8493d 100644 --- a/linphone-app/src/components/chat-events/ChatMessageModel.cpp +++ b/linphone-app/src/components/chat-events/ChatMessageModel.cpp @@ -90,7 +90,7 @@ ChatMessageModel::ChatMessageModel ( std::shared_ptr chat mContent = txt; mTimestamp = QDateTime::fromMSecsSinceEpoch(chatMessage->getTime() * 1000); - mReceivedTimestamp = ChatMessageModel::initReceivedTimestamp(chatMessage); + mReceivedTimestamp = ChatMessageModel::initReceivedTimestamp(chatMessage, false); } mWasDownloaded = false; @@ -250,10 +250,10 @@ void ChatMessageModel::updateFileTransferInformation(){ mContentListModel->updateContents(this); } -QDateTime ChatMessageModel::initReceivedTimestamp(const std::shared_ptr &message){ +QDateTime ChatMessageModel::initReceivedTimestamp(const std::shared_ptr &message, bool isNew){ auto appdata = ChatEvent::AppDataManager(QString::fromStdString(message->getAppdata())); if(!appdata.mData.contains("receivedTime")){// Already set : Do not overwrite. - appdata.mData["receivedTime"] = QString::number(QDateTime::currentMSecsSinceEpoch()); + appdata.mData["receivedTime"] = QString::number(isNew ? QDateTime::currentMSecsSinceEpoch() : message->getTime()*1000); qDebug() << "New message received at " << QDateTime::fromMSecsSinceEpoch(appdata.mData["receivedTime"].toLongLong()).toString("yyyy/MM/dd hh:mm:ss.zzz"); message->setAppdata(Utils::appStringToCoreString(appdata.toString())); } diff --git a/linphone-app/src/components/chat-events/ChatMessageModel.hpp b/linphone-app/src/components/chat-events/ChatMessageModel.hpp index 028490da5..3f8a557d9 100644 --- a/linphone-app/src/components/chat-events/ChatMessageModel.hpp +++ b/linphone-app/src/components/chat-events/ChatMessageModel.hpp @@ -113,7 +113,7 @@ public: virtual void deleteEvent() override; void updateFileTransferInformation(); - static QDateTime initReceivedTimestamp(const std::shared_ptr &message); // return received timestamp + static QDateTime initReceivedTimestamp(const std::shared_ptr &message, bool isNew); // return received timestamp // Linphone callbacks void onFileTransferRecv(const std::shared_ptr & message, const std::shared_ptr & content, const std::shared_ptr & buffer) ; diff --git a/linphone-app/src/components/chat-room/ChatRoomModel.cpp b/linphone-app/src/components/chat-room/ChatRoomModel.cpp index 4c0fc5c95..6f9475d7c 100644 --- a/linphone-app/src/components/chat-room/ChatRoomModel.cpp +++ b/linphone-app/src/components/chat-room/ChatRoomModel.cpp @@ -1288,14 +1288,14 @@ void ChatRoomModel::onIsComposingReceived(const std::shared_ptr & chatRoom, const std::shared_ptr & message){ - if(message) ChatMessageModel::initReceivedTimestamp(message); + if(message) ChatMessageModel::initReceivedTimestamp(message, true); setUnreadMessagesCount(chatRoom->getUnreadMessagesCount()); updateLastUpdateTime(); } void ChatRoomModel::onMessagesReceived(const std::shared_ptr & chatRoom, const std::list> & messages){ for(auto message : messages) - if(message) ChatMessageModel::initReceivedTimestamp(message); + if(message) ChatMessageModel::initReceivedTimestamp(message, true); setUnreadMessagesCount(chatRoom->getUnreadMessagesCount()); updateLastUpdateTime(); } @@ -1332,7 +1332,7 @@ void ChatRoomModel::onNewEvents(const std::shared_ptr & chat void ChatRoomModel::onChatMessageReceived(const std::shared_ptr & chatRoom, const std::shared_ptr & eventLog) { auto message = eventLog->getChatMessage(); if(message){ - ChatMessageModel::initReceivedTimestamp(message); + ChatMessageModel::initReceivedTimestamp(message, true); insertMessageAtEnd(message); updateLastUpdateTime(); emit messageReceived(message); @@ -1343,7 +1343,7 @@ void ChatRoomModel::onChatMessagesReceived(const std::shared_ptrgetChatMessage(); if(message){ - ChatMessageModel::initReceivedTimestamp(message); + ChatMessageModel::initReceivedTimestamp(message, true); insertMessageAtEnd(message); updateLastUpdateTime(); emit messageReceived(message); @@ -1354,7 +1354,7 @@ void ChatRoomModel::onChatMessagesReceived(const std::shared_ptr & chatRoom, const std::shared_ptr & eventLog){ auto message = eventLog->getChatMessage(); if(message){ - ChatMessageModel::initReceivedTimestamp(message); + ChatMessageModel::initReceivedTimestamp(message, true); insertMessageAtEnd(message); updateLastUpdateTime(); emit messageReceived(message); diff --git a/linphone-app/src/components/core/CoreHandlers.cpp b/linphone-app/src/components/core/CoreHandlers.cpp index d38eb0b7d..473a8f0fe 100644 --- a/linphone-app/src/components/core/CoreHandlers.cpp +++ b/linphone-app/src/components/core/CoreHandlers.cpp @@ -268,7 +268,7 @@ void CoreHandlers::onMessagesReceived ( appSettings.beginGroup("chatrooms"); for(auto message : messages){ - if(message) ChatMessageModel::initReceivedTimestamp(message); + if(message) ChatMessageModel::initReceivedTimestamp(message, true); if( !message || message->isOutgoing() ) continue; // 1. Do not notify if chat is not activated.