From b121c4377ba375349e84794569995d0e47b34de2 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Fri, 16 Feb 2018 12:36:30 -0800 Subject: [PATCH] modules/client/rooms: 6.3.5 GET joined_members; minor cleanup. --- modules/client/rooms/members.cc | 42 ++++++++++++++++++++++++++++----- modules/client/rooms/rooms.cc | 3 +++ modules/client/rooms/rooms.h | 5 ++++ 3 files changed, 44 insertions(+), 6 deletions(-) diff --git a/modules/client/rooms/members.cc b/modules/client/rooms/members.cc index c932510b3..3829f18fe 100644 --- a/modules/client/rooms/members.cc +++ b/modules/client/rooms/members.cc @@ -17,14 +17,9 @@ get__members(client &client, const resource::request &request, const m::room::id &room_id) { - const m::room room - { - room_id - }; - const m::room::members members { - room + room_id }; std::vector ret; @@ -43,3 +38,38 @@ get__members(client &client, } }; } + +resource::response +get__joined_members(client &client, + const resource::request &request, + const m::room::id &room_id) +{ + const m::room::members members + { + room_id + }; + + std::vector ret; + ret.reserve(32); + + members.for_each("join", [&ret](const m::event &event) + { + ret.emplace_back(json::member + { + at<"sender"_>(event), at<"content"_>(event) + }); + }); + + const json::strung joined + { + ret.data(), ret.data() + ret.size() + }; + + return resource::response + { + client, json::members + { + { "joined", joined } + } + }; +} diff --git a/modules/client/rooms/rooms.cc b/modules/client/rooms/rooms.cc index 0b4ddd17a..88458cc13 100644 --- a/modules/client/rooms/rooms.cc +++ b/modules/client/rooms/rooms.cc @@ -56,6 +56,9 @@ get_rooms(client &client, const resource::request &request) if(cmd == "members") return get__members(client, request, room_id); + if(cmd == "joined_members") + return get__joined_members(client, request, room_id); + if(cmd == "context") return get__context(client, request, room_id); diff --git a/modules/client/rooms/rooms.h b/modules/client/rooms/rooms.h index 4a940414a..f7e5dd433 100644 --- a/modules/client/rooms/rooms.h +++ b/modules/client/rooms/rooms.h @@ -40,6 +40,11 @@ get__members(ircd::client &client, const ircd::resource::request &request, const ircd::m::room::id &room_id); +ircd::resource::response +get__joined_members(ircd::client &client, + const ircd::resource::request &request, + const ircd::m::room::id &room_id); + /////////////////////////////////////////////////////////////////////////////// // // context.cc