diff --git a/include/ircd/m/user/keys.h b/include/ircd/m/user/keys.h index 198889321..e5d42d475 100644 --- a/include/ircd/m/user/keys.h +++ b/include/ircd/m/user/keys.h @@ -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"); }