mirror of
https://github.com/matrix-construct/construct
synced 2024-09-27 11:18:51 +02:00
ircd:Ⓜ️ Additional event/room visibility linkage and preliminary hook.
This commit is contained in:
parent
a66928572b
commit
67b7a58f42
4 changed files with 51 additions and 8 deletions
|
@ -145,8 +145,8 @@ struct ircd::m::room
|
|||
// misc
|
||||
bool membership(const m::id::user &, const string_view &membership = "join") const;
|
||||
string_view membership(const mutable_buffer &out, const m::id::user &) const;
|
||||
bool visible(const id::user &) const;
|
||||
bool visible(const id::node &) const;
|
||||
bool visible(const id::user &, const m::event *const & = nullptr) const;
|
||||
bool visible(const id::node &, const m::event *const & = nullptr) const;
|
||||
|
||||
room(const id &room_id,
|
||||
const string_view &event_id,
|
||||
|
|
|
@ -2783,7 +2783,7 @@ ircd::m::visible(const event &event,
|
|||
at<"room_id"_>(event), at<"event_id"_>(event)
|
||||
};
|
||||
|
||||
return room.visible(origin);
|
||||
return room.visible(origin, &event);
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -2795,7 +2795,7 @@ ircd::m::visible(const event &event,
|
|||
at<"room_id"_>(event), at<"event_id"_>(event)
|
||||
};
|
||||
|
||||
return room.visible(user_id);
|
||||
return room.visible(user_id, &event);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -162,17 +162,33 @@ ircd::m::my(const room &room)
|
|||
//
|
||||
|
||||
bool
|
||||
ircd::m::room::visible(const m::user::id &user_id)
|
||||
ircd::m::room::visible(const user::id &user_id,
|
||||
const event *const &event_)
|
||||
const
|
||||
{
|
||||
return true;
|
||||
using prototype = bool (const room &, const user &, const event *const &);
|
||||
|
||||
static import<prototype> function
|
||||
{
|
||||
"m_room_history_visibility", "visible__user"
|
||||
};
|
||||
|
||||
return function(*this, user_id, event_);
|
||||
}
|
||||
|
||||
bool
|
||||
ircd::m::room::visible(const m::node::id &origin)
|
||||
ircd::m::room::visible(const node::id &node_id,
|
||||
const event *const &event_)
|
||||
const
|
||||
{
|
||||
return true;
|
||||
using prototype = bool (const room &, const node &, const event *const &);
|
||||
|
||||
static import<prototype> function
|
||||
{
|
||||
"m_room_history_visibility", "visible__node"
|
||||
};
|
||||
|
||||
return function(*this, node_id, event_);
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
@ -16,6 +16,33 @@ IRCD_MODULE
|
|||
"Matrix m.room.history_visibility"
|
||||
};
|
||||
|
||||
namespace ircd::m
|
||||
{
|
||||
extern hook::site visible_hook;
|
||||
}
|
||||
|
||||
decltype(ircd::m::visible_hook)
|
||||
ircd::m::visible_hook
|
||||
{
|
||||
{ "name", "m.event.visible" }
|
||||
};
|
||||
|
||||
extern "C" bool
|
||||
_visible__user(const m::room &room,
|
||||
const m::user &user,
|
||||
const m::event *const &event)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
extern "C" bool
|
||||
_visible__node(const m::room &room,
|
||||
const m::node &node,
|
||||
const m::event *const &event)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
static void
|
||||
_changed_visibility(const m::event &event)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue