diff --git a/src/api_data/mod.rs b/src/api_data/mod.rs index 883a8be..4f968c4 100644 --- a/src/api_data/mod.rs +++ b/src/api_data/mod.rs @@ -68,4 +68,5 @@ pub mod call_peer_interrupted_streaming; pub mod res_check_password_token; pub mod removed_user_from_conv_message; pub mod user_is_writing_message_in_conversation; -pub mod res_create_conversation_for_group; \ No newline at end of file +pub mod res_create_conversation_for_group; +pub mod notification_settings_api; \ No newline at end of file diff --git a/src/api_data/notification_settings_api.rs b/src/api_data/notification_settings_api.rs new file mode 100644 index 0000000..d7ea2a7 --- /dev/null +++ b/src/api_data/notification_settings_api.rs @@ -0,0 +1,20 @@ +//! # Notification settings API +//! +//! @author Pierre Hubert + +use serde::Serialize; + +use crate::data::user::User; + +#[derive(Serialize)] +pub struct NotificationSettingsAPI { + allow_conversations: bool, +} + +impl NotificationSettingsAPI { + pub fn new(user: &User) -> Self { + Self { + allow_conversations: user.allow_notif_conv + } + } +} \ No newline at end of file diff --git a/src/controllers/calls_controller.rs b/src/controllers/calls_controller.rs index 53a4828..71953b9 100644 --- a/src/controllers/calls_controller.rs +++ b/src/controllers/calls_controller.rs @@ -2,8 +2,6 @@ //! //! @author Pierre Hubert -use std::collections::HashMap; - use webrtc_sdp::attribute_type::SdpAttribute; use crate::api_data::call_member_info::CallMemberInfo; @@ -19,7 +17,6 @@ use crate::data::call_signal::{CallSignal, CloseCallStream, IceCandidate, NewUse use crate::data::config::conf; use crate::data::conversation::ConvID; use crate::data::error::{ExecError, Res}; -use crate::data::http_request_handler::HttpRequestHandler; use crate::data::user::UserID; use crate::data::user_ws_connection::{ActiveCall, UserWsConnection}; use crate::data::user_ws_message::UserWsMessage; @@ -90,13 +87,6 @@ impl UserWsRequestHandler { } } -/// Get legacy call configuration -pub fn get_legacy_config(r: &mut HttpRequestHandler) -> RequestResult { - let mut map = HashMap::new(); - map.insert("enabled", false); - r.set_response(map) -} - /// Get calls configuration pub fn get_config(r: &mut UserWsRequestHandler) -> RequestResult { // Check whether the user is the member of a call or not diff --git a/src/controllers/settings_controller.rs b/src/controllers/settings_controller.rs index ddf2286..b9bc646 100644 --- a/src/controllers/settings_controller.rs +++ b/src/controllers/settings_controller.rs @@ -6,6 +6,7 @@ use crate::api_data::account_image_settings_api::AccountImageSettingsAPI; use crate::api_data::data_conservation_settings_api::DataConservationSettingsAPI; use crate::api_data::general_settings_api::GeneralSettingsAPI; use crate::api_data::language_settings_api::LanguageSettingsAPI; +use crate::api_data::notification_settings_api::NotificationSettingsAPI; use crate::api_data::res_create_custom_emoji::ResCreateCustomEmoji; use crate::api_data::security_settings_api::SecuritySettingsAPI; use crate::constants::{conservation_policy, SUPPORTED_LANGUAGES}; @@ -256,4 +257,11 @@ pub fn set_data_conservation_policy(r: &mut HttpRequestHandler) -> RequestResult account_helper::set_data_conservation_policy(policy)?; r.success("Successfully updated data conservation policy!") +} + +/// Get notification settings +pub fn get_notifications(r: &mut HttpRequestHandler) -> RequestResult { + let user = user_helper::find_user_by_id(r.user_id_ref()?)?; + + r.set_response(NotificationSettingsAPI::new(&user)) } \ No newline at end of file diff --git a/src/data/user.rs b/src/data/user.rs index fd15af5..88ae849 100644 --- a/src/data/user.rs +++ b/src/data/user.rs @@ -129,6 +129,9 @@ pub struct User { pub delete_posts_after: Option, pub delete_conversation_messages_after: Option, pub delete_likes_after: Option, + + /// Notifications settings + pub allow_notif_conv: bool, } impl User { diff --git a/src/helpers/user_helper.rs b/src/helpers/user_helper.rs index af1875c..b759001 100644 --- a/src/helpers/user_helper.rs +++ b/src/helpers/user_helper.rs @@ -79,12 +79,17 @@ fn db_to_user(res: &database::RowResult) -> ResultBoxError { security_answer_1: res.get_optional_str("reponse1")?, security_question_2: res.get_optional_str("question2")?, security_answer_2: res.get_optional_str("reponse2")?, + + // Data cleanup delete_account_after: res.get_optional_positive_u64("delete_account_after")?, delete_notifications_after: res.get_optional_positive_u64("delete_notifications_after")?, delete_comments_after: res.get_optional_positive_u64("delete_comments_after")?, delete_posts_after: res.get_optional_positive_u64("delete_posts_after")?, delete_conversation_messages_after: res.get_optional_positive_u64("delete_conversation_messages_after")?, delete_likes_after: res.get_optional_positive_u64("delete_likes_after")?, + + // Conversation settings + allow_notif_conv: res.get_legacy_bool("allow_notif_conv")?, }) } diff --git a/src/routes.rs b/src/routes.rs index 10cdb06..2f4edb3 100644 --- a/src/routes.rs +++ b/src/routes.rs @@ -1,6 +1,6 @@ use std::error::Error; -use crate::controllers::{account_controller, calls_controller, comments_controller, conversations_controller, friends_controller, groups_controller, likes_controller, notifications_controller, posts_controller, search_controller, server_controller, settings_controller, surveys_controller, user_controller, user_ws_controller, virtual_directory_controller, web_app_controller}; +use crate::controllers::{account_controller, comments_controller, conversations_controller, friends_controller, groups_controller, likes_controller, notifications_controller, posts_controller, search_controller, server_controller, settings_controller, surveys_controller, user_controller, user_ws_controller, virtual_directory_controller, web_app_controller}; use crate::data::http_request_handler::HttpRequestHandler; use crate::routes::Method::{GET, POST}; @@ -174,6 +174,7 @@ pub fn get_routes() -> Vec { Route::post("/settings/delete_custom_emoji", Box::new(settings_controller::delete_custom_emoji)), Route::post("/settings/get_data_conservation_policy", Box::new(settings_controller::get_data_conservation_policy)), Route::limited_post("/settings/set_data_conservation_policy", Box::new(settings_controller::set_data_conservation_policy), LimitPolicy::FAILURE(10)), + Route::post("/settings/get_notifications", Box::new(settings_controller::get_notifications)), // Friends controller @@ -291,8 +292,5 @@ pub fn get_routes() -> Vec { // Web application controller Route::post("/webApp/getMemberships", Box::new(web_app_controller::get_memberships)), - - // Calls controller - Route::post("/calls/config", Box::new(calls_controller::get_legacy_config)), ] } \ No newline at end of file