diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp index e6f3ee7c74cd95a8abeb86f2a59dd91ed3568e5a..95f08a566e405c3e7dbf4bf27da37a599a88beec 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 1d5773a5d9b8fe6f3db67b0a8eae5f96d49f5dab..13d0398c2ce0b0281767bb82e2295a2a63858311 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 = "");