diff --git a/src/api/conversationmodel.h b/src/api/conversationmodel.h index 9ac2b50c227507ff52b7c12a6c8b9829b7c57f93..7b4c3236dfe005d1abf4a89e1924985345652b61 100644 --- a/src/api/conversationmodel.h +++ b/src/api/conversationmodel.h @@ -320,12 +320,6 @@ public: * @param conversationId conversation's id */ void acceptConversationRequest(const QString& conversationId); - /** - * decline request for conversation - * @param conversationId conversation's id - * @param banned. Used for non-swarm and one-to-one conversation to remove contact - */ - void declineConversationRequest(const QString& conversationId, bool banned = false); /** * add member to conversation * @param conversationId conversation's id diff --git a/src/conversationmodel.cpp b/src/conversationmodel.cpp index dea57721786a8c9eef7a24c43d9a6bbdd2b7c139..c191ce59de5957de388e78418bbfc5e997f46096 100644 --- a/src/conversationmodel.cpp +++ b/src/conversationmodel.cpp @@ -813,10 +813,10 @@ ConversationModel::removeConversation(const QString& uid, bool banned) return; } if (conversation.isSwarm()) { - ConfigurationManager::instance().removeConversation(owner.id, uid); - pimpl_->eraseConversation(conversationIdx); - pimpl_->invalidateModel(); - emit conversationRemoved(uid); + if (conversation.isRequest) + ConfigurationManager::instance().declineConversationRequest(owner.id, uid); + else + ConfigurationManager::instance().removeConversation(owner.id, uid); // Still some other conversation, do nothing else if (!banned && getConversationForPeerUri(peers.front()) != std::nullopt) @@ -1649,23 +1649,6 @@ ConversationModel::acceptConversationRequest(const QString& conversationId) ConfigurationManager::instance().acceptConversationRequest(owner.id, conversationId); } -void -ConversationModel::declineConversationRequest(const QString& conversationId, bool banned) -{ - auto conversationOpt = getConversationForUid(conversationId); - if (!conversationOpt.has_value()) { - return; - } - auto& conversation = conversationOpt->get(); - // for non-swarm and one-to-one conversation remove contact. - if (conversation.mode == conversation::Mode::ONE_TO_ONE - || conversation.mode == conversation::Mode::NON_SWARM) { - removeConversation(conversationId, banned); - } else { - ConfigurationManager::instance().declineConversationRequest(owner.id, conversationId); - } -} - const VectorString ConversationModel::peersForConversation(const QString& conversationId) { @@ -2560,6 +2543,7 @@ ConversationModelPimpl::slotConversationRemoved(const QString& accountId, auto removeConversation = [&]() { // remove swarm conversation eraseConversation(conversationIndex); + invalidateModel(); Q_EMIT linked.conversationRemoved(conversationId); };