Introduce OptionFuture helpers
Optimize user directory searches
This commit is contained in:
@@ -1,7 +1,4 @@
|
||||
use futures::{
|
||||
FutureExt, TryFutureExt, TryStreamExt,
|
||||
future::{OptionFuture, try_join5},
|
||||
};
|
||||
use futures::{FutureExt, TryFutureExt, TryStreamExt, future::try_join5};
|
||||
use ruma::{CanonicalJsonObject, EventId, RoomId, ServerName, UserId, events::StateEventType};
|
||||
use tuwunel_core::{
|
||||
Err, Result, debug,
|
||||
@@ -9,7 +6,7 @@ use tuwunel_core::{
|
||||
err, implement,
|
||||
matrix::{Event, room_version},
|
||||
trace,
|
||||
utils::stream::IterStream,
|
||||
utils::{BoolExt, stream::IterStream},
|
||||
warn,
|
||||
};
|
||||
|
||||
@@ -83,11 +80,10 @@ pub async fn handle_incoming_pdu<'a>(
|
||||
.try_into()
|
||||
.map_err(|e| err!(Request(InvalidParam("PDU does not have a valid sender key: {e}"))))?;
|
||||
|
||||
let sender_acl_check: OptionFuture<_> = sender
|
||||
let sender_acl_check = sender
|
||||
.server_name()
|
||||
.ne(origin)
|
||||
.then(|| self.acl_check(sender.server_name(), room_id))
|
||||
.into();
|
||||
.then_async(|| self.acl_check(sender.server_name(), room_id));
|
||||
|
||||
// Fetch create event
|
||||
let create_event =
|
||||
|
||||
@@ -3,16 +3,16 @@ use std::{
|
||||
iter::{Iterator, once},
|
||||
};
|
||||
|
||||
use futures::{
|
||||
FutureExt, StreamExt, TryFutureExt, TryStreamExt,
|
||||
future::{OptionFuture, try_join},
|
||||
};
|
||||
use futures::{FutureExt, StreamExt, TryFutureExt, TryStreamExt, future::try_join};
|
||||
use ruma::{OwnedEventId, RoomId, RoomVersionId};
|
||||
use tuwunel_core::{
|
||||
Result, apply, err, implement,
|
||||
matrix::{Event, StateMap, state_res::AuthSet},
|
||||
ref_at, trace,
|
||||
utils::stream::{BroadbandExt, IterStream, ReadyExt, TryBroadbandExt, TryWidebandExt},
|
||||
utils::{
|
||||
option::OptionExt,
|
||||
stream::{BroadbandExt, IterStream, ReadyExt, TryBroadbandExt, TryWidebandExt},
|
||||
},
|
||||
};
|
||||
|
||||
use crate::rooms::short::ShortStateHash;
|
||||
@@ -174,16 +174,15 @@ async fn state_at_incoming_fork<Pdu>(
|
||||
where
|
||||
Pdu: Event,
|
||||
{
|
||||
let leaf: OptionFuture<_> = prev_event
|
||||
let leaf = prev_event
|
||||
.state_key()
|
||||
.map(async |state_key| {
|
||||
.map_async(async |state_key| {
|
||||
self.services
|
||||
.short
|
||||
.get_or_create_shortstatekey(&prev_event.kind().to_cow_str().into(), state_key)
|
||||
.map(|shortstatekey| once((shortstatekey, prev_event.event_id().to_owned())))
|
||||
.await
|
||||
})
|
||||
.into();
|
||||
});
|
||||
|
||||
let leaf_state_after_event: Vec<_> = self
|
||||
.services
|
||||
|
||||
Reference in New Issue
Block a user