From b0ad6c484ee01b0f4a827b3c84783b48ce16b51c Mon Sep 17 00:00:00 2001
From: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
Date: Thu, 29 Dec 2022 10:53:13 -0300
Subject: [PATCH] fix: get last selfmessage Id

Change-Id: Ibd901be120c061d7b726f657a5d51636716acdcc
---
 src/libclient/conversationmodel.cpp         | 8 +++++---
 src/libclient/messagelistmodel.cpp          | 4 ++--
 src/libclient/messagelistmodel.h            | 2 +-
 src/libclient/qtwrapper/videomanager_wrap.h | 4 ++--
 4 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/libclient/conversationmodel.cpp b/src/libclient/conversationmodel.cpp
index bdb79cced..7dac144b0 100644
--- a/src/libclient/conversationmodel.cpp
+++ b/src/libclient/conversationmodel.cpp
@@ -1507,7 +1507,7 @@ ConversationModel::clearInteractionFromConversation(const QString& convId,
                 lastInteractionUpdated = true;
             }
             if (conversation.lastSelfMessageId == interactionId) {
-                conversation.lastSelfMessageId = conversation.interactions->lastSelfMessageId();
+                conversation.lastSelfMessageId = conversation.interactions->lastSelfMessageId(owner.profileInfo.uri);
             }
 
         } catch (const std::out_of_range& e) {
@@ -2488,7 +2488,8 @@ ConversationModelPimpl::slotConversationLoaded(uint32_t requestId,
         }
 
         conversation.lastMessageUid = conversation.interactions->lastMessageUid();
-        conversation.lastSelfMessageId = conversation.interactions->lastSelfMessageId();
+        conversation.lastSelfMessageId = conversation.interactions->lastSelfMessageId(
+            linked.owner.profileInfo.uri);
         if (conversation.lastMessageUid.isEmpty() && !conversation.allMessagesLoaded
             && messages.size() != 0) {
             if (conversation.interactions->size() > 0) {
@@ -2657,7 +2658,8 @@ ConversationModelPimpl::slotMessageReceived(const QString& accountId,
             return;
         }
         conversation.lastMessageUid = conversation.interactions->lastMessageUid();
-        conversation.lastSelfMessageId = conversation.interactions->lastSelfMessageId();
+        conversation.lastSelfMessageId = conversation.interactions->lastSelfMessageId(
+            linked.owner.profileInfo.uri);
         invalidateModel();
         if (!interaction::isOutgoing(msg)) {
             Q_EMIT behaviorController.newUnreadInteraction(linked.owner.id,
diff --git a/src/libclient/messagelistmodel.cpp b/src/libclient/messagelistmodel.cpp
index b657ceaa4..614153bcb 100644
--- a/src/libclient/messagelistmodel.cpp
+++ b/src/libclient/messagelistmodel.cpp
@@ -722,12 +722,12 @@ MessageListModel::lastMessageUid() const
 }
 
 QString
-MessageListModel::lastSelfMessageId() const
+MessageListModel::lastSelfMessageId(const QString& id) const
 {
     for (auto it = interactions_.rbegin(); it != interactions_.rend(); ++it) {
         auto lastType = it->second.type;
         if (lastType == interaction::Type::TEXT and !it->second.body.isEmpty()
-            and it->second.authorUri.isEmpty()) {
+            and (it->second.authorUri.isEmpty() || it->second.authorUri == id)) {
             return it->first;
         }
     }
diff --git a/src/libclient/messagelistmodel.h b/src/libclient/messagelistmodel.h
index 2a86affde..a32a756cb 100644
--- a/src/libclient/messagelistmodel.h
+++ b/src/libclient/messagelistmodel.h
@@ -142,7 +142,7 @@ public:
     void reactToMessage(const QString& msgId, interaction::Info& info);
     QVariantMap convertReactMessagetoQVariant(const QSet<QString>&);
     QString lastMessageUid() const;
-    QString lastSelfMessageId() const;
+    QString lastSelfMessageId(const QString& id) const;
 
     QString findEmojiReaction(const QString& emoji,
                               const QString& authorURI,
diff --git a/src/libclient/qtwrapper/videomanager_wrap.h b/src/libclient/qtwrapper/videomanager_wrap.h
index 1c94126ad..24402596e 100644
--- a/src/libclient/qtwrapper/videomanager_wrap.h
+++ b/src/libclient/qtwrapper/videomanager_wrap.h
@@ -126,14 +126,14 @@ public Q_SLOTS: // METHODS
     QString openVideoInput(const QString& resource)
     {
 #ifdef ENABLE_VIDEO
-        return libjami::openVideoInput(resource.toStdString()).c_str();
+        return libjami::openVideoInput(resource.toLatin1().toStdString()).c_str();
 #endif
     }
 
     void closeVideoInput(const QString& resource)
     {
 #ifdef ENABLE_VIDEO
-        libjami::closeVideoInput(resource.toStdString());
+        libjami::closeVideoInput(resource.toLatin1().toStdString());
 #endif
     }
 
-- 
GitLab