Skip to content
Snippets Groups Projects
Commit 15357008 authored by insert's avatar insert
Browse files

Push relevant channels in Ready payload.

parent 124aa8a9
No related merge requests found
Pipeline #478 passed with stage
in 2 minutes and 34 seconds
...@@ -2,4 +2,3 @@ pub mod reference; ...@@ -2,4 +2,3 @@ pub mod reference;
pub mod user; pub mod user;
pub use reference::Ref; pub use reference::Ref;
// pub use user::*;
...@@ -33,6 +33,7 @@ pub enum ClientboundNotification { ...@@ -33,6 +33,7 @@ pub enum ClientboundNotification {
Authenticated, Authenticated,
Ready { Ready {
users: Vec<User>, users: Vec<User>,
channels: Vec<Channel>
}, },
/*MessageCreate { /*MessageCreate {
......
...@@ -4,10 +4,7 @@ use crate::{ ...@@ -4,10 +4,7 @@ use crate::{
util::result::{Error, Result}, util::result::{Error, Result},
}; };
use futures::StreamExt; use futures::StreamExt;
use mongodb::{ use mongodb::{bson::{Bson, doc, from_bson}, options::FindOptions};
bson::{doc, from_bson, Bson},
options::FindOptions,
};
use super::websocket::is_online; use super::websocket::is_online;
...@@ -61,8 +58,48 @@ pub async fn generate_ready(mut user: User) -> Result<ClientboundNotification> { ...@@ -61,8 +58,48 @@ pub async fn generate_ready(mut user: User) -> Result<ClientboundNotification> {
} }
} }
user.online = Some(is_online(&user.id)); let mut cursor = get_collection("channels")
.find(
doc! {
"$or": [
{
"type": "SavedMessages",
"user": &user.id
},
{
"type": "DirectMessage",
"recipients": &user.id,
"active": true
},
{
"type": "Group",
"recipients": &user.id
}
]
},
None
)
.await
.map_err(|_| Error::DatabaseError {
operation: "find",
with: "channels",
})?;
let mut channels = vec![];
while let Some(result) = cursor.next().await {
if let Ok(doc) = result {
channels.push(
from_bson(Bson::Document(doc))
.map_err(|_| Error::DatabaseError {
operation: "from_bson",
with: "channel",
})?
);
}
}
user.online = Some(true);
users.push(user); users.push(user);
Ok(ClientboundNotification::Ready { users }) Ok(ClientboundNotification::Ready { users, channels })
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment