From 89d58e5243bee00a40f3f66277fb9e673ff39a03 Mon Sep 17 00:00:00 2001 From: ababi <albert.babi@savoirfairelinux.com> Date: Fri, 26 Feb 2021 09:42:33 +0100 Subject: [PATCH] misc: check "default moderators" list when removing contact Avoid having a removed contact on the "default moderators" list. Gitlab: #309 Change-Id: I710fe3e096be830e3cd9cfc93f2f46fb60eb20f0 --- src/messagesadapter.cpp | 23 +++++++++++++++++------ src/messagesadapter.h | 6 +++--- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp index e6f3ee7c7..95f08a566 100644 --- a/src/messagesadapter.cpp +++ b/src/messagesadapter.cpp @@ -693,17 +693,28 @@ MessagesAdapter::blockConversation(const QString& convUid) } void -MessagesAdapter::clearConversationHistory(const QString& accountId, const QString& uid) +MessagesAdapter::clearConversationHistory(const QString& accountId, const QString& convUid) { - lrcInstance_->getAccountInfo(accountId).conversationModel->clearHistory(uid); - if (uid == currentConvUid_) + lrcInstance_->getAccountInfo(accountId).conversationModel->clearHistory(convUid); + if (convUid == currentConvUid_) currentConvUid_.clear(); } void -MessagesAdapter::removeConversation(const QString& accountId, const QString& uid, bool banContact) +MessagesAdapter::removeConversation(const QString& accountId, + const QString& convUid, + bool banContact) { - lrcInstance_->getAccountInfo(accountId).conversationModel->removeConversation(uid, banContact); - if (uid == currentConvUid_) + QStringList list = lrcInstance_->accountModel().getDefaultModerators(accountId); + const auto& convInfo = lrcInstance_->getConversationFromConvUid(convUid, accountId); + const auto contactURI = convInfo.participants.front(); + + if (!contactURI.isEmpty() && list.contains(contactURI)) { + lrcInstance_->accountModel().setDefaultModerator(accountId, contactURI, false); + } + + lrcInstance_->getAccountInfo(accountId).conversationModel->removeConversation(convUid, + banContact); + if (convUid == currentConvUid_) currentConvUid_.clear(); } diff --git a/src/messagesadapter.h b/src/messagesadapter.h index 1d5773a5d..13d0398c2 100644 --- a/src/messagesadapter.h +++ b/src/messagesadapter.h @@ -37,14 +37,14 @@ public: protected: void safeInit() override; - Q_INVOKABLE void setupChatView(const QString& uid); + Q_INVOKABLE void setupChatView(const QString& convUid); Q_INVOKABLE void connectConversationModel(); Q_INVOKABLE void sendContactRequest(); Q_INVOKABLE void updateConversationForAddedContact(); Q_INVOKABLE void removeConversation(const QString& accountId, - const QString& uid, + const QString& convUid, bool banContact = false); - Q_INVOKABLE void clearConversationHistory(const QString& accountId, const QString& uid); + Q_INVOKABLE void clearConversationHistory(const QString& accountId, const QString& convUid); // JS Q_INVOKABLE. Q_INVOKABLE void acceptInvitation(const QString& convUid = ""); -- GitLab