Skip to content

Commit 238cc10

Browse files
committed
ircd::m::rooms: Implement matrix-org/matrix-spec-proposals#3827
1 parent 1a032b2 commit 238cc10

File tree

5 files changed

+18
-0
lines changed

5 files changed

+18
-0
lines changed

include/ircd/m/rooms.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ struct ircd::m::rooms::opts
4848
/// Room alias prefix search
4949
string_view room_alias;
5050

51+
/// Room type search
52+
string_view room_type;
53+
5154
/// user::rooms convenience
5255
id::user user_id;
5356

matrix/rooms.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,10 @@ ircd::m::rooms::for_each(const opts &opts,
138138
if(!join_rule(room, opts.join_rule))
139139
return;
140140

141+
if(opts.room_type)
142+
if(!m::type(room_id, opts.room_type))
143+
return;
144+
141145
if(opts.server && opts.request_node_id && my_host(opts.server))
142146
if(!room::aliases(room_id).has_server(opts.server))
143147
return;

modules/client/publicrooms.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ get__publicrooms(client &client,
134134
opts.lower_bound = true;
135135
opts.room_id = since;
136136
opts.request_user_id = request.user_id;
137+
opts.room_type = json::string{filter["room_type"]};
137138
if(m::valid(m::id::USER, search_term))
138139
opts.user_id = search_term;
139140

modules/client/versions.cc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,4 +241,13 @@ ircd::m::client_versions::append_unstable_features(client &client,
241241
bool(e2ee_forced_trusted_private)
242242
}
243243
};
244+
245+
// Supports filtering of /publicRooms by room type as per MSC3827
246+
json::stack::member
247+
{
248+
out, "org.matrix.msc3827.stable", json::value
249+
{
250+
true
251+
}
252+
};
244253
}

modules/federation/publicrooms.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ handle_get(client &client,
114114
opts.room_id = since;
115115
opts.search_term = search_term;
116116
opts.request_node_id = request.node_id;
117+
opts.room_type = json::string(filter["room_type"]);
117118

118119
size_t count{0};
119120
m::room::id::buf prev_batch_buf;

0 commit comments

Comments
 (0)