ircd:Ⓜ️:user::keys: Further abstract callstack through type string argument.

This commit is contained in:
Jason Volk 2023-04-27 17:45:19 -07:00
parent bbed809975
commit 0b888b662a
1 changed files with 30 additions and 19 deletions

View File

@ -26,12 +26,14 @@ struct ircd::m::user::keys
bool append_keys(json::stack::object &, const event::idx &, const user::id &) const; bool append_keys(json::stack::object &, const event::idx &, const user::id &) const;
public: public:
bool has_device(const m::id::device &) const; bool has_device(const string_view &) const;
bool has_cross(const string_view &type) const;
bool has_cross_master() const; bool has_cross_master() const;
bool has_cross_self() const; bool has_cross_self() const;
bool has_cross_user() const; bool has_cross_user() const;
void device(json::stack::object &, const string_view &device_id) const; void device(json::stack::object &, const string_view &device_id) const;
void cross(json::stack::object &, const string_view &type) const;
void cross_master(json::stack::object &) const; void cross_master(json::stack::object &) const;
void cross_self(json::stack::object &) const; void cross_self(json::stack::object &) const;
void cross_user(json::stack::object &) const; void cross_user(json::stack::object &) const;
@ -53,33 +55,31 @@ inline void
ircd::m::user::keys::cross_user(json::stack::object &out) ircd::m::user::keys::cross_user(json::stack::object &out)
const const
{ {
const auto event_idx return cross(out, "ircd.cross_signing.user");
{
user_room.get(std::nothrow, "ircd.cross_signing.user", "")
};
append_keys(out, event_idx, user_room.user.user_id);
} }
inline void inline void
ircd::m::user::keys::cross_self(json::stack::object &out) ircd::m::user::keys::cross_self(json::stack::object &out)
const const
{ {
const auto event_idx return cross(out, "ircd.cross_signing.self");
{
user_room.get(std::nothrow, "ircd.cross_signing.self", "")
};
append_keys(out, event_idx, user_room.user.user_id);
} }
inline void inline void
ircd::m::user::keys::cross_master(json::stack::object &out) ircd::m::user::keys::cross_master(json::stack::object &out)
const const
{
return cross(out, "ircd.cross_signing.master");
}
inline void
ircd::m::user::keys::cross(json::stack::object &out,
const string_view &type)
const
{ {
const auto event_idx const auto event_idx
{ {
user_room.get(std::nothrow, "ircd.cross_signing.master", "") user_room.get(std::nothrow, type, "")
}; };
append_keys(out, event_idx, user_room.user.user_id); append_keys(out, event_idx, user_room.user.user_id);
@ -89,27 +89,38 @@ inline bool
ircd::m::user::keys::has_cross_user() ircd::m::user::keys::has_cross_user()
const const
{ {
return user_room.has("ircd.cross_signing.user", ""); return has_cross("ircd.cross_signing.user");
} }
inline bool inline bool
ircd::m::user::keys::has_cross_self() ircd::m::user::keys::has_cross_self()
const const
{ {
return user_room.has("ircd.cross_signing.self", ""); return has_cross("ircd.cross_signing.self");
} }
inline bool inline bool
ircd::m::user::keys::has_cross_master() ircd::m::user::keys::has_cross_master()
const const
{ {
return user_room.has("ircd.cross_signing.master", ""); return has_cross("ircd.cross_signing.master");
} }
inline bool inline bool
ircd::m::user::keys::has_device(const m::id::device &device_id) ircd::m::user::keys::has_cross(const string_view &type)
const const
{ {
const m::user::devices devices{user_room.user}; return user_room.has(type, "");
}
inline bool
ircd::m::user::keys::has_device(const string_view &device_id)
const
{
const m::user::devices devices
{
user_room.user
};
return devices.has(device_id, "keys"); return devices.has(device_id, "keys");
} }