From 9d8d6b4bcaec0994776bf91a556a7e27cb862c30 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Fri, 5 Aug 2022 21:44:40 +0200 Subject: Show a room preview in the join confirmation dialog Requires MSC3266 Fixes #1129 --- src/ui/RoomSummary.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/ui/RoomSummary.cpp (limited to 'src/ui/RoomSummary.cpp') diff --git a/src/ui/RoomSummary.cpp b/src/ui/RoomSummary.cpp new file mode 100644 index 00000000..dc035fe0 --- /dev/null +++ b/src/ui/RoomSummary.cpp @@ -0,0 +1,54 @@ +// SPDX-FileCopyrightText: 2022 Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "RoomSummary.h" + +#include + +#include "ChatPage.h" +#include "MatrixClient.h" + +RoomSummary::RoomSummary(std::string roomIdOrAlias_, + std::vector vias_, + QString r_, + QObject *p) + : QObject(p) + , roomIdOrAlias(std::move(roomIdOrAlias_)) + , vias(std::move(vias_)) + , reason_(std::move(r_)) +{ + auto ctx = std::make_shared(); + + connect(ctx.get(), &RoomSummaryProxy::failed, this, [this]() { + loaded_ = true; + emit loaded(); + }); + connect( + ctx.get(), &RoomSummaryProxy::loaded, this, [this](const mtx::responses::PublicRoom &resp) { + loaded_ = true; + room = resp; + emit loaded(); + }); + + http::client()->get_summary( + roomIdOrAlias, + [proxy = std::move(ctx)](const mtx::responses::PublicRoom &room, mtx::http::RequestErr e) { + if (e) { + emit proxy->failed(); + } else { + emit proxy->loaded(room); + } + }, + vias); +} + +void +RoomSummary::join() +{ + if (isKnockOnly()) + ChatPage::instance()->knockRoom( + QString::fromStdString(roomIdOrAlias), vias, reason_, false, false); + else + ChatPage::instance()->joinRoomVia(roomIdOrAlias, vias, false, reason_); +} -- cgit 1.5.1