Simplify state_cache.user_memberships() masking for callers.
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
@@ -396,9 +396,7 @@ pub fn all_user_memberships<'a>(
|
|||||||
&'a self,
|
&'a self,
|
||||||
user_id: &'a UserId,
|
user_id: &'a UserId,
|
||||||
) -> impl Stream<Item = (MembershipState, &RoomId)> + Send + 'a {
|
) -> impl Stream<Item = (MembershipState, &RoomId)> + Send + 'a {
|
||||||
use MembershipState::*;
|
self.user_memberships(user_id, None)
|
||||||
|
|
||||||
self.user_memberships(user_id, &[Join, Invite, Knock, Leave])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns an iterator over all specified memberships for a user.
|
/// Returns an iterator over all specified memberships for a user.
|
||||||
@@ -407,13 +405,13 @@ pub fn all_user_memberships<'a>(
|
|||||||
pub fn user_memberships<'a>(
|
pub fn user_memberships<'a>(
|
||||||
&'a self,
|
&'a self,
|
||||||
user_id: &'a UserId,
|
user_id: &'a UserId,
|
||||||
filter: &[MembershipState],
|
mask: Option<&[MembershipState]>,
|
||||||
) -> impl Stream<Item = (MembershipState, &RoomId)> + Send + 'a {
|
) -> impl Stream<Item = (MembershipState, &RoomId)> + Send + 'a {
|
||||||
use MembershipState::*;
|
use MembershipState::*;
|
||||||
use futures::stream::select;
|
use futures::stream::select;
|
||||||
|
|
||||||
let joined: OptionFuture<_> = filter
|
let joined: OptionFuture<_> = mask
|
||||||
.contains(&Join)
|
.is_none_or(|mask| mask.contains(&Join))
|
||||||
.then(|| {
|
.then(|| {
|
||||||
self.rooms_joined(user_id)
|
self.rooms_joined(user_id)
|
||||||
.map(|room_id| (Join, room_id))
|
.map(|room_id| (Join, room_id))
|
||||||
@@ -421,8 +419,8 @@ pub fn user_memberships<'a>(
|
|||||||
})
|
})
|
||||||
.into();
|
.into();
|
||||||
|
|
||||||
let invited: OptionFuture<_> = filter
|
let invited: OptionFuture<_> = mask
|
||||||
.contains(&Invite)
|
.is_none_or(|mask| mask.contains(&Invite))
|
||||||
.then(|| {
|
.then(|| {
|
||||||
self.rooms_invited(user_id)
|
self.rooms_invited(user_id)
|
||||||
.map(|room_id| (Invite, room_id))
|
.map(|room_id| (Invite, room_id))
|
||||||
@@ -430,8 +428,8 @@ pub fn user_memberships<'a>(
|
|||||||
})
|
})
|
||||||
.into();
|
.into();
|
||||||
|
|
||||||
let knocked: OptionFuture<_> = filter
|
let knocked: OptionFuture<_> = mask
|
||||||
.contains(&Knock)
|
.is_none_or(|mask| mask.contains(&Knock))
|
||||||
.then(|| {
|
.then(|| {
|
||||||
self.rooms_knocked(user_id)
|
self.rooms_knocked(user_id)
|
||||||
.map(|room_id| (Knock, room_id))
|
.map(|room_id| (Knock, room_id))
|
||||||
@@ -439,8 +437,8 @@ pub fn user_memberships<'a>(
|
|||||||
})
|
})
|
||||||
.into();
|
.into();
|
||||||
|
|
||||||
let left: OptionFuture<_> = filter
|
let left: OptionFuture<_> = mask
|
||||||
.contains(&Leave)
|
.is_none_or(|mask| mask.contains(&Leave))
|
||||||
.then(|| {
|
.then(|| {
|
||||||
self.rooms_left(user_id)
|
self.rooms_left(user_id)
|
||||||
.map(|room_id| (Leave, room_id))
|
.map(|room_id| (Leave, room_id))
|
||||||
|
|||||||
Reference in New Issue
Block a user