0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-16 08:58:20 +02:00

ircd:Ⓜ️ Additional event/room visibility linkage and preliminary hook.

This commit is contained in:
Jason Volk 2018-05-20 20:15:50 -07:00
parent a66928572b
commit 67b7a58f42
4 changed files with 51 additions and 8 deletions

View file

@ -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,

View file

@ -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);
}
///////////////////////////////////////////////////////////////////////////////

View file

@ -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

View file

@ -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)
{