diff --git a/include/ircd/m/presence.h b/include/ircd/m/presence.h index 70966f63a..6ed331b8e 100644 --- a/include/ircd/m/presence.h +++ b/include/ircd/m/presence.h @@ -38,6 +38,7 @@ struct ircd::m::presence static bool valid_state(const string_view &state); + static bool prefetch(const user &); static event::idx get(std::nothrow_t, const user &); static event::idx get(const user &); diff --git a/matrix/presence.cc b/matrix/presence.cc index 863fdabb8..98b19c467 100644 --- a/matrix/presence.cc +++ b/matrix/presence.cc @@ -148,6 +148,22 @@ ircd::m::presence::get(const std::nothrow_t, return state.get(std::nothrow, "ircd.presence", ""); } +bool +ircd::m::presence::prefetch(const m::user &user) +{ + const m::user::room user_room + { + user + }; + + const m::room::state state + { + user_room + }; + + return state.prefetch("ircd.presence", ""); +} + ircd::m::event::id::buf ircd::m::presence::set(const m::presence &content) {