0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-09-26 18:38:52 +02:00

ircd:Ⓜ️ Rework visibility interface for empty mxid's as part of a public test.

This commit is contained in:
Jason Volk 2018-05-31 04:21:54 -07:00
parent 5d471b51b8
commit 6671122997
5 changed files with 17 additions and 73 deletions

View file

@ -145,8 +145,7 @@ 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 m::event *const & = nullptr) const; bool visible(const string_view &mxid, const m::event *const & = nullptr) 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,

View file

@ -13,8 +13,9 @@
namespace ircd::m namespace ircd::m
{ {
bool visible(const event &, const id::user &); // The mxid argument is a string_view because it may be empty when no
bool visible(const event &, const id::node &); // authentication is supplied (m::id cannot be empty because that's
bool visible(const id::event &, const id::user &); // considered an invalid mxid). In that case the test is for public vis.
bool visible(const id::event &, const id::node &); bool visible(const event &, const string_view &mxid);
bool visible(const id::event &, const string_view &mxid);
} }

View file

@ -931,7 +931,7 @@ ircd::m::keys::init::signing()
bool bool
ircd::m::visible(const event::id &event_id, ircd::m::visible(const event::id &event_id,
const node::id &origin) const string_view &mxid)
{ {
m::room::id::buf room_id m::room::id::buf room_id
{ {
@ -944,53 +944,21 @@ ircd::m::visible(const event::id &event_id,
{ "room_id", room_id } { "room_id", room_id }
}; };
return visible(event, origin); return visible(event, mxid);
}
bool
ircd::m::visible(const event::id &event_id,
const user::id &user_id)
{
m::room::id::buf room_id
{
get(event_id, "room_id", room_id)
};
const m::event event
{
{ "event_id", event_id },
{ "room_id", room_id }
};
return visible(event, user_id);
} }
bool bool
ircd::m::visible(const event &event, ircd::m::visible(const event &event,
const node::id &origin) const string_view &mxid)
{ {
using prototype = bool (const m::event &, const node &); using prototype = bool (const m::event &, const string_view &);
static import<prototype> function static import<prototype> function
{ {
"m_room_history_visibility", "visible__node" "m_room_history_visibility", "visible"
}; };
return function(event, origin); return function(event, mxid);
}
bool
ircd::m::visible(const event &event,
const user::id &user_id)
{
using prototype = bool (const m::event &, const user &);
static import<prototype> function
{
"m_room_history_visibility", "visible__user"
};
return function(event, user_id);
} }
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////

View file

@ -162,12 +162,12 @@ ircd::m::my(const room &room)
// //
bool bool
ircd::m::room::visible(const user::id &user_id, ircd::m::room::visible(const string_view &mxid,
const event *const &event) const event *const &event)
const const
{ {
if(event) if(event)
return m::visible(*event, user_id); return m::visible(*event, mxid);
const m::event event_ const m::event event_
{ {
@ -175,24 +175,7 @@ const
{ "room_id", room_id }, { "room_id", room_id },
}; };
return m::visible(event_, user_id); return m::visible(event_, mxid);
}
bool
ircd::m::room::visible(const node::id &node_id,
const event *const &event)
const
{
if(event)
return m::visible(*event, node_id);
const m::event event_
{
{ "event_id", event_id },
{ "room_id", room_id },
};
return m::visible(event_, node_id);
} }
bool bool

View file

@ -28,15 +28,8 @@ ircd::m::visible_hook
}; };
extern "C" bool extern "C" bool
visible__user(const m::event &event, visible(const m::event &event,
const m::user &user) const string_view &mxid)
{
return true;
}
extern "C" bool
visible__node(const m::event &event,
const m::node &node)
{ {
return true; return true;
} }