diff --git a/src/conversationsadapter.cpp b/src/conversationsadapter.cpp
index 98f39196e4fbdd33d964a69d39e931e5d376fb08..9db145d0013895d25b5995ecc9b3e3fe6b45bbd0 100644
--- a/src/conversationsadapter.cpp
+++ b/src/conversationsadapter.cpp
@@ -116,7 +116,8 @@ ConversationsAdapter::ConversationsAdapter(SystemTray* systemTray,
                 auto& convInfo = lrcInstance_->getConversationFromPeerUri(peerUri, accountId);
                 if (convInfo.uid.isEmpty())
                     return;
-                lrcInstance_->makeConversationPermanent(convInfo.uid, accountId);
+                auto* convModel = lrcInstance_->getAccountInfo(accountId).conversationModel;
+                convModel->acceptConversationRequest(convInfo.uid);
             });
     connect(systemTray_,
             &SystemTray::refusePendingActivated,
@@ -124,8 +125,8 @@ ConversationsAdapter::ConversationsAdapter(SystemTray* systemTray,
                 auto& convInfo = lrcInstance_->getConversationFromPeerUri(peerUri, accountId);
                 if (convInfo.uid.isEmpty())
                     return;
-                lrcInstance_->getAccountInfo(accountId).conversationModel->removeConversation(
-                    convInfo.uid);
+                auto* convModel = lrcInstance_->getAccountInfo(accountId).conversationModel;
+                convModel->removeConversation(convInfo.uid);
             });
 #endif
 }
diff --git a/src/lrcinstance.cpp b/src/lrcinstance.cpp
index f1f07473daba31f95c816ea5af1ceba632d0eeb0..f68c85237ab823554b3b816fa9b480f97ab37113 100644
--- a/src/lrcinstance.cpp
+++ b/src/lrcinstance.cpp
@@ -440,7 +440,7 @@ LRCInstance::makeConversationPermanent(const QString& convId, const QString& acc
     const auto& accInfo = accountModel().getAccountInfo(aId);
     auto cId = convId.isEmpty() ? selectedConvUid_ : convId;
     if (cId.isEmpty()) {
-        qWarning() << Q_FUNC_INFO << "no Id provided";
+        qWarning() << Q_FUNC_INFO << "no conversation to make permanent";
         return;
     }
     accInfo.conversationModel.get()->makePermanent(cId);
diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp
index cd84c91fa69e9355b9d35bc9a9d2b4a1eac8069d..ee1f15d0e3dc83520440946f7d39a28d61eb4fce 100644
--- a/src/messagesadapter.cpp
+++ b/src/messagesadapter.cpp
@@ -715,10 +715,12 @@ MessagesAdapter::contactIsComposing(const QString& contactUri, bool isComposing)
 }
 
 void
-MessagesAdapter::acceptInvitation(const QString& convUid)
+MessagesAdapter::acceptInvitation(const QString& convId)
 {
-    lrcInstance_->makeConversationPermanent(convUid);
-    if (convUid == currentConvUid_)
+    auto conversationId = convId.isEmpty() ? lrcInstance_->get_selectedConvUid() : convId;
+    auto* convModel = lrcInstance_->getCurrentConversationModel();
+    convModel->acceptConversationRequest(conversationId);
+    if (conversationId == currentConvUid_)
         currentConvUid_.clear();
 }