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

ircd:Ⓜ️ Add preliminary skeleton linkage for room/event visibilty related.

This commit is contained in:
Jason Volk 2018-05-18 18:26:21 -07:00
parent 34d1abb062
commit eb5f2475a3
4 changed files with 85 additions and 0 deletions

View file

@ -27,6 +27,10 @@ namespace ircd::m
bool exists(const id::event &);
bool bad(const id::event &, uint64_t &);
bool bad(const id::event &);
bool visible(const event &, const id::user &);
bool visible(const event &, const id::node &);
bool visible(const id::event &, const id::user &);
bool visible(const id::event &, const id::node &);
// Depth comparison; expect unstable sorting.
bool operator<(const event &, const event &);

View file

@ -144,6 +144,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;
room(const id &room_id, const string_view &event_id, const vm::copts *const &opts = nullptr)
:room_id{room_id}

View file

@ -2731,6 +2731,71 @@ ircd::m::exists(const id::room_alias &room_alias,
return function(room_alias, remote_query);
}
///////////////////////////////////////////////////////////////////////////////
//
// m/event.h
//
bool
ircd::m::visible(const event::id &event_id,
const node::id &origin)
{
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, origin);
}
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
ircd::m::visible(const event &event,
const node::id &origin)
{
const m::room room
{
at<"room_id"_>(event), at<"event_id"_>(event)
};
return room.visible(origin);
}
bool
ircd::m::visible(const event &event,
const user::id &user_id)
{
const m::room room
{
at<"room_id"_>(event), at<"event_id"_>(event)
};
return room.visible(user_id);
}
///////////////////////////////////////////////////////////////////////////////
//
// m/txn.h

View file

@ -161,6 +161,20 @@ ircd::m::my(const room &room)
// room
//
bool
ircd::m::room::visible(const m::user::id &user_id)
const
{
return true;
}
bool
ircd::m::room::visible(const m::node::id &origin)
const
{
return true;
}
bool
ircd::m::room::membership(const m::id::user &user_id,
const string_view &membership)