diff --git a/src/database/channel.rs b/src/database/channel.rs index 4f5695b736be9351c6c23b63003eb52c1ecb4a34..bc696b5c046ac1ff1ca9590100bc17ab31b2404c 100644 --- a/src/database/channel.rs +++ b/src/database/channel.rs @@ -170,7 +170,7 @@ impl<'r> FromParam<'r> for Channel { } } -use crate::notifications::events::Notification; +/*use crate::notifications::events::Notification; pub fn process_event(event: &Notification) { match event { @@ -212,4 +212,4 @@ pub fn process_event(event: &Notification) { } _ => {} } -} +}*/ diff --git a/src/database/guild.rs b/src/database/guild.rs index 3edde9c42adf9e459756f79a9b2d8b4e5bd943ea..1b48f5254dd65f4c073a48247a8708dbdfccd023 100644 --- a/src/database/guild.rs +++ b/src/database/guild.rs @@ -306,7 +306,7 @@ pub fn get_invite<U: Into<Option<String>>>( } } -use crate::notifications::events::Notification; +/*use crate::notifications::events::Notification; pub fn process_event(event: &Notification) { match event { @@ -335,4 +335,4 @@ pub fn process_event(event: &Notification) { } _ => {} } -} +}*/ diff --git a/src/database/message.rs b/src/database/message.rs index 688365ff41267e787b72a580f1673a8f10137797..06a704cfa27e523afec4603211599bf1d1c2ef4b 100644 --- a/src/database/message.rs +++ b/src/database/message.rs @@ -1,8 +1,5 @@ use super::get_collection; use crate::database::channel::Channel; -use crate::notifications; -use crate::notifications::events::message::Create; -use crate::notifications::events::Notification; use crate::pubsub::hive; use crate::routes::channel::ChannelType; @@ -43,7 +40,7 @@ impl Message { .insert_one(to_bson(&self).unwrap().as_document().unwrap().clone(), None) .is_ok() { - notifications::send_message_given_channel( + /*notifications::send_message_given_channel( Notification::message_create(Create { id: self.id.clone(), nonce: self.nonce.clone(), @@ -52,7 +49,7 @@ impl Message { content: self.content.clone(), }), &target, - ); + );*/ if hive::publish( &target.id, diff --git a/src/database/user.rs b/src/database/user.rs index 26b938c965cc84871a178374f1bcc1b8b8e2349a..4bc362916063464e1c48b57840832121ac77383d 100644 --- a/src/database/user.rs +++ b/src/database/user.rs @@ -272,9 +272,7 @@ impl<'r> FromParam<'r> for User { } } -use crate::notifications::events::Notification; - -pub fn process_event(event: &Notification) { +/*pub fn process_event(event: &Notification) { match event { Notification::user_friend_status(ev) => { let mut cache = CACHE.lock().unwrap(); @@ -297,4 +295,4 @@ pub fn process_event(event: &Notification) { } _ => {} } -} +}*/ diff --git a/src/main.rs b/src/main.rs index d47bb69aa8b453dee8eab0b185d1aada400e222b..ff0efd9a386439b3aa60e793f0703fb167365aac 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,14 +10,12 @@ extern crate bitfield; extern crate lazy_static; pub mod database; -pub mod notifications; pub mod pubsub; pub mod routes; pub mod util; use log::info; use rocket_cors::AllowedOrigins; -use std::thread; fn main() { dotenv::dotenv().ok(); @@ -28,19 +26,6 @@ fn main() { util::variables::preflight_checks(); database::connect(); - // ! START OLD NOTIF CODE - notifications::start_worker(); - - thread::spawn(|| { - notifications::pubsub::launch_subscriber(); - }); - - notifications::state::init(); - /*thread::spawn(|| { - notifications::ws::launch_server(); - });*/ - // ! END OLD NOTIF CODE - pubsub::hive::init_hive(); pubsub::websocket::launch_server(); diff --git a/src/notifications/events/groups.rs b/src/notifications/events/groups.rs deleted file mode 100644 index 876f13d163faa0a0b8545a6196301038926fb064..0000000000000000000000000000000000000000 --- a/src/notifications/events/groups.rs +++ /dev/null @@ -1,13 +0,0 @@ -use serde::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct UserJoin { - pub id: String, - pub user: String, -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct UserLeave { - pub id: String, - pub user: String, -} diff --git a/src/notifications/events/guilds.rs b/src/notifications/events/guilds.rs deleted file mode 100644 index 3b1b95d2052ca750b17aa1f89d6b7151e8c31acb..0000000000000000000000000000000000000000 --- a/src/notifications/events/guilds.rs +++ /dev/null @@ -1,33 +0,0 @@ -use serde::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct UserJoin { - pub id: String, - pub user: String, -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct UserLeave { - pub id: String, - pub user: String, - pub banned: bool, -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct ChannelCreate { - pub id: String, - pub channel: String, - pub name: String, - pub description: String, -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct ChannelDelete { - pub id: String, - pub channel: String, -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct Delete { - pub id: String, -} diff --git a/src/notifications/events/message.rs b/src/notifications/events/message.rs deleted file mode 100644 index ffec878984282a769efff93bee04a98c3ddea214..0000000000000000000000000000000000000000 --- a/src/notifications/events/message.rs +++ /dev/null @@ -1,23 +0,0 @@ -use serde::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct Create { - pub id: String, - pub nonce: Option<String>, - pub channel: String, - pub author: String, - pub content: String, -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct Edit { - pub id: String, - pub channel: String, - pub author: String, - pub content: String, -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct Delete { - pub id: String, -} diff --git a/src/notifications/events/mod.rs b/src/notifications/events/mod.rs deleted file mode 100644 index d05111d203391f42ca7f99f85ec154df97d48d3f..0000000000000000000000000000000000000000 --- a/src/notifications/events/mod.rs +++ /dev/null @@ -1,47 +0,0 @@ -use serde::{Deserialize, Serialize}; -use serde_json::{json, Value}; - -pub mod groups; -pub mod guilds; -pub mod message; -pub mod users; - -#[allow(non_camel_case_types)] -#[derive(Serialize, Deserialize, Debug, Clone)] -pub enum Notification { - message_create(message::Create), - message_edit(message::Edit), - message_delete(message::Delete), - group_user_join(groups::UserJoin), - group_user_leave(groups::UserLeave), - guild_user_join(guilds::UserJoin), - guild_user_leave(guilds::UserLeave), - guild_channel_create(guilds::ChannelCreate), - guild_channel_delete(guilds::ChannelDelete), - guild_delete(guilds::Delete), - user_friend_status(users::FriendStatus), -} - -impl Notification { - pub fn serialize(self) -> String { - if let Value::Object(obj) = json!(self) { - let (key, value) = obj.iter().next().unwrap(); - - if let Value::Object(data) = value { - let mut data = data.clone(); - data.insert("type".to_string(), Value::String(key.to_string())); - json!(data).to_string() - } else { - unreachable!() - } - } else { - unreachable!() - } - } - - pub fn push_to_cache(&self) { - crate::database::channel::process_event(&self); - crate::database::guild::process_event(&self); - crate::database::user::process_event(&self); - } -} diff --git a/src/notifications/events/users.rs b/src/notifications/events/users.rs deleted file mode 100644 index 7a23446e295c3e76534c9a69a1a1d31b9436ae67..0000000000000000000000000000000000000000 --- a/src/notifications/events/users.rs +++ /dev/null @@ -1,8 +0,0 @@ -use serde::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct FriendStatus { - pub id: String, - pub user: String, - pub status: i32, -} diff --git a/src/notifications/mod.rs b/src/notifications/mod.rs deleted file mode 100644 index abc77236add0abd101fd44856a2853fe67220682..0000000000000000000000000000000000000000 --- a/src/notifications/mod.rs +++ /dev/null @@ -1,76 +0,0 @@ -use crate::database::channel::Channel; - -use once_cell::sync::OnceCell; -use std::sync::mpsc::{channel, Sender}; -use std::thread; - -pub mod events; -pub mod pubsub; -pub mod state; -pub mod ws; - -pub fn send_message<U: Into<Option<Vec<String>>>, G: Into<Option<String>>>( - users: U, - guild: G, - data: events::Notification, -) -> bool { - let users = users.into(); - let guild = guild.into(); - - data.push_to_cache(); - - if pubsub::send_message(users.clone(), guild.clone(), data.clone()) { - state::send_message(users, guild, data.serialize()); - - true - } else { - false - } -} - -struct NotificationArguments { - users: Option<Vec<String>>, - guild: Option<String>, - data: events::Notification, -} - -static mut SENDER: OnceCell<Sender<NotificationArguments>> = OnceCell::new(); - -pub fn start_worker() { - let (sender, receiver) = channel(); - unsafe { - SENDER.set(sender).unwrap(); - } - - thread::spawn(move || { - while let Ok(data) = receiver.recv() { - send_message(data.users, data.guild, data.data); - } - }); -} - -pub fn send_message_threaded<U: Into<Option<Vec<String>>>, G: Into<Option<String>>>( - users: U, - guild: G, - data: events::Notification, -) -> bool { - unsafe { - SENDER - .get() - .unwrap() - .send(NotificationArguments { - users: users.into(), - guild: guild.into(), - data, - }) - .is_ok() - } -} - -pub fn send_message_given_channel(data: events::Notification, channel: &Channel) { - match channel.channel_type { - 0..=1 => send_message_threaded(channel.recipients.clone(), None, data), - 2 => send_message_threaded(None, channel.guild.clone(), data), - _ => unreachable!(), - }; -} diff --git a/src/notifications/pubsub.rs b/src/notifications/pubsub.rs deleted file mode 100644 index 6f944530fb256aaa44503fd449f3f5ee9d754981..0000000000000000000000000000000000000000 --- a/src/notifications/pubsub.rs +++ /dev/null @@ -1,102 +0,0 @@ -use super::events::Notification; -use crate::database::get_collection; - -use mongodb::bson::{doc, from_bson, to_bson, Bson}; -use mongodb::options::{CursorType, FindOneOptions, FindOptions}; -use serde::{Deserialize, Serialize}; -use std::time::Duration; -use ulid::Ulid; - -use once_cell::sync::OnceCell; -static SOURCEID: OnceCell<String> = OnceCell::new(); - -#[derive(Serialize, Deserialize, Debug)] -pub struct PubSubMessage { - #[serde(rename = "_id")] - id: String, - source: String, - - user_recipients: Option<Vec<String>>, - target_guild: Option<String>, - data: Notification, -} - -pub fn send_message(users: Option<Vec<String>>, guild: Option<String>, data: Notification) -> bool { - let message = PubSubMessage { - id: Ulid::new().to_string(), - source: SOURCEID.get().unwrap().to_string(), - user_recipients: users.into(), - target_guild: guild.into(), - data, - }; - - if get_collection("pubsub") - .insert_one( - to_bson(&message) - .expect("Failed to serialize pubsub message.") - .as_document() - .expect("Failed to convert to a document.") - .clone(), - None, - ) - .is_ok() - { - true - } else { - false - } -} - -pub fn launch_subscriber() { - let source = Ulid::new().to_string(); - SOURCEID - .set(source.clone()) - .expect("Failed to create and set source ID."); - - let pubsub = get_collection("pubsub"); - if let Ok(result) = pubsub.find_one( - doc! {}, - FindOneOptions::builder().sort(doc! { "_id": -1 }).build(), - ) { - let query = if let Some(doc) = result { - doc! { "_id": { "$gt": doc.get_str("_id").unwrap() } } - } else { - doc! {} - }; - - if let Ok(mut cursor) = pubsub.find( - query, - FindOptions::builder() - .cursor_type(CursorType::TailableAwait) - .no_cursor_timeout(true) - .max_await_time(Duration::from_secs(1200)) - .build(), - ) { - loop { - while let Some(item) = cursor.next() { - if let Ok(doc) = item { - if let Ok(message) = - from_bson(Bson::Document(doc)) as Result<PubSubMessage, _> - { - if &message.source != &source { - super::state::send_message( - message.user_recipients, - message.target_guild, - message.data.serialize(), - ); - } - } else { - eprintln!("Failed to deserialize pubsub message."); - } - } else { - eprintln!("Failed to unwrap a document from pubsub."); - } - } - } - } else { - eprintln!("Failed to open subscriber cursor."); - } - } else { - eprintln!("Failed to fetch latest document from pubsub collection."); - } -} diff --git a/src/notifications/state.rs b/src/notifications/state.rs deleted file mode 100644 index cfa1a3f2552c5af91e20c3d34e98b77a052b2b4e..0000000000000000000000000000000000000000 --- a/src/notifications/state.rs +++ /dev/null @@ -1,199 +0,0 @@ -use crate::database; -use crate::util::vec_to_set; - -use hashbrown::{HashMap, HashSet}; -use mongodb::bson::doc; -use mongodb::options::FindOneOptions; -use once_cell::sync::OnceCell; -use std::sync::RwLock; -use ws::Sender; - -pub enum StateResult { - DatabaseError, - InvalidToken, - Success(String), -} - -static CONNECTIONS: OnceCell<RwLock<HashMap<String, Sender>>> = OnceCell::new(); - -pub fn add_connection(id: String, sender: Sender) { - CONNECTIONS - .get() - .unwrap() - .write() - .unwrap() - .insert(id, sender); -} - -pub struct User { - connections: HashSet<String>, - guilds: HashSet<String>, -} - -impl User { - pub fn new() -> User { - User { - connections: HashSet::new(), - guilds: HashSet::new(), - } - } -} - -pub struct Guild { - users: HashSet<String>, -} - -impl Guild { - pub fn new() -> Guild { - Guild { - users: HashSet::new(), - } - } -} - -pub struct GlobalState { - users: HashMap<String, User>, - guilds: HashMap<String, Guild>, -} - -impl GlobalState { - pub fn new() -> GlobalState { - GlobalState { - users: HashMap::new(), - guilds: HashMap::new(), - } - } - - pub fn push_to_guild(&mut self, guild: String, user: String) { - if !self.guilds.contains_key(&guild) { - self.guilds.insert(guild.clone(), Guild::new()); - } - - self.guilds.get_mut(&guild).unwrap().users.insert(user); - } - - pub fn try_authenticate(&mut self, connection: String, access_token: String) -> StateResult { - if let Ok(result) = database::get_collection("users").find_one( - doc! { - "access_token": access_token, - }, - FindOneOptions::builder() - .projection(doc! { "_id": 1 }) - .build(), - ) { - if let Some(user) = result { - let user_id = user.get_str("_id").unwrap(); - - if self.users.contains_key(user_id) { - self.users - .get_mut(user_id) - .unwrap() - .connections - .insert(connection); - - return StateResult::Success(user_id.to_string()); - } - - if let Ok(results) = - database::get_collection("members").find(doc! { "_id.user": &user_id }, None) - { - let mut guilds = vec![]; - for result in results { - if let Ok(entry) = result { - guilds.push( - entry - .get_document("_id") - .unwrap() - .get_str("guild") - .unwrap() - .to_string(), - ); - } - } - - let mut user = User::new(); - for guild in guilds { - user.guilds.insert(guild.clone()); - self.push_to_guild(guild, user_id.to_string()); - } - - user.connections.insert(connection); - self.users.insert(user_id.to_string(), user); - - StateResult::Success(user_id.to_string()) - } else { - StateResult::DatabaseError - } - } else { - StateResult::InvalidToken - } - } else { - StateResult::DatabaseError - } - } - - pub fn disconnect<U: Into<Option<String>>>(&mut self, user_id: U, connection: String) { - if let Some(user_id) = user_id.into() { - let user = self.users.get_mut(&user_id).unwrap(); - user.connections.remove(&connection); - - if user.connections.len() == 0 { - for guild in &user.guilds { - self.guilds.get_mut(guild).unwrap().users.remove(&user_id); - } - - self.users.remove(&user_id); - } - } - - CONNECTIONS - .get() - .unwrap() - .write() - .unwrap() - .remove(&connection); - } -} - -pub static DATA: OnceCell<RwLock<GlobalState>> = OnceCell::new(); - -pub fn init() { - if CONNECTIONS.set(RwLock::new(HashMap::new())).is_err() { - panic!("Failed to set global connections map."); - } - - if DATA.set(RwLock::new(GlobalState::new())).is_err() { - panic!("Failed to set global state."); - } -} - -pub fn send_message(users: Option<Vec<String>>, guild: Option<String>, data: String) { - let state = DATA.get().unwrap().read().unwrap(); - let mut connections = HashSet::new(); - - let mut users = vec_to_set(&users.unwrap_or(vec![])); - if let Some(guild) = guild { - if let Some(entry) = state.guilds.get(&guild) { - for user in &entry.users { - users.insert(user.to_string()); - } - } - } - - for user in users { - if let Some(entry) = state.users.get(&user) { - for connection in &entry.connections { - connections.insert(connection.clone()); - } - } - } - - let targets = CONNECTIONS.get().unwrap().read().unwrap(); - for conn in connections { - if let Some(sender) = targets.get(&conn) { - if sender.send(data.clone()).is_err() { - eprintln!("Failed to send a notification to a websocket. [{}]", &conn); - } - } - } -} diff --git a/src/notifications/ws.rs b/src/notifications/ws.rs deleted file mode 100644 index 22740959d56cc88d05d36a6b5ef50b406b8f92e6..0000000000000000000000000000000000000000 --- a/src/notifications/ws.rs +++ /dev/null @@ -1,135 +0,0 @@ -use super::state::{self, StateResult}; -use crate::util::variables::WS_HOST; - -use serde_json::{from_str, json, Value}; -use ulid::Ulid; -use ws::{listen, CloseCode, Error, Handler, Handshake, Message, Result, Sender}; - -struct Server { - sender: Sender, - user_id: Option<String>, - id: String, -} - -impl Handler for Server { - fn on_open(&mut self, _: Handshake) -> Result<()> { - state::add_connection(self.id.clone(), self.sender.clone()); - Ok(()) - } - - fn on_message(&mut self, msg: Message) -> Result<()> { - if let Message::Text(text) = msg { - if let Ok(data) = from_str(&text) as std::result::Result<Value, _> { - if let Value::String(packet_type) = &data["type"] { - if packet_type == "authenticate" { - if self.user_id.is_some() { - self.sender.send( - json!({ - "type": "authenticate", - "success": false, - "error": "Already authenticated!" - }) - .to_string(), - ) - } else if let Value::String(token) = &data["token"] { - let mut state = unsafe { state::DATA.get().unwrap().write().unwrap() }; - - match state.try_authenticate(self.id.clone(), token.to_string()) { - StateResult::Success(user_id) => { - let user = crate::database::user::fetch_user(&user_id) - .unwrap() - .unwrap(); - self.user_id = Some(user_id); - - self.sender.send( - json!({ - "type": "authenticate", - "success": true, - }) - .to_string(), - )?; - - if let Ok(payload) = user.create_payload() { - self.sender.send( - json!({ - "type": "ready", - "data": payload - }) - .to_string(), - ) - } else { - // ! TODO: FIXME: ALL THE NOTIFICATIONS CODE NEEDS TO BE - // ! RESTRUCTURED, IT IS UTTER GARBAGE. :))))) - - Ok(()) - } - } - StateResult::DatabaseError => self.sender.send( - json!({ - "type": "authenticate", - "success": false, - "error": "Had database error." - }) - .to_string(), - ), - StateResult::InvalidToken => self.sender.send( - json!({ - "type": "authenticate", - "success": false, - "error": "Invalid token." - }) - .to_string(), - ), - } - } else { - self.sender.send( - json!({ - "type": "authenticate", - "success": false, - "error": "Token not present." - }) - .to_string(), - ) - } - } else { - Ok(()) - } - } else { - Ok(()) - } - } else { - Ok(()) - } - } else { - Ok(()) - } - } - - fn on_close(&mut self, _code: CloseCode, _reason: &str) { - unsafe { - state::DATA - .get() - .unwrap() - .write() - .unwrap() - .disconnect(self.user_id.clone(), self.id.clone()); - } - - println!("User disconnected. [{}]", self.id); - } - - fn on_error(&mut self, err: Error) { - println!("The server encountered an error: {:?}", err); - } -} - -pub fn launch_server() { - state::init(); - - listen(WS_HOST.to_string(), |sender| Server { - sender, - user_id: None, - id: Ulid::new().to_string(), - }) - .unwrap() -} diff --git a/src/pubsub/events/mod.rs b/src/pubsub/events/mod.rs index 597502b3f8102f8af090f335f5bfe0336f494c64..0769eafcd1441f3ffda1d843f3541c2b169d1414 100644 --- a/src/pubsub/events/mod.rs +++ b/src/pubsub/events/mod.rs @@ -7,7 +7,7 @@ pub mod users; #[allow(non_camel_case_types)] #[derive(Serialize, Deserialize, Debug, Clone)] -#[serde(tag = "type", content = "data")] +#[serde(tag = "type")] pub enum Notification { message_create(message::Create), message_edit(message::Edit), diff --git a/src/pubsub/websocket/client.rs b/src/pubsub/websocket/client.rs index 2a491704bf13c9ca3c7879ba24fe9e24711ff1a3..c3fc469e5c418700d898cb6982b52f756f0c57b3 100644 --- a/src/pubsub/websocket/client.rs +++ b/src/pubsub/websocket/client.rs @@ -104,6 +104,7 @@ impl Handler for Client { } if let Err(err) = hive::subscribe(self.user_id.as_ref().unwrap().clone(), ids) { + error!("Failed to subscribe someone to the Hive! {}", err); self.sender.send( json!({ "type": "warn", diff --git a/src/routes/channel.rs b/src/routes/channel.rs index f4a1707953eb5dfd804203dec37a635dfd5d3d6e..85952dd5a8275321a64e33989054fc1635e87528 100644 --- a/src/routes/channel.rs +++ b/src/routes/channel.rs @@ -3,10 +3,6 @@ use crate::database::{ self, channel::Channel, get_relationship, get_relationship_internal, message::Message, user::User, Permission, PermissionCalculator, Relationship, }; -use crate::notifications::{ - self, - events::{groups::*, guilds::ChannelDelete, message::*, Notification}, -}; use crate::util::vec_to_set; use chrono::prelude::*; @@ -180,13 +176,13 @@ pub fn add_member(user: User, target: Channel, member: User) -> Option<Response> }) .send(&target) { - notifications::send_message_given_channel( + /*notifications::send_message_given_channel( Notification::group_user_join(UserJoin { id: target.id.clone(), user: member.id.clone(), }), - &target, - ); + &target, FIXME + );*/ Some(Response::Result(super::Status::Ok)) } else { @@ -255,13 +251,13 @@ pub fn remove_member(user: User, target: Channel, member: User) -> Option<Respon }) .send(&target) { - notifications::send_message_given_channel( + /*notifications::send_message_given_channel( Notification::group_user_leave(UserLeave { id: target.id.clone(), user: member.id.clone(), }), - &target, - ); + &target, FIXME + );*/ Some(Response::Result(super::Status::Ok)) } else { @@ -373,13 +369,13 @@ pub fn delete(user: User, target: Channel) -> Option<Response> { }) .send(&target) { - notifications::send_message_given_channel( + /*notifications::send_message_given_channel( Notification::group_user_leave(UserLeave { id: target.id.clone(), user: user.id.clone(), }), - &target, - ); + &target, FIXME + );*/ Some(Response::Result(super::Status::Ok)) } else { @@ -411,14 +407,14 @@ pub fn delete(user: User, target: Channel) -> Option<Response> { ) .is_ok() { - notifications::send_message_threaded( + /*notifications::send_message_threaded( None, guild_id.clone(), Notification::guild_channel_delete(ChannelDelete { id: guild_id.clone(), channel: target.id.clone(), - }), - ); + }), FIXME + );*/ try_delete() } else { @@ -630,15 +626,15 @@ pub fn edit_message( None, ) { Ok(_) => { - notifications::send_message_given_channel( + /*notifications::send_message_given_channel( Notification::message_edit(Edit { id: message.id.clone(), channel: target.id.clone(), author: message.author.clone(), content: edit.content.clone(), }), - &target, - ); + &target, FIXME + );*/ Some(Response::Result(super::Status::Ok)) } @@ -661,12 +657,12 @@ pub fn delete_message(user: User, target: Channel, message: Message) -> Option<R match col.delete_one(doc! { "_id": &message.id }, None) { Ok(_) => { - notifications::send_message_given_channel( + /*notifications::send_message_given_channel( Notification::message_delete(Delete { id: message.id.clone(), }), - &target, - ); + &target, FIXME + );*/ Some(Response::Result(super::Status::Ok)) } diff --git a/src/routes/guild.rs b/src/routes/guild.rs index a7b3737520731c233490895bcb8f206112332648..c90c74aa5dd0891364fbb03b6402e395a1c1c541 100644 --- a/src/routes/guild.rs +++ b/src/routes/guild.rs @@ -5,10 +5,6 @@ use crate::database::{ self, channel::fetch_channel, channel::Channel, guild::serialise_guilds_with_channels, user::User, Permission, PermissionCalculator, }; -use crate::notifications::{ - self, - events::{guilds::*, Notification}, -}; use crate::util::gen_token; use mongodb::bson::{doc, Bson}; @@ -122,13 +118,13 @@ pub fn remove_guild(user: User, target: Guild) -> Option<Response> { ) .is_ok() { - notifications::send_message_threaded( + /*notifications::send_message_threaded( None, target.id.clone(), Notification::guild_delete(Delete { id: target.id.clone(), - }), - ); + }), FIXME + );*/ Some(Response::Result(super::Status::Ok)) } else { @@ -166,15 +162,15 @@ pub fn remove_guild(user: User, target: Guild) -> Option<Response> { ) .is_ok() { - notifications::send_message_threaded( + /*notifications::send_message_threaded( None, target.id.clone(), Notification::guild_user_leave(UserLeave { id: target.id.clone(), user: user.id.clone(), banned: false, - }), - ); + }), FIXME + );*/ Some(Response::Result(super::Status::Ok)) } else { @@ -248,7 +244,7 @@ pub fn create_channel(user: User, target: Guild, info: Json<CreateChannel>) -> O ) .is_ok() { - notifications::send_message_threaded( + /*notifications::send_message_threaded( None, target.id.clone(), Notification::guild_channel_create(ChannelCreate { @@ -256,8 +252,8 @@ pub fn create_channel(user: User, target: Guild, info: Json<CreateChannel>) -> O channel: id.clone(), name: name.clone(), description: description.clone(), - }), - ); + }), FIXME + );*/ Some(Response::Success(json!({ "id": &id }))) } else { @@ -426,14 +422,14 @@ pub fn use_invite(user: User, code: String) -> Response { ) .is_ok() { - notifications::send_message_threaded( + /*notifications::send_message_threaded( None, guild_id.clone(), Notification::guild_user_join(UserJoin { id: guild_id.clone(), user: user.id.clone(), - }), - ); + }), FIXME + );*/ Response::Success(json!({ "guild": &guild_id, @@ -642,15 +638,15 @@ pub fn kick_member(user: User, target: Guild, other: String) -> Option<Response> ) .is_ok() { - notifications::send_message_threaded( + /*notifications::send_message_threaded( None, target.id.clone(), Notification::guild_user_leave(UserLeave { id: target.id.clone(), user: other.clone(), banned: false, - }), - ); + }), FIXME + );*/ Some(Response::Result(super::Status::Ok)) } else { @@ -734,15 +730,15 @@ pub fn ban_member( ) .is_ok() { - notifications::send_message_threaded( + /*notifications::send_message_threaded( None, target.id.clone(), Notification::guild_user_leave(UserLeave { id: target.id.clone(), user: other.clone(), banned: true, - }), - ); + }), FIXME + );*/ Some(Response::Result(super::Status::Ok)) } else { diff --git a/src/routes/user.rs b/src/routes/user.rs index 19f2719dff503c108ed3511a9c7423740b39f516..bf9a0ede3df37651f4329e8447ac3da9f8e2cde2 100644 --- a/src/routes/user.rs +++ b/src/routes/user.rs @@ -2,10 +2,6 @@ use super::Response; use crate::database::{ self, get_relationship, get_relationship_internal, user::User, Relationship, }; -use crate::notifications::{ - self, - events::{users::*, Notification}, -}; use crate::routes::channel; use mongodb::bson::doc; @@ -251,7 +247,7 @@ pub fn add_friend(user: User, target: User) -> Response { ) .is_ok() { - notifications::send_message_threaded( + /*notifications::send_message_threaded( vec![target.id.clone()], None, Notification::user_friend_status(FriendStatus { @@ -268,8 +264,8 @@ pub fn add_friend(user: User, target: User) -> Response { id: user.id.clone(), user: target.id.clone(), status: Relationship::Friend as i32, - }), - ); + }), FIXME + );*/ Response::Success(json!({ "status": Relationship::Friend as i32 })) } else { @@ -324,7 +320,7 @@ pub fn add_friend(user: User, target: User) -> Response { ) .is_ok() { - notifications::send_message_threaded( + /*notifications::send_message_threaded( vec![user.id.clone()], None, Notification::user_friend_status(FriendStatus { @@ -341,8 +337,8 @@ pub fn add_friend(user: User, target: User) -> Response { id: target.id.clone(), user: user.id.clone(), status: Relationship::Incoming as i32, - }), - ); + }), FIXME + );*/ Response::Success(json!({ "status": Relationship::Outgoing as i32 })) } else { @@ -401,7 +397,7 @@ pub fn remove_friend(user: User, target: User) -> Response { ) .is_ok() { - notifications::send_message_threaded( + /*notifications::send_message_threaded( vec![user.id.clone()], None, Notification::user_friend_status(FriendStatus { @@ -418,8 +414,8 @@ pub fn remove_friend(user: User, target: User) -> Response { id: target.id.clone(), user: user.id.clone(), status: Relationship::NONE as i32, - }), - ); + }), FIXME + );*/ Response::Success(json!({ "status": Relationship::NONE as i32 })) } else { @@ -477,7 +473,7 @@ pub fn block_user(user: User, target: User) -> Response { ) .is_ok() { - notifications::send_message_threaded( + /*notifications::send_message_threaded( vec![user.id.clone()], None, Notification::user_friend_status(FriendStatus { @@ -494,8 +490,8 @@ pub fn block_user(user: User, target: User) -> Response { id: target.id.clone(), user: user.id.clone(), status: Relationship::BlockedOther as i32, - }), - ); + }), FIXME + );*/ Response::Success(json!({ "status": Relationship::Blocked as i32 })) } else { @@ -545,7 +541,7 @@ pub fn block_user(user: User, target: User) -> Response { ) .is_ok() { - notifications::send_message_threaded( + /*notifications::send_message_threaded( vec![user.id.clone()], None, Notification::user_friend_status(FriendStatus { @@ -562,8 +558,8 @@ pub fn block_user(user: User, target: User) -> Response { id: target.id.clone(), user: user.id.clone(), status: Relationship::BlockedOther as i32, - }), - ); + }), FIXME + );*/ Response::Success(json!({ "status": Relationship::Blocked as i32 })) } else { @@ -596,15 +592,15 @@ pub fn block_user(user: User, target: User) -> Response { ) .is_ok() { - notifications::send_message_threaded( + /*notifications::send_message_threaded( vec![user.id.clone()], None, Notification::user_friend_status(FriendStatus { id: user.id.clone(), user: target.id.clone(), status: Relationship::Blocked as i32, - }), - ); + }), FIXME + );*/ Response::Success(json!({ "status": Relationship::Blocked as i32 })) } else { @@ -640,15 +636,15 @@ pub fn unblock_user(user: User, target: User) -> Response { ) .is_ok() { - notifications::send_message_threaded( + /*notifications::send_message_threaded( vec![user.id.clone()], None, Notification::user_friend_status(FriendStatus { id: user.id.clone(), user: target.id.clone(), status: Relationship::BlockedOther as i32, - }), - ); + }), FIXME + );*/ Response::Success(json!({ "status": Relationship::BlockedOther as i32 })) } else { @@ -690,7 +686,7 @@ pub fn unblock_user(user: User, target: User) -> Response { ) .is_ok() { - notifications::send_message_threaded( + /*notifications::send_message_threaded( vec![user.id.clone()], None, Notification::user_friend_status(FriendStatus { @@ -707,8 +703,8 @@ pub fn unblock_user(user: User, target: User) -> Response { id: target.id.clone(), user: user.id.clone(), status: Relationship::NONE as i32, - }), - ); + }), FIXME + );*/ Response::Success(json!({ "status": Relationship::NONE as i32 })) } else {