mirror of
https://github.com/matrix-construct/construct
synced 2024-12-27 07:54:05 +01:00
ircd:Ⓜ️ Add state_filter w/ related m::name strings.
This commit is contained in:
parent
a3ca9a986b
commit
6644161140
4 changed files with 41 additions and 1 deletions
|
@ -17,6 +17,7 @@ namespace ircd::m
|
||||||
struct room_filter;
|
struct room_filter;
|
||||||
struct event_filter;
|
struct event_filter;
|
||||||
struct room_event_filter;
|
struct room_event_filter;
|
||||||
|
struct state_filter;
|
||||||
|
|
||||||
bool match(const event_filter &, const event &);
|
bool match(const event_filter &, const event &);
|
||||||
bool match(const room_event_filter &, const event &);
|
bool match(const room_event_filter &, const event &);
|
||||||
|
@ -59,13 +60,35 @@ struct ircd::m::room_event_filter
|
||||||
using super_type::operator=;
|
using super_type::operator=;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// "StateFilter"
|
||||||
|
struct ircd::m::state_filter
|
||||||
|
:json::tuple
|
||||||
|
<
|
||||||
|
json::property<name::limit, long>,
|
||||||
|
json::property<name::types, json::array>,
|
||||||
|
json::property<name::rooms, json::array>,
|
||||||
|
json::property<name::senders, json::array>,
|
||||||
|
json::property<name::not_types, json::array>,
|
||||||
|
json::property<name::not_rooms, json::array>,
|
||||||
|
json::property<name::not_senders, json::array>,
|
||||||
|
json::property<name::contains_url, bool>,
|
||||||
|
json::property<name::lazy_load_members, bool>,
|
||||||
|
json::property<name::include_redundant_members, bool>
|
||||||
|
>
|
||||||
|
{
|
||||||
|
using super_type::tuple;
|
||||||
|
state_filter(const mutable_buffer &, const json::members &);
|
||||||
|
state_filter() = default;
|
||||||
|
using super_type::operator=;
|
||||||
|
};
|
||||||
|
|
||||||
/// 5.1 "RoomFilter"
|
/// 5.1 "RoomFilter"
|
||||||
struct ircd::m::room_filter
|
struct ircd::m::room_filter
|
||||||
:json::tuple
|
:json::tuple
|
||||||
<
|
<
|
||||||
json::property<name::rooms, json::array>,
|
json::property<name::rooms, json::array>,
|
||||||
json::property<name::not_rooms, json::array>,
|
json::property<name::not_rooms, json::array>,
|
||||||
json::property<name::state, room_event_filter>,
|
json::property<name::state, state_filter>,
|
||||||
json::property<name::timeline, room_event_filter>,
|
json::property<name::timeline, room_event_filter>,
|
||||||
json::property<name::ephemeral, room_event_filter>,
|
json::property<name::ephemeral, room_event_filter>,
|
||||||
json::property<name::account_data, room_event_filter>,
|
json::property<name::account_data, room_event_filter>,
|
||||||
|
|
|
@ -93,6 +93,8 @@ struct ircd::m::name
|
||||||
static constexpr const char *const not_senders {"not_senders"};
|
static constexpr const char *const not_senders {"not_senders"};
|
||||||
static constexpr const char *const limit {"limit"};
|
static constexpr const char *const limit {"limit"};
|
||||||
static constexpr const char *const contains_url {"contains_url"};
|
static constexpr const char *const contains_url {"contains_url"};
|
||||||
|
static constexpr const char *const lazy_load_members {"lazy_load_members"};
|
||||||
|
static constexpr const char *const include_redundant_members {"include_redundant_members"};
|
||||||
|
|
||||||
static constexpr const char *const edu_type {"edu_type"};
|
static constexpr const char *const edu_type {"edu_type"};
|
||||||
|
|
||||||
|
|
13
ircd/m.cc
13
ircd/m.cc
|
@ -2429,6 +2429,19 @@ ircd::m::room_filter::room_filter(const mutable_buffer &buf,
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// state_filter
|
||||||
|
//
|
||||||
|
|
||||||
|
ircd::m::state_filter::state_filter(const mutable_buffer &buf,
|
||||||
|
const json::members &members)
|
||||||
|
:super_type::tuple
|
||||||
|
{
|
||||||
|
json::stringify(mutable_buffer{buf}, members)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// room_event_filter
|
// room_event_filter
|
||||||
//
|
//
|
||||||
|
|
|
@ -72,6 +72,8 @@ constexpr const char *const ircd::m::name::senders;
|
||||||
constexpr const char *const ircd::m::name::not_senders;
|
constexpr const char *const ircd::m::name::not_senders;
|
||||||
constexpr const char *const ircd::m::name::limit;
|
constexpr const char *const ircd::m::name::limit;
|
||||||
constexpr const char *const ircd::m::name::contains_url;
|
constexpr const char *const ircd::m::name::contains_url;
|
||||||
|
constexpr const char *const ircd::m::name::lazy_load_members;
|
||||||
|
constexpr const char *const ircd::m::name::include_redundant_members;
|
||||||
|
|
||||||
constexpr const char *const ircd::m::name::edu_type;
|
constexpr const char *const ircd::m::name::edu_type;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue