diff --git a/src/calladapter.cpp b/src/calladapter.cpp
index d3e5f363edaeb004545bb7b7c3e9d08990c9bfa1..346b8cc500ec7ba4642437269536197e9cf7dcdd 100644
--- a/src/calladapter.cpp
+++ b/src/calladapter.cpp
@@ -723,8 +723,8 @@ CallAdapter::setModerator(const QString& uri, const bool state)
 }
 
 void
-CallAdapter::muteParticipant(const QString& uri, const bool state) {
-
+CallAdapter::muteParticipant(const QString& uri, const bool state)
+{
     auto* callModel = LRCInstance::getAccountInfo(accountId_).callModel.get();
     auto* convModel = LRCInstance::getCurrentConversationModel();
     const auto conversation = convModel->getConversationForUID(LRCInstance::getCurrentConvUid());
@@ -760,29 +760,19 @@ CallAdapter::isMuted(const QString& uri) const
     return false;
 }
 
-bool
-CallAdapter::isCurrentMuted() const
+void
+CallAdapter::hangupParticipant(const QString& uri)
 {
+    auto* callModel = LRCInstance::getAccountInfo(accountId_).callModel.get();
     auto* convModel = LRCInstance::getCurrentConversationModel();
-    const auto convInfo = convModel->getConversationForUID(convUid_);
-    if (!convInfo.uid.isEmpty()) {
-        auto* callModel = LRCInstance::getAccountInfo(accountId_).callModel.get();
-        try {
-            auto call = callModel->getCall(convInfo.callId);
-            if (call.participantsInfos.size() == 0) {
-                return false;
-            } else {
-                auto& accInfo = LRCInstance::accountModel().getAccountInfo(accountId_);
-                for (const auto& participant : call.participantsInfos) {
-                    if (participant["uri"] == accInfo.profileInfo.uri)
-                        return participant["audioMuted"] == "true";
-                }
-            }
-            return false;
-        } catch (...) {
-        }
-    }
-    return true;
+    const auto conversation = convModel->getConversationForUID(LRCInstance::getCurrentConvUid());
+    auto confId = conversation.confId;
+    if (confId.isEmpty())
+        confId = conversation.callId;
+    try {
+        const auto call = callModel->getCall(confId);
+        callModel->hangupParticipant(confId, uri);
+    } catch (...) {}
 }
 
 void
diff --git a/src/calladapter.h b/src/calladapter.h
index f33e6679b8924f026a81260ed38a9b4a53f77bad..4c59cfe742ee270d38eb2a25130601055034c014 100644
--- a/src/calladapter.h
+++ b/src/calladapter.h
@@ -69,7 +69,7 @@ public:
     Q_INVOKABLE QVariantList getConferencesInfos();
     Q_INVOKABLE void muteParticipant(const QString& uri, const bool state);
     Q_INVOKABLE bool isMuted(const QString& uri) const;
-    Q_INVOKABLE bool isCurrentMuted() const;
+    Q_INVOKABLE void hangupParticipant(const QString& uri);
 
 signals:
     void callStatusChanged(int index, const QString& accountId, const QString& convUid);
diff --git a/src/mainview/components/ParticipantOverlayMenu.qml b/src/mainview/components/ParticipantOverlayMenu.qml
index 3383abb384e0f22c19f113f9d9155e53cd5a61ba..21536158e6fc36c9c7b1693f0a54cf18869de45e 100644
--- a/src/mainview/components/ParticipantOverlayMenu.qml
+++ b/src/mainview/components/ParticipantOverlayMenu.qml
@@ -249,7 +249,7 @@ Rectangle {
                     source: "qrc:/images/icons/ic_block_24px.svg"
                     imageColor: hovered? JamiTheme.darkGreyColor
                                        : JamiTheme.whiteColor
-                    onClicked: CallAdapter.hangupCall(uri)
+                    onClicked: CallAdapter.hangupParticipant(uri)
                     onHoveredChanged: hangupParticipantToolTip.visible = hovered
 
                     Text {