Merge remote-tracking branch 'origin/main' into livekit

This commit is contained in:
Zomatree
2025-06-02 02:11:51 +01:00
parent 48e0b48ea9
commit ea1c165d80
89 changed files with 1662 additions and 1651 deletions

View File

@@ -103,6 +103,18 @@ impl State {
let user = self.clone_user();
self.cache.is_bot = user.bot.is_some();
// Fetch pending policy changes.
let policy_changes = if user.bot.is_some() {
vec![]
} else {
db.fetch_policy_changes()
.await?
.into_iter()
.filter(|policy| policy.created_time > user.last_acknowledged_policy_change)
.map(Into::into)
.collect()
};
// Find all relationships to the user.
let mut user_ids: HashSet<String> = user
.relations
@@ -178,7 +190,7 @@ impl State {
.iter()
.find(|e| matches!(e, ReadyPayloadFields::UserSettings(_)))
{
Some(db.fetch_user_settings(&user.id, &keys).await?)
Some(db.fetch_user_settings(&user.id, keys).await?)
} else {
None
};
@@ -202,12 +214,11 @@ impl State {
.collect();
// Make all users appear from our perspective.
let mut users: Vec<v0::User> = join_all(users
.into_iter()
.map(|other_user| async {
let is_online = online_ids.contains(&other_user.id);
other_user.into_known(&user, is_online).await
})).await;
let mut users: Vec<v0::User> = join_all(users.into_iter().map(|other_user| async {
let is_online = online_ids.contains(&other_user.id);
other_user.into_known(&user, is_online).await
}))
.await;
// Make sure we see our own user correctly.
users.push(user.into_self(true).await);
@@ -273,6 +284,8 @@ impl State {
user_settings,
channel_unreads: channel_unreads.map(|vec| vec.into_iter().map(Into::into).collect()),
policy_changes,
})
}

View File

@@ -3,7 +3,7 @@ use std::{collections::HashSet, net::SocketAddr, sync::Arc};
use async_tungstenite::WebSocketStream;
use authifier::AuthifierEvent;
use fred::{
error::{RedisError, RedisErrorKind},
error::RedisErrorKind,
interfaces::{ClientLike, EventInterface, PubsubInterface},
types::RedisConfig,
};