Push relevant channels in Ready payload.
This commit is contained in:
@@ -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 {
|
|||||||
Authenticated,
|
Authenticated,
|
||||||
Ready {
|
Ready {
|
||||||
users: Vec<User>,
|
users: Vec<User>,
|
||||||
|
channels: Vec<Channel>
|
||||||
},
|
},
|
||||||
|
|
||||||
/*MessageCreate {
|
/*MessageCreate {
|
||||||
|
|||||||
@@ -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> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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 })
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user