1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2025-01-06 10:58:50 +00:00
comunicapiv3/src/controllers/user_ws_actions.rs

45 lines
1.4 KiB
Rust

//! # User WebSocket actions
//!
//! This module contains all the base action that can be executed by the WebSocket
use crate::data::base_request_handler::BaseRequestHandler;
use crate::data::error::Res;
use crate::data::post::PostAccessLevel;
use crate::data::user_ws_request_handler::UserWsRequestHandler;
use crate::data::conversation::ConvID;
/// Update incognito status of the connection
pub fn set_incognito(r: &mut UserWsRequestHandler) -> Res {
let new_state = r.post_bool("enable")?;
r.update_conn(|c| c.incognito = new_state)?;
r.success("Updated.")
}
/// Register a conversation
pub fn register_conv(r: &mut UserWsRequestHandler) -> Res {
let conv_id = r.post_conv("convID")?.conv_id;
r.update_conn(|c| { c.conversations.insert(conv_id); })?;
r.success("ok")
}
/// Un-register a conversation
pub fn unregister_conv(r: &mut UserWsRequestHandler) -> Res {
let conv_id = ConvID::new(r.post_u64("convID")?);
r.update_conn(|c| { c.conversations.remove(&conv_id); })?;
r.success("ok")
}
/// Register a post
pub fn register_post(r: &mut UserWsRequestHandler) -> Res {
let post = r.post_post_with_access("postID", PostAccessLevel::BASIC_ACCESS)?;
r.update_conn(|c| { c.posts.insert(post.id); })?;
r.success("ok")
}
/// Un-register a post
pub fn unregister_post(r: &mut UserWsRequestHandler) -> Res {
let post_id = r.post_u64("postID")?;
r.update_conn(|c| { c.posts.remove(&post_id); })?;
r.success("ok")
}