ircd:Ⓜ️:rooms: Implement matrix-org/matrix-spec-proposals#3827
This commit is contained in:
parent
1a032b28b7
commit
238cc10489
|
@ -48,6 +48,9 @@ struct ircd::m::rooms::opts
|
|||
/// Room alias prefix search
|
||||
string_view room_alias;
|
||||
|
||||
/// Room type search
|
||||
string_view room_type;
|
||||
|
||||
/// user::rooms convenience
|
||||
id::user user_id;
|
||||
|
||||
|
|
|
@ -138,6 +138,10 @@ ircd::m::rooms::for_each(const opts &opts,
|
|||
if(!join_rule(room, opts.join_rule))
|
||||
return;
|
||||
|
||||
if(opts.room_type)
|
||||
if(!m::type(room_id, opts.room_type))
|
||||
return;
|
||||
|
||||
if(opts.server && opts.request_node_id && my_host(opts.server))
|
||||
if(!room::aliases(room_id).has_server(opts.server))
|
||||
return;
|
||||
|
|
|
@ -134,6 +134,7 @@ get__publicrooms(client &client,
|
|||
opts.lower_bound = true;
|
||||
opts.room_id = since;
|
||||
opts.request_user_id = request.user_id;
|
||||
opts.room_type = json::string{filter["room_type"]};
|
||||
if(m::valid(m::id::USER, search_term))
|
||||
opts.user_id = search_term;
|
||||
|
||||
|
|
|
@ -241,4 +241,13 @@ ircd::m::client_versions::append_unstable_features(client &client,
|
|||
bool(e2ee_forced_trusted_private)
|
||||
}
|
||||
};
|
||||
|
||||
// Supports filtering of /publicRooms by room type as per MSC3827
|
||||
json::stack::member
|
||||
{
|
||||
out, "org.matrix.msc3827.stable", json::value
|
||||
{
|
||||
true
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -114,6 +114,7 @@ handle_get(client &client,
|
|||
opts.room_id = since;
|
||||
opts.search_term = search_term;
|
||||
opts.request_node_id = request.node_id;
|
||||
opts.room_type = json::string(filter["room_type"]);
|
||||
|
||||
size_t count{0};
|
||||
m::room::id::buf prev_batch_buf;
|
||||
|
|
Loading…
Reference in New Issue