optional arguments for timeline pdus iterations

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk 2024-11-07 04:49:01 +00:00
parent 13ef6dcbcf
commit 1f2e939fd5
6 changed files with 26 additions and 21 deletions

View file

@ -82,7 +82,7 @@ pub(crate) async fn get_context_route(
let events_before: Vec<_> = services
.rooms
.timeline
.pdus_rev(sender_user, room_id, base_token.saturating_sub(1))
.pdus_rev(Some(sender_user), room_id, Some(base_token.saturating_sub(1)))
.await?
.ready_filter_map(|item| event_filter(item, filter))
.filter_map(|item| ignored_filter(&services, item, sender_user))
@ -94,7 +94,7 @@ pub(crate) async fn get_context_route(
let events_after: Vec<_> = services
.rooms
.timeline
.pdus(sender_user, room_id, base_token.saturating_add(1))
.pdus(Some(sender_user), room_id, Some(base_token.saturating_add(1)))
.await?
.ready_filter_map(|item| event_filter(item, filter))
.filter_map(|item| ignored_filter(&services, item, sender_user))

View file

@ -100,14 +100,14 @@ pub(crate) async fn get_message_events_route(
Direction::Forward => services
.rooms
.timeline
.pdus(sender_user, room_id, from)
.pdus(Some(sender_user), room_id, Some(from))
.await?
.boxed(),
Direction::Backward => services
.rooms
.timeline
.pdus_rev(sender_user, room_id, from)
.pdus_rev(Some(sender_user), room_id, Some(from))
.await?
.boxed(),
};

View file

@ -14,7 +14,7 @@ async fn load_timeline(
let last_timeline_count = services
.rooms
.timeline
.last_timeline_count(sender_user, room_id)
.last_timeline_count(Some(sender_user), room_id)
.await?;
if last_timeline_count <= roomsincecount {
@ -24,7 +24,7 @@ async fn load_timeline(
let mut non_timeline_pdus = services
.rooms
.timeline
.pdus_rev(sender_user, room_id, PduCount::max())
.pdus_rev(Some(sender_user), room_id, None)
.await?
.ready_take_while(|(pducount, _)| *pducount > roomsincecount);

View file

@ -6,7 +6,7 @@ use conduit::{
PduCount, Result,
};
use futures::{FutureExt, StreamExt};
use ruma::{api::federation::backfill::get_backfill, uint, user_id, MilliSecondsSinceUnixEpoch};
use ruma::{api::federation::backfill::get_backfill, uint, MilliSecondsSinceUnixEpoch};
use super::AccessCheck;
use crate::Ruma;
@ -51,7 +51,7 @@ pub(crate) async fn get_backfill_route(
let pdus = services
.rooms
.timeline
.pdus_rev(user_id!("@doesntmatter:conduit.rs"), &body.room_id, until)
.pdus_rev(None, &body.room_id, Some(until))
.await?
.take(limit)
.filter_map(|(_, pdu)| async move {