Remove language filter from home timeline

Previously, the language filter was incorrectly applied to all
`update` messages.  With this change, it is only applied to public
timelines (i.e., the local timeline and the federated timeline) which
is the behavior described in the docs.
This commit is contained in:
Daniel Sockwell 2020-03-19 19:29:50 -04:00
parent 2096e1348b
commit 4f101f4814
1 changed files with 10 additions and 9 deletions

View File

@ -18,7 +18,7 @@
use super::{message::Message, receiver::Receiver};
use crate::{
config,
parse_client_request::user::{PgPool, Subscription},
parse_client_request::user::{PgPool, Stream::Public, Subscription, Timeline},
};
use futures::{
Async::{self, NotReady, Ready},
@ -34,7 +34,6 @@ use uuid::Uuid;
pub struct ClientAgent {
receiver: sync::Arc<sync::Mutex<Receiver>>,
id: uuid::Uuid,
// pub current_timeline: String,
subscription: Subscription,
}
@ -108,13 +107,15 @@ impl futures::stream::Stream for ClientAgent {
use Message::*;
match result {
Ok(Async::Ready(Some(json))) => match Message::from_json(json) {
Update(status) if status.language_not_allowed(allowed_langs) => block,
Update(status) if status.involves_blocked_user(blocked_users) => block,
Update(status) if status.from_blocked_domain(blocked_domains) => block,
Update(status) if status.from_blocking_user(blocking_users) => block,
Update(status) => send(Update(status)),
Notification(notification) => send(Notification(notification)),
Conversation(notification) => send(Conversation(notification)),
Update(status) => match self.subscription.timeline {
_ if status.involves_blocked_user(blocked_users) => block,
_ if status.from_blocked_domain(blocked_domains) => block,
_ if status.from_blocking_user(blocking_users) => block,
Timeline(Public, _, _) if status.language_not_allowed(allowed_langs) => block,
_ => send(Update(status)),
},
Notification(payload) => send(Notification(payload)),
Conversation(payload) => send(Conversation(payload)),
Delete(status_id) => send(Delete(status_id)),
FiltersChanged => send(FiltersChanged),
Announcement(content) => send(Announcement(content)),