diff --git a/src/database/key_value/rooms/edus/presence.rs b/src/database/key_value/rooms/edus/presence.rs index 7a48559b..5c49b95a 100644 --- a/src/database/key_value/rooms/edus/presence.rs +++ b/src/database/key_value/rooms/edus/presence.rs @@ -13,7 +13,8 @@ use tokio::{sync::mpsc, time::sleep}; use crate::{ database::KeyValueDatabase, - service, services, utils, + service::{self, rooms::edus::presence::PresenceIter}, + services, utils, utils::{millis_since_unix_epoch, u64_from_bytes}, Error, Result, }; @@ -148,11 +149,7 @@ impl service::rooms::edus::presence::Data for KeyValueDatabase { .transpose() } - fn presence_since<'a>( - &'a self, - room_id: &RoomId, - since: u64, - ) -> Result + 'a>> { + fn presence_since<'a>(&'a self, room_id: &RoomId, since: u64) -> Result> { let user_timestamp: HashMap = self .userid_presenceupdate .iter() diff --git a/src/service/rooms/edus/presence/data.rs b/src/service/rooms/edus/presence/data.rs index 138258cd..2dd78b6f 100644 --- a/src/service/rooms/edus/presence/data.rs +++ b/src/service/rooms/edus/presence/data.rs @@ -2,6 +2,8 @@ use crate::Result; use ruma::{events::presence::PresenceEvent, OwnedUserId, RoomId, UserId}; use tokio::sync::mpsc; +use super::PresenceIter; + pub trait Data: Send + Sync { /// Adds a presence event which will be saved until a new event replaces it. /// @@ -34,11 +36,7 @@ pub trait Data: Send + Sync { ) -> Result>; /// Returns the most recent presence updates that happened after the event with id `since`. - fn presence_since<'a>( - &'a self, - room_id: &RoomId, - since: u64, - ) -> Result + 'a>>; + fn presence_since<'a>(&'a self, room_id: &RoomId, since: u64) -> Result>; fn presence_maintain(&self, timer_receiver: mpsc::UnboundedReceiver) -> Result<()>; diff --git a/src/service/rooms/edus/presence/mod.rs b/src/service/rooms/edus/presence/mod.rs index a4099e80..38e0f022 100644 --- a/src/service/rooms/edus/presence/mod.rs +++ b/src/service/rooms/edus/presence/mod.rs @@ -6,6 +6,8 @@ use tokio::sync::mpsc; use crate::{services, Error, Result}; +pub(crate) type PresenceIter<'a> = Box + 'a>; + pub struct Service { pub db: &'static dyn Data, @@ -99,11 +101,7 @@ impl Service { /// Returns the most recent presence updates that happened after the event with id `since`. #[tracing::instrument(skip(self, since, room_id))] - pub fn presence_since( - &self, - room_id: &RoomId, - since: u64, - ) -> Result>> { + pub fn presence_since<'a>(&'a self, room_id: &RoomId, since: u64) -> Result> { if !services().globals.allow_presence() { return Ok(Box::new(std::iter::empty())); }