[network/ruqola] src/widgets/room: Fix create discussion

Laurent Montel <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit 0dcda1ba672c7f9d388c8206b72f58c109d9788e by Laurent Montel.
Committed on 10/08/2026 at 05:41.
Pushed by mlaurent into branch 'master'.

Fix create discussion

M  +26   -5    src/widgets/room/roomwidgetbase.cpp

https://invent.kde.org/network/ruqola/-/commit/0dcda1ba672c7f9d388c8206b72f58c109d9788e

diff --git a/src/widgets/room/roomwidgetbase.cpp b/src/widgets/room/roomwidgetbase.cpp
index ef50615aab..4292f26265 100644
--- a/src/widgets/room/roomwidgetbase.cpp
+++ b/src/widgets/room/roomwidgetbase.cpp
@@ -7,6 +7,7 @@
 #include "roomwidgetbase.h"
 
 #include "commandpreviewwidget.h"
+#include "connection.h"
 #include "dialogs/createnewdiscussiondialog.h"
 #include "messagelinewidget.h"
 #include "messagetextedit.h"
@@ -15,7 +16,9 @@
 #include "room.h"
 #include "roomquotemessagewidget.h"
 #include "roomreplythreadwidget.h"
+#include "rooms/roomstartdiscussionjob.h"
 #include "roomutil.h"
+#include "ruqolawidgets_debug.h"
 #include "uploadfilemanager.h"
 #include "uploadfileprogressstatuslistwidget.h"
 
@@ -150,11 +153,29 @@ void RoomWidgetBase::slotShowQuoteMessage(const QString &permalink, const QStrin
 
 void RoomWidgetBase::slotCreateNewDiscussion(const QByteArray &messageId, const QString &originalMessage, const QString &channelName)
 {
-    CreateNewDiscussionDialog dlg(mCurrentRocketChatAccount, this);
-    dlg.setDiscussionName(originalMessage);
-    dlg.setChannelInfo(channelName, mRoomId);
-    dlg.setMessageId(messageId);
-    dlg.exec();
+    QPointer<CreateNewDiscussionDialog> dlg = new CreateNewDiscussionDialog(mCurrentRocketChatAccount, this);
+    dlg->setDiscussionName(originalMessage);
+    dlg->setChannelInfo(channelName, mRoomId);
+    dlg->setMessageId(messageId);
+    if (dlg->exec()) {
+        const CreateNewDiscussionDialog::NewDiscussionInfo info = dlg->newDiscussionInfo();
+        auto job = new RocketChatRestApi::RoomStartDiscussionJob(this);
+        connect(job, &RocketChatRestApi::RoomStartDiscussionJob::startDiscussionDone, this, [this](const QJsonObject &replyObj) {
+            mCurrentRocketChatAccount->extractIdentifier(replyObj, "discussion"_L1, "_id"_L1);
+        });
+        mCurrentRocketChatAccount->restApi()->initializeRestApiJob(job);
+        job->setParentRoomId(info.channelId);
+
+        job->setDiscussionName(info.discussionName);
+        job->setParentMessageId(dlg->messageId());
+        job->setReplyMessage(info.message);
+        job->setUsers(info.users);
+        job->setTopic(info.topic);
+        if (!job->start()) {
+            qCDebug(RUQOLAWIDGETS_LOG) << "Impossible to start RoomStartDiscussionJob";
+        }
+    }
+    delete dlg;
 }
 
 void RoomWidgetBase::slotCreatePrivateDiscussion(const QString &userName)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.