summary refs log tree commit diff
path: root/src/ui
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2022-09-20 21:26:28 +0200
committerNicolas Werner <nicolas.werner@hotmail.de>2022-09-20 21:26:46 +0200
commit421b15c05c605c8f4adc63433b00e37d56ac9da8 (patch)
tree47d1c7e745b07bda4fe17fe8b4348b1d08265e0e /src/ui
parentMerge pull request #1189 from Bubu/patch-1 (diff)
downloadnheko-421b15c05c605c8f4adc63433b00e37d56ac9da8.tar.xz
Show the community of a room
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/RoomSummary.cpp43
-rw-r--r--src/ui/RoomSummary.h1
2 files changed, 44 insertions, 0 deletions
diff --git a/src/ui/RoomSummary.cpp b/src/ui/RoomSummary.cpp

index da2a547c..6623da10 100644 --- a/src/ui/RoomSummary.cpp +++ b/src/ui/RoomSummary.cpp
@@ -6,6 +6,7 @@ #include <QMetaType> +#include "Cache.h" #include "ChatPage.h" #include "MatrixClient.h" @@ -18,6 +19,38 @@ RoomSummary::RoomSummary(std::string roomIdOrAlias_, , vias(std::move(vias_)) , reason_(std::move(r_)) { + if (roomIdOrAlias.empty()) + return; + + if (roomIdOrAlias[0] == '!') { + auto temp = cache::singleRoomInfo(roomIdOrAlias); + + if (temp.member_count) { + mtx::responses::PublicRoom newInfo{}; + // newInfo.aliases; + // newInfo.canonical_alias = ""; + newInfo.name = temp.name; + newInfo.room_id = roomIdOrAlias; + newInfo.topic = temp.topic; + newInfo.num_joined_members = temp.member_count; + // newInfo.world_readable; + newInfo.guest_can_join = temp.guest_access; + newInfo.avatar_url = temp.avatar_url; + + newInfo.join_rule = temp.join_rule; + newInfo.room_type = temp.is_space ? mtx::events::state::room_type::space : ""; + newInfo.room_version = temp.version; + newInfo.membership = mtx::events::state::Membership::Join; + // newInfo.encryption; + + this->room = std::move(newInfo); + loaded_ = true; + return; + } + + // newInfo.encryption; + } + auto ctx = std::make_shared<RoomSummaryProxy>(); connect(ctx.get(), &RoomSummaryProxy::failed, this, [this]() { @@ -52,3 +85,13 @@ RoomSummary::join() else ChatPage::instance()->joinRoomVia(roomIdOrAlias, vias, false, reason_); } + +void +RoomSummary::promptJoin() +{ + if (isKnockOnly()) + ChatPage::instance()->knockRoom( + QString::fromStdString(roomIdOrAlias), vias, reason_, false, true); + else + ChatPage::instance()->joinRoomVia(roomIdOrAlias, vias, true, reason_); +} diff --git a/src/ui/RoomSummary.h b/src/ui/RoomSummary.h
index 416a4867..f5085054 100644 --- a/src/ui/RoomSummary.h +++ b/src/ui/RoomSummary.h
@@ -69,6 +69,7 @@ public: bool isLoaded() const { return room.has_value() || loaded_; } Q_INVOKABLE void join(); + Q_INVOKABLE void promptJoin(); signals: void loaded();