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;
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_self() const;
bool has_cross_user() 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_self(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)
const
{
const auto event_idx
{
user_room.get(std::nothrow, "ircd.cross_signing.user", "")
};
append_keys(out, event_idx, user_room.user.user_id);
return cross(out, "ircd.cross_signing.user");
}
inline void
ircd::m::user::keys::cross_self(json::stack::object &out)
const
{
const auto event_idx
{
user_room.get(std::nothrow, "ircd.cross_signing.self", "")
};
append_keys(out, event_idx, user_room.user.user_id);
return cross(out, "ircd.cross_signing.self");
}
inline void
ircd::m::user::keys::cross_master(json::stack::object &out)
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
{
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);
@ -89,27 +89,38 @@ inline bool
ircd::m::user::keys::has_cross_user()
const
{
return user_room.has("ircd.cross_signing.user", "");
return has_cross("ircd.cross_signing.user");
}
inline bool
ircd::m::user::keys::has_cross_self()
const
{
return user_room.has("ircd.cross_signing.self", "");
return has_cross("ircd.cross_signing.self");
}
inline bool
ircd::m::user::keys::has_cross_master()
const
{
return user_room.has("ircd.cross_signing.master", "");
return has_cross("ircd.cross_signing.master");
}
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 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");
}