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
|
// misc
|
||||||
bool membership(const m::id::user &, const string_view &membership = "join") const;
|
bool membership(const m::id::user &, const string_view &membership = "join") const;
|
||||||
string_view membership(const mutable_buffer &out, const m::id::user &) const;
|
string_view membership(const mutable_buffer &out, const m::id::user &) const;
|
||||||
bool visible(const id::user &) const;
|
bool visible(const id::user &, const m::event *const & = nullptr) const;
|
||||||
bool visible(const id::node &) const;
|
bool visible(const id::node &, const m::event *const & = nullptr) const;
|
||||||
|
|
||||||
room(const id &room_id,
|
room(const id &room_id,
|
||||||
const string_view &event_id,
|
const string_view &event_id,
|
||||||
|
|
|
@ -2783,7 +2783,7 @@ ircd::m::visible(const event &event,
|
||||||
at<"room_id"_>(event), at<"event_id"_>(event)
|
at<"room_id"_>(event), at<"event_id"_>(event)
|
||||||
};
|
};
|
||||||
|
|
||||||
return room.visible(origin);
|
return room.visible(origin, &event);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -2795,7 +2795,7 @@ ircd::m::visible(const event &event,
|
||||||
at<"room_id"_>(event), at<"event_id"_>(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
|
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
|
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
|
bool
|
||||||
ircd::m::room::visible(const m::node::id &origin)
|
ircd::m::room::visible(const node::id &node_id,
|
||||||
|
const event *const &event_)
|
||||||
const
|
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
|
bool
|
||||||
|
|
|
@ -16,6 +16,33 @@ IRCD_MODULE
|
||||||
"Matrix m.room.history_visibility"
|
"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
|
static void
|
||||||
_changed_visibility(const m::event &event)
|
_changed_visibility(const m::event &event)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue