mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 19:38:09 +00:00
Fix received message time order by setting received time only if new message.
This commit is contained in:
parent
c07eaa23ec
commit
4764bb6cbe
4 changed files with 10 additions and 10 deletions
|
|
@ -90,7 +90,7 @@ ChatMessageModel::ChatMessageModel ( std::shared_ptr<linphone::ChatMessage> 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<linphone::ChatMessage> &message){
|
||||
QDateTime ChatMessageModel::initReceivedTimestamp(const std::shared_ptr<linphone::ChatMessage> &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()));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ public:
|
|||
|
||||
virtual void deleteEvent() override;
|
||||
void updateFileTransferInformation();
|
||||
static QDateTime initReceivedTimestamp(const std::shared_ptr<linphone::ChatMessage> &message); // return received timestamp
|
||||
static QDateTime initReceivedTimestamp(const std::shared_ptr<linphone::ChatMessage> &message, bool isNew); // return received timestamp
|
||||
|
||||
// Linphone callbacks
|
||||
void onFileTransferRecv(const std::shared_ptr<linphone::ChatMessage> & message, const std::shared_ptr<linphone::Content> & content, const std::shared_ptr<const linphone::Buffer> & buffer) ;
|
||||
|
|
|
|||
|
|
@ -1288,14 +1288,14 @@ void ChatRoomModel::onIsComposingReceived(const std::shared_ptr<linphone::ChatRo
|
|||
}
|
||||
|
||||
void ChatRoomModel::onMessageReceived(const std::shared_ptr<linphone::ChatRoom> & chatRoom, const std::shared_ptr<linphone::ChatMessage> & message){
|
||||
if(message) ChatMessageModel::initReceivedTimestamp(message);
|
||||
if(message) ChatMessageModel::initReceivedTimestamp(message, true);
|
||||
setUnreadMessagesCount(chatRoom->getUnreadMessagesCount());
|
||||
updateLastUpdateTime();
|
||||
}
|
||||
|
||||
void ChatRoomModel::onMessagesReceived(const std::shared_ptr<linphone::ChatRoom> & chatRoom, const std::list<std::shared_ptr<linphone::ChatMessage>> & 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<linphone::ChatRoom> & chat
|
|||
void ChatRoomModel::onChatMessageReceived(const std::shared_ptr<linphone::ChatRoom> & chatRoom, const std::shared_ptr<const linphone::EventLog> & 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_ptr<linphone::ChatR
|
|||
for(auto eventLog : eventLogs){
|
||||
auto message = eventLog->getChatMessage();
|
||||
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<linphone::ChatR
|
|||
void ChatRoomModel::onChatMessageSending(const std::shared_ptr<linphone::ChatRoom> & chatRoom, const std::shared_ptr<const linphone::EventLog> & eventLog){
|
||||
auto message = eventLog->getChatMessage();
|
||||
if(message){
|
||||
ChatMessageModel::initReceivedTimestamp(message);
|
||||
ChatMessageModel::initReceivedTimestamp(message, true);
|
||||
insertMessageAtEnd(message);
|
||||
updateLastUpdateTime();
|
||||
emit messageReceived(message);
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue