From 536d96abb46517e4711645cff3e07aff96ebb0a3 Mon Sep 17 00:00:00 2001 From: timedout Date: Thu, 8 Oct 2026 19:02:59 +0100 Subject: [PATCH] fix: Apply ignore filtering to peeking route Reviewed-By: Jade Ellis --- src/api/client/room/initial_sync.rs | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/api/client/room/initial_sync.rs b/src/api/client/room/initial_sync.rs index 807753389..9ae8dd73f 100644 --- a/src/api/client/room/initial_sync.rs +++ b/src/api/client/room/initial_sync.rs @@ -2,15 +2,21 @@ use conduwuit::{ Err, Event, Result, at, debug_warn, result::LogErr, - utils::{BoolExt, stream::TryTools}, + utils::{ + BoolExt, + stream::{TryIgnore, WidebandExt}, + }, }; -use futures::{FutureExt, TryStreamExt, future::try_join4}; +use futures::{FutureExt, StreamExt, TryStreamExt, future::try_join4}; use ruma::{ api::client::peeking::get_current_state::v3::{PaginationChunk, Request, Response}, assign, }; -use crate::Ruma; +use crate::{ + Ruma, + client::{ignored_filter, visibility_filter}, +}; const LIMIT_MAX: usize = 100; @@ -52,8 +58,11 @@ pub(crate) async fn room_initial_sync_route( .rooms .timeline .pdus_rev(room_id, None) - .try_take(limit) - .and_then(async |mut pdu| { + .ignore_err() + .wide_filter_map(|item| ignored_filter(&services, item, sender_user)) + .wide_filter_map(|item| visibility_filter(&services, item, sender_user)) + .take(limit) + .wide_then(async |mut pdu| { let ctx = services .rooms .timeline @@ -77,6 +86,10 @@ pub(crate) async fn room_initial_sync_route( .boxed() .await?; + if events.is_empty() { + return Ok(Response::new(room_id.to_owned())); + } + let end = events .first() .map(at!(0))